VirtualBox

Ignore:
Timestamp:
Aug 24, 2016 1:39:51 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
110349
Message:

FE/Qt: bugref:8308: Aggregate VirtualBoxClient and VirtualBox events under one source, which means one GUI thread less, that's good; cleanup/standardizing similar code of other listeners.

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp

    r63291 r63626  
    164164
    165165    /* Get VirtualBox: */
    166     const CVirtualBox vbox = vboxGlobal().virtualBox();
    167     AssertWrapperOk(vbox);
    168     /* Get event-source: */
    169     CEventSource eventSourceVirtualBox = vbox.GetEventSource();
    170     AssertWrapperOk(eventSourceVirtualBox);
    171     /* Register listener for expected event-types: */
    172     QVector<KVBoxEventType> vboxEvents;
    173     vboxEvents
     166    const CVirtualBox comVBox = vboxGlobal().virtualBox();
     167    AssertWrapperOk(comVBox);
     168    /* Get VirtualBox event source: */
     169    CEventSource comEventSourceVBox = comVBox.GetEventSource();
     170    AssertWrapperOk(comEventSourceVBox);
     171
     172    /* Enumerate all the required event-types: */
     173    QVector<KVBoxEventType> eventTypes;
     174    eventTypes
    174175        << KVBoxEventType_OnExtraDataCanChange
    175176        << KVBoxEventType_OnExtraDataChanged;
    176     eventSourceVirtualBox.RegisterListener(m_comEventListener, vboxEvents,
     177
     178    /* Register event listener for VirtualBox event source: */
     179    comEventSourceVBox.RegisterListener(m_comEventListener, eventTypes,
    177180        gEDataManager->eventHandlingType() == EventHandlingType_Active ? TRUE : FALSE);
    178     AssertWrapperOk(eventSourceVirtualBox);
     181    AssertWrapperOk(comEventSourceVBox);
    179182
    180183    /* If event listener registered as passive one: */
     
    182185    {
    183186        /* Register event sources in their listeners as well: */
    184         m_pQtListener->getWrapped()->registerSource(eventSourceVirtualBox, m_comEventListener);
     187        m_pQtListener->getWrapped()->registerSource(comEventSourceVBox, m_comEventListener);
    185188    }
    186189}
     
    215218        return;
    216219
    217     /* Unregister Main event-listener: */
    218     const CVirtualBox vbox = vboxGlobal().virtualBox();
    219     AssertWrapperOk(vbox);
    220     /* Get event-source: */
    221     CEventSource eventSourceVirtualBox = vbox.GetEventSource();
    222     AssertWrapperOk(eventSourceVirtualBox);
    223     /* Unregister listener: */
    224     eventSourceVirtualBox.UnregisterListener(m_comEventListener);
     220    /* Get VirtualBox: */
     221    const CVirtualBox comVBox = vboxGlobal().virtualBox();
     222    AssertWrapperOk(comVBox);
     223    /* Get VirtualBox event source: */
     224    CEventSource comEventSourceVBox = comVBox.GetEventSource();
     225    AssertWrapperOk(comEventSourceVBox);
     226
     227    /* Unregister event listener for VirtualBox event source: */
     228    comEventSourceVBox.UnregisterListener(m_comEventListener);
    225229}
    226230
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.cpp

    r60362 r63626  
    161161    AssertPtrReturnVoid(m_pSession);
    162162
    163     /* Create Main event listener instance: */
     163    /* Create event listener instance: */
    164164    m_pQtListener.createObject();
    165165    m_pQtListener->init(new UIMainEventListener, this);
     
    167167
    168168    /* Get console: */
    169     const CConsole console = m_pSession->session().GetConsole();
    170     AssertReturnVoid(!console.isNull() && console.isOk());
    171     /* Get event-source: */
    172     CEventSource eventSource = console.GetEventSource();
    173     AssertReturnVoid(!eventSource.isNull() && eventSource.isOk());
    174     /* Register listener for expected event-types: */
    175     QVector<KVBoxEventType> events;
    176     events
     169    const CConsole comConsole = m_pSession->session().GetConsole();
     170    AssertReturnVoid(!comConsole.isNull() && comConsole.isOk());
     171    /* Get console event source: */
     172    CEventSource comEventSourceConsole = comConsole.GetEventSource();
     173    AssertReturnVoid(!comEventSourceConsole.isNull() && comEventSourceConsole.isOk());
     174
     175    /* Enumerate all the required event-types: */
     176    QVector<KVBoxEventType> eventTypes;
     177    eventTypes
    177178        << KVBoxEventType_OnMousePointerShapeChanged
    178179        << KVBoxEventType_OnMouseCapabilityChanged
     
    194195        << KVBoxEventType_OnCanShowWindow
    195196        << KVBoxEventType_OnShowWindow;
    196     eventSource.RegisterListener(m_comEventListener, events,
     197
     198    /* Register event listener for console event source: */
     199    comEventSourceConsole.RegisterListener(m_comEventListener, eventTypes,
    197200        gEDataManager->eventHandlingType() == EventHandlingType_Active ? TRUE : FALSE);
    198     AssertWrapperOk(eventSource);
     201    AssertWrapperOk(comEventSourceConsole);
    199202
    200203    /* If event listener registered as passive one: */
     
    202205    {
    203206        /* Register event sources in their listeners as well: */
    204         m_pQtListener->getWrapped()->registerSource(eventSource, m_comEventListener);
     207        m_pQtListener->getWrapped()->registerSource(comEventSourceConsole, m_comEventListener);
    205208    }
    206209}
     
    283286
    284287    /* Get console: */
    285     const CConsole console = m_pSession->session().GetConsole();
    286     if (console.isNull() || !console.isOk())
     288    const CConsole comConsole = m_pSession->session().GetConsole();
     289    if (comConsole.isNull() || !comConsole.isOk())
    287290        return;
    288     /* Get event-source: */
    289     CEventSource eventSource = console.GetEventSource();
    290     AssertWrapperOk(eventSource);
    291     /* Unregister listener: */
    292     eventSource.UnregisterListener(m_comEventListener);
     291    /* Get console event source: */
     292    CEventSource comEventSourceConsole = comConsole.GetEventSource();
     293    AssertWrapperOk(comEventSourceConsole);
     294
     295    /* Unregister event listener for console event source: */
     296    comEventSourceConsole.UnregisterListener(m_comEventListener);
    293297}
    294298
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVirtualBoxEventHandler.cpp

    r60260 r63626  
    9191private:
    9292
     93    /** Holds the COM event source instance. */
     94    CEventSource m_comEventSource;
     95
    9396    /** Holds the Qt event listener instance. */
    9497    ComObjPtr<UIMainEventListenerImpl> m_pQtListener;
     
    130133
    131134    /* Get VirtualBoxClient: */
    132     const CVirtualBoxClient vboxClient = vboxGlobal().virtualBoxClient();
    133     AssertWrapperOk(vboxClient);
    134     /* Get event-source: */
    135     CEventSource eventSourceVirtualBoxClient = vboxClient.GetEventSource();
    136     AssertWrapperOk(eventSourceVirtualBoxClient);
    137     /* Register listener for expected event-types: */
    138     QVector<KVBoxEventType> vboxClientEvents;
    139     vboxClientEvents
    140         << KVBoxEventType_OnVBoxSVCAvailabilityChanged;
    141     eventSourceVirtualBoxClient.RegisterListener(m_comEventListener, vboxClientEvents,
    142         gEDataManager->eventHandlingType() == EventHandlingType_Active ? TRUE : FALSE);
    143     AssertWrapperOk(eventSourceVirtualBoxClient);
     135    const CVirtualBoxClient comVBoxClient = vboxGlobal().virtualBoxClient();
     136    AssertWrapperOk(comVBoxClient);
     137    /* Get VirtualBoxClient event source: */
     138    CEventSource comEventSourceVBoxClient = comVBoxClient.GetEventSource();
     139    AssertWrapperOk(comEventSourceVBoxClient);
    144140
    145141    /* Get VirtualBox: */
    146     const CVirtualBox vbox = vboxGlobal().virtualBox();
    147     AssertWrapperOk(vbox);
    148     /* Get event-source: */
    149     CEventSource eventSourceVirtualBox = vbox.GetEventSource();
    150     AssertWrapperOk(eventSourceVirtualBox);
    151     /* Register listener for expected event-types: */
    152     QVector<KVBoxEventType> vboxEvents;
    153     vboxEvents
     142    const CVirtualBox comVBox = vboxGlobal().virtualBox();
     143    AssertWrapperOk(comVBox);
     144    /* Get VirtualBox event source: */
     145    CEventSource comEventSourceVBox = comVBox.GetEventSource();
     146    AssertWrapperOk(comEventSourceVBox);
     147
     148    /* Create event source aggregator: */
     149    m_comEventSource = comEventSourceVBoxClient.CreateAggregator(QVector<CEventSource>()
     150                                                                 << comEventSourceVBoxClient
     151                                                                 << comEventSourceVBox);
     152
     153    /* Enumerate all the required event-types: */
     154    QVector<KVBoxEventType> eventTypes;
     155    eventTypes
     156        /* For VirtualBoxClient: */
     157        << KVBoxEventType_OnVBoxSVCAvailabilityChanged
     158        /* For VirtualBox: */
    154159        << KVBoxEventType_OnMachineStateChanged
    155160        << KVBoxEventType_OnMachineDataChanged
     
    160165        << KVBoxEventType_OnSnapshotChanged
    161166        << KVBoxEventType_OnSnapshotRestored;
    162     eventSourceVirtualBox.RegisterListener(m_comEventListener, vboxEvents,
     167
     168    /* Register event listener for event source aggregator: */
     169    m_comEventSource.RegisterListener(m_comEventListener, eventTypes,
    163170        gEDataManager->eventHandlingType() == EventHandlingType_Active ? TRUE : FALSE);
    164     AssertWrapperOk(eventSourceVirtualBox);
     171    AssertWrapperOk(m_comEventSource);
    165172
    166173    /* If event listener registered as passive one: */
     
    168175    {
    169176        /* Register event sources in their listeners as well: */
    170         m_pQtListener->getWrapped()->registerSource(eventSourceVirtualBoxClient, m_comEventListener);
    171         m_pQtListener->getWrapped()->registerSource(eventSourceVirtualBox, m_comEventListener);
     177        m_pQtListener->getWrapped()->registerSource(m_comEventSource, m_comEventListener);
    172178    }
    173179}
     
    219225    }
    220226
    221     /* Get VirtualBox: */
    222     const CVirtualBox vbox = vboxGlobal().virtualBox();
    223     AssertWrapperOk(vbox);
    224     /* Get event-source: */
    225     CEventSource eventSourceVirtualBox = vbox.GetEventSource();
    226     AssertWrapperOk(eventSourceVirtualBox);
    227     /* Unregister listener: */
    228     eventSourceVirtualBox.UnregisterListener(m_comEventListener);
    229 
    230     /* Get VirtualBoxClient: */
    231     const CVirtualBoxClient vboxClient = vboxGlobal().virtualBoxClient();
    232     AssertWrapperOk(vboxClient);
    233     /* Get event-source: */
    234     CEventSource eventSourceVirtualBoxClient = vboxClient.GetEventSource();
    235     AssertWrapperOk(eventSourceVirtualBoxClient);
    236     /* Unregister listener: */
    237     eventSourceVirtualBoxClient.UnregisterListener(m_comEventListener);
     227    /* Unregister event listener for event source aggregator: */
     228    m_comEventSource.UnregisterListener(m_comEventListener);
     229    m_comEventSource.detach();
    238230}
    239231
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