Skip to content
  • Hugo Lefeuvre's avatar
    Refactoring of the accountContainer logic · 6f2ceb12
    Hugo Lefeuvre authored and Sébastien Blin's avatar Sébastien Blin committed
    
    
    Before:
    
     - RingMainWindow has an unique_ptr to an AccountContainer
       accountContainer_.
    
     - each view / secondary class has its own *copy* of the account
       container pointer (given by ringmainwindow using
       accountContainer_.get()).
    
     - each time the reference to the struct Info is updated,
       accountContainer_ has to be reset()-ed and and the account
       container re-created by the RingMainWindow. This makes *all*
       copies of the account container pointer invalid (hence all
       view / secondary classes trying to access the account container
       before getting updated perform use-after-free / NULL pointer
       dereference).
    
     - These copies have to be manually updated ! (well, currently they
       are not updated at all)
    
    After:
    
     - RingMainWindow has a pointer to a struct Info from LRC.
    
     - Each view / secondary class has a pointer pointing to
       the struct Info pointer of RingMainWindow
    
     - Each time the reference to the struct Info is updated, the
       RingMainWindow updates its pointer. Since secondary classes and
       views hold a pointer to this pointer, they are automatically
       updated and there is no dangling pointer anymore.
    
    This requires no lrc side changes.
    
    Change-Id: I1329721920a3d42ad623f9fd7202b43700713eed
    Reviewed-by: default avatarSebastien Blin <sebastien.blin@savoirfairelinux.com>
    Reviewed-by: default avatarGuillaume Roguez <guillaume.roguez@savoirfairelinux.com>
    6f2ceb12