VirtualBox

Changeset 90685 in vbox for trunk


Ignore:
Timestamp:
Aug 13, 2021 4:32:18 PM (3 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:8161: Runtime UI / Normal mode: A bit of paranoia and sanity checks as well as proper cleanup stuff for status-bar indicator-pool; This is necessary now since COM can be deinitialized early.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp

    r90567 r90685  
    191191    statusBar()->setVisible(pActionStatusBarSwitch->isChecked());
    192192    /* Update status-bar indicators-pool: */
    193     m_pIndicatorsPool->setAutoUpdateIndicatorStates(statusBar()->isVisible() && uisession()->isRunning());
     193    if (m_pIndicatorsPool)
     194        m_pIndicatorsPool->setAutoUpdateIndicatorStates(statusBar()->isVisible() && uisession()->isRunning());
    194195
    195196    /* Normalize geometry without moving: */
     
    206207void UIMachineWindowNormal::sltHandleIndicatorContextMenuRequest(IndicatorType enmIndicatorType, const QPoint &indicatorPosition)
    207208{
     209    /* Sanity check, this slot should be called if m_pIndicatorsPool present anyway: */
     210    AssertPtrReturnVoid(m_pIndicatorsPool);
    208211    /* Determine action depending on indicator-type: */
    209212    UIAction *pAction = 0;
     
    374377        /* Update status-bar visibility: */
    375378        statusBar()->setVisible(actionPool()->action(UIActionIndexRT_M_View_M_StatusBar_T_Visibility)->isChecked());
    376         m_pIndicatorsPool->setAutoUpdateIndicatorStates(statusBar()->isVisible() && uisession()->isRunning());
     379        if (m_pIndicatorsPool)
     380            m_pIndicatorsPool->setAutoUpdateIndicatorStates(statusBar()->isVisible() && uisession()->isRunning());
    377381    }
    378382
     
    435439    if (gpNotificationCenter && (gpNotificationCenter->parent() == centralWidget()))
    436440        gpNotificationCenter->setParent(0);
     441}
     442
     443void UIMachineWindowNormal::cleanupStatusBar()
     444{
     445    delete m_pIndicatorsPool;
     446    m_pIndicatorsPool = 0;
    437447}
    438448
     
    634644
    635645    /* Set status-bar indicator-pool auto update timer: */
    636     if (iElement & UIVisualElement_IndicatorPoolStuff)
     646    if (   m_pIndicatorsPool
     647        && iElement & UIVisualElement_IndicatorPoolStuff)
    637648        m_pIndicatorsPool->setAutoUpdateIndicatorStates(statusBar()->isVisible() && uisession()->isRunning());
    638649    /* Update status-bar indicator-pool appearance only when status-bar is visible: */
    639     if (statusBar()->isVisible())
     650    if (   m_pIndicatorsPool
     651        && statusBar()->isVisible())
    640652    {
    641653        /* If VM is running: */
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.h

    r90567 r90685  
    109109    /** Cleanup notification-center routine. */
    110110    void cleanupNotificationCenter();
     111    /** Cleanup status-bar routine. */
     112    void cleanupStatusBar();
    111113    /** Cleanup session connections routine. */
    112114    void cleanupSessionConnections();
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette