VirtualBox

Changeset 57510 in vbox


Ignore:
Timestamp:
Aug 24, 2015 1:09:47 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
102301
Message:

FE/Qt: 7958: Desktop-widget watchdog manual cleanup.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/globals
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDesktopWidgetWatchdog.cpp

    r57480 r57510  
    8686    /* Notify listeners about host-screen available-geometry was calulated: */
    8787    emit sigHostScreenAvailableGeometryCalculated(m_iHostScreenIndex, QRect(x(), y(), width(), height()));
    88 
    89     /* Ask window for suicide: */
    90     deleteLater();
    9188}
    9289
     
    10097}
    10198
     99UIDesktopWidgetWatchdog::~UIDesktopWidgetWatchdog()
     100{
     101    /* Cleanup: */
     102    cleanup();
     103}
     104
    102105const QRect     UIDesktopWidgetWatchdog::screenGeometry(int iHostScreenIndex /* = -1 */) const
    103106{
     
    129132    m_cHostScreenCount = cHostScreenCount != -1 ? cHostScreenCount : m_pDesktopWidget->screenCount();
    130133
    131     /* Resize vector to new host-screen count: */
     134    /* Resize vectors to new host-screen count: */
     135    qDeleteAll(m_availableGeometryWorkers);
     136    m_availableGeometryWorkers.clear();
     137    m_availableGeometryWorkers.resize(m_cHostScreenCount);
    132138    m_availableGeometryData.clear();
    133139    m_availableGeometryData.resize(m_cHostScreenCount);
     
    151157    AssertPtrReturnVoid(pWorker);
    152158    {
     159        /* Remember created worker: */
     160        if (m_availableGeometryWorkers.value(iHostScreenIndex))
     161            delete m_availableGeometryWorkers.value(iHostScreenIndex);
     162        m_availableGeometryWorkers[iHostScreenIndex] = pWorker;
    153163        /* Get the screen-geometry: */
    154164        const QRect hostScreenGeometry = screenGeometry(iHostScreenIndex);
     
    172182    /* Apply received data: */
    173183    m_availableGeometryData[iHostScreenIndex] = availableGeometry;
     184    /* Forget finished worker: */
     185    AssertPtrReturnVoid(m_availableGeometryWorkers.value(iHostScreenIndex));
     186    m_availableGeometryWorkers.value(iHostScreenIndex)->deleteLater();
     187    m_availableGeometryWorkers[iHostScreenIndex] = 0;
    174188}
    175189
     
    184198}
    185199
     200void UIDesktopWidgetWatchdog::cleanup()
     201{
     202    /* Cleanup connections: */
     203    disconnect(m_pDesktopWidget, SIGNAL(screenCountChanged(int)), this, SLOT(sltUpdateHostScreenConfiguration(int)));
     204    disconnect(m_pDesktopWidget, SIGNAL(resized(int)), this, SLOT(sltRecalculateHostScreenAvailableGeometry(int)));
     205
     206    /* Cleanup existing workers: */
     207    qDeleteAll(m_availableGeometryWorkers);
     208    m_availableGeometryWorkers.clear();
     209}
     210
    186211#include "UIDesktopWidgetWatchdog.moc"
    187212
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDesktopWidgetWatchdog.h

    r57480 r57510  
    3838    /** Constructs watchdog for the @a pParent being passed into the base-class. */
    3939    UIDesktopWidgetWatchdog(QObject *pParent);
     40    /** Destructs watchdog. */
     41    ~UIDesktopWidgetWatchdog();
    4042
    4143    /** Returns the geometry of the host-screen with @a iHostScreenIndex.
     
    6264    /** Prepare routine. */
    6365    void prepare();
     66    /** Cleanup routine. */
     67    void cleanup();
    6468
    6569    /** Holds the desktop-widget reference pointer. */
     
    7074    /** Holds current host-screen available-geometries. */
    7175    QVector<QRect> m_availableGeometryData;
     76    /** Holds current workers determining host-screen available-geometries. */
     77    QVector<QWidget*> m_availableGeometryWorkers;
    7278};
    7379
Note: See TracChangeset for help on using the changeset viewer.

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