Skip to content
  • David Faure's avatar
    ErrorOverlay: don't show by mistake if called with Running twice. · f8d59a48
    David Faure authored
    Summary:
    If serverStateChanged(Running) is called twice, the first time
    this would hide the overlay and set mOverlayActive=false,
    so the second time this goes into the else branch, which
    shows the overlay...
    
    The reason it's called twice isn't because ServerManager
    emits stateChanged(Running) twice, obviously (it only emits on actual
    change). The reason is that the ErrorOverlay constructor calls
    serverStateChanged(state) and connects to &ServerManager::stateChanged.
    It can happen that for this initial state, ServerManager::state() finds
    out "Running" before ServerManager gets a chance to notice by itself
    and emit stateChanged().
    
    BUG: 379997
    
    Test Plan:
    Found with debug output, during session startup,
    over many weeks (it's clearly a race condition).
    
    Reviewers: dvratil, vkrause
    
    Reviewed By: dvratil
    
    Subscribers: #kde_pim
    
    Tags: #kde_pim
    
    Differential Revision: https://phabricator.kde.org/D9264
    f8d59a48