Changeset 33963 in vbox for trunk/src/VBox/Frontends/VBoxHeadless
- Timestamp:
- Nov 11, 2010 10:23:42 AM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 67625
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VBoxHeadless/VBoxHeadless.cpp
r33852 r33963 25 25 26 26 #include <VBox/com/VirtualBox.h> 27 #include <VBox/com/listeners.h> 27 28 28 29 using namespace com; … … 91 92 * Handler for global events. 92 93 */ 93 class VirtualBoxEventListener : 94 VBOX_SCRIPTABLE_IMPL(IEventListener) 94 class VirtualBoxEventListener 95 95 { 96 96 public: 97 97 VirtualBoxEventListener() 98 98 { 99 #ifndef VBOX_WITH_XPCOM100 refcnt = 0;101 #endif102 99 mfNoLoggedInUsers = true; 103 100 } … … 107 104 } 108 105 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 { 131 108 switch (aType) 132 109 { … … 214 191 215 192 private: 216 #ifndef VBOX_WITH_XPCOM217 long refcnt;218 #endif219 220 193 bool mfNoLoggedInUsers; 221 194 }; 222 223 195 224 196 /** 225 197 * Handler for machine events. 226 198 */ 227 class ConsoleEventListener : 228 VBOX_SCRIPTABLE_IMPL(IEventListener) 199 class ConsoleEventListener 229 200 { 230 201 public: 231 202 ConsoleEventListener() 232 203 { 233 #ifndef VBOX_WITH_XPCOM234 refcnt = 0;235 #endif236 204 mLastVRDEPort = -1; 237 205 } … … 241 209 } 242 210 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 { 265 213 switch (aType) 266 214 { … … 358 306 private: 359 307 360 #ifndef VBOX_WITH_XPCOM361 long refcnt;362 #endif363 308 long mLastVRDEPort; 364 309 }; 365 310 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 311 typedef ListenerImpl<VirtualBoxEventListener> VirtualBoxEventListenerImpl; 312 typedef ListenerImpl<ConsoleEventListener> ConsoleEventListenerImpl; 313 314 VBOX_LISTENER_DECLARE(VirtualBoxEventListenerImpl) 315 VBOX_LISTENER_DECLARE(ConsoleEventListenerImpl) 372 316 373 317 #ifdef VBOX_WITH_SAVESTATE_ON_SIGNAL … … 993 937 ComPtr<IEventSource> es; 994 938 CHECK_ERROR(console, COMGETTER(EventSource)(es.asOutParam())); 995 consoleListener = new ConsoleEventListener(); 996 consoleListener->AddRef(); 939 consoleListener = new ConsoleEventListenerImpl(); 997 940 com::SafeArray <VBoxEventType_T> eventTypes; 998 941 eventTypes.push_back(VBoxEventType_OnMouseCapabilityChanged); … … 1149 1092 ComPtr<IEventSource> es; 1150 1093 CHECK_ERROR(virtualBox, COMGETTER(EventSource)(es.asOutParam())); 1151 vboxListener = new VirtualBoxEventListener(); 1152 vboxListener->AddRef(); 1094 vboxListener = new VirtualBoxEventListenerImpl(); 1153 1095 com::SafeArray <VBoxEventType_T> eventTypes; 1154 1096 eventTypes.push_back(VBoxEventType_OnGuestPropertyChanged);
Note:
See TracChangeset
for help on using the changeset viewer.