VirtualBox

Ignore:
Timestamp:
Nov 11, 2010 10:23:42 AM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
67625
Message:

Main: moved listeners to location usable by fronends, rework

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp

    r33852 r33963  
    2525
    2626#include <VBox/com/VirtualBox.h>
     27#include <VBox/com/listeners.h>
    2728
    2829using namespace com;
     
    9192 *  Handler for global events.
    9293 */
    93 class VirtualBoxEventListener :
    94   VBOX_SCRIPTABLE_IMPL(IEventListener)
     94class VirtualBoxEventListener
    9595{
    9696public:
    9797    VirtualBoxEventListener()
    9898    {
    99 #ifndef VBOX_WITH_XPCOM
    100         refcnt = 0;
    101 #endif
    10299        mfNoLoggedInUsers = true;
    103100    }
     
    107104    }
    108105
    109 #ifndef VBOX_WITH_XPCOM
    110     STDMETHOD_(ULONG, AddRef)()
    111     {
    112         return ::InterlockedIncrement(&refcnt);
    113     }
    114     STDMETHOD_(ULONG, Release)()
    115     {
    116         long cnt = ::InterlockedDecrement(&refcnt);
    117         if (cnt == 0)
    118             delete this;
    119         return cnt;
    120     }
    121 #endif
    122     VBOX_SCRIPTABLE_DISPATCH_IMPL(IEventListener)
    123 
    124     NS_DECL_ISUPPORTS
    125 
    126     STDMETHOD(HandleEvent)(IEvent * aEvent)
    127     {
    128         VBoxEventType_T aType = VBoxEventType_Invalid;
    129 
    130         aEvent->COMGETTER(Type)(&aType);
     106    STDMETHOD(HandleEvent)(VBoxEventType_T aType, IEvent * aEvent)
     107    {
    131108        switch (aType)
    132109        {
     
    214191
    215192private:
    216 #ifndef VBOX_WITH_XPCOM
    217     long refcnt;
    218 #endif
    219 
    220193    bool mfNoLoggedInUsers;
    221194};
    222 
    223195
    224196/**
    225197 *  Handler for machine events.
    226198 */
    227 class ConsoleEventListener :
    228   VBOX_SCRIPTABLE_IMPL(IEventListener)
     199class ConsoleEventListener
    229200{
    230201public:
    231202    ConsoleEventListener()
    232203    {
    233 #ifndef VBOX_WITH_XPCOM
    234         refcnt = 0;
    235 #endif
    236204        mLastVRDEPort = -1;
    237205    }
     
    241209    }
    242210
    243 #ifndef VBOX_WITH_XPCOM
    244     STDMETHOD_(ULONG, AddRef)()
    245     {
    246         return ::InterlockedIncrement(&refcnt);
    247     }
    248     STDMETHOD_(ULONG, Release)()
    249     {
    250         long cnt = ::InterlockedDecrement(&refcnt);
    251         if (cnt == 0)
    252             delete this;
    253         return cnt;
    254     }
    255 #endif
    256     VBOX_SCRIPTABLE_DISPATCH_IMPL(IEventListener)
    257 
    258     NS_DECL_ISUPPORTS
    259 
    260     STDMETHOD(HandleEvent)(IEvent * aEvent)
    261     {
    262         VBoxEventType_T aType = VBoxEventType_Invalid;
    263 
    264         aEvent->COMGETTER(Type)(&aType);
     211    STDMETHOD(HandleEvent)(VBoxEventType_T aType, IEvent * aEvent)
     212    {
    265213        switch (aType)
    266214        {
     
    358306private:
    359307
    360 #ifndef VBOX_WITH_XPCOM
    361     long refcnt;
    362 #endif
    363308    long mLastVRDEPort;
    364309};
    365310
    366 #ifdef VBOX_WITH_XPCOM
    367 NS_DECL_CLASSINFO(VirtualBoxEventListener)
    368 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(VirtualBoxEventListener, IEventListener)
    369 NS_DECL_CLASSINFO(ConsoleEventListener)
    370 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(ConsoleEventListener, IEventListener)
    371 #endif
     311typedef ListenerImpl<VirtualBoxEventListener> VirtualBoxEventListenerImpl;
     312typedef ListenerImpl<ConsoleEventListener> ConsoleEventListenerImpl;
     313
     314VBOX_LISTENER_DECLARE(VirtualBoxEventListenerImpl)
     315VBOX_LISTENER_DECLARE(ConsoleEventListenerImpl)
    372316
    373317#ifdef VBOX_WITH_SAVESTATE_ON_SIGNAL
     
    993937            ComPtr<IEventSource> es;
    994938            CHECK_ERROR(console, COMGETTER(EventSource)(es.asOutParam()));
    995             consoleListener = new ConsoleEventListener();
    996             consoleListener->AddRef();
     939            consoleListener = new ConsoleEventListenerImpl();
    997940            com::SafeArray <VBoxEventType_T> eventTypes;
    998941            eventTypes.push_back(VBoxEventType_OnMouseCapabilityChanged);
     
    11491092            ComPtr<IEventSource> es;
    11501093            CHECK_ERROR(virtualBox, COMGETTER(EventSource)(es.asOutParam()));
    1151             vboxListener = new VirtualBoxEventListener();
    1152             vboxListener->AddRef();
     1094            vboxListener = new VirtualBoxEventListenerImpl();
    11531095            com::SafeArray <VBoxEventType_T> eventTypes;
    11541096            eventTypes.push_back(VBoxEventType_OnGuestPropertyChanged);
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