Changeset 45780 in vbox for trunk/src/VBox/Main/include/GuestCtrlImplPrivate.h
- Timestamp:
- Apr 26, 2013 3:19:33 PM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 85347
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/include/GuestCtrlImplPrivate.h
r45568 r45780 375 375 }; 376 376 377 class GuestWaitEvent 378 { 379 public: 380 381 GuestWaitEvent(uint32_t mCID, const std::list<VBoxEventType_T> &lstEvents); 382 virtual ~GuestWaitEvent(void); 383 384 public: 385 386 uint32_t ContextID(void) { return mCID; }; 387 const ComPtr<IEvent> Event(void) { return mEvent; }; 388 const std::list<VBoxEventType_T> Types(void) { return mEventTypes; }; 389 int Signal(IEvent *pEvent); 390 int Wait(RTMSINTERVAL uTimeoutMS); 391 392 protected: 393 394 uint32_t mCID; 395 std::list<VBoxEventType_T> mEventTypes; 396 /** The event semaphore for triggering 397 * the actual event. */ 398 RTSEMEVENT mEventSem; 399 /** Pointer to the actual event. */ 400 ComPtr<IEvent> mEvent; 401 }; 402 typedef std::list < GuestWaitEvent* > GuestWaitEvents; 403 typedef std::map < VBoxEventType_T, GuestWaitEvents > GuestWaitEventTypes; 404 377 405 class GuestBase 378 406 { … … 385 413 public: 386 414 415 /** For external event listeners. */ 416 int signalWaitEvents(VBoxEventType_T aType, IEvent *aEvent); 417 418 public: 419 387 420 int generateContextID(uint32_t uSessionID, uint32_t uObjectID, uint32_t *puContextID); 421 int registerEvent(uint32_t uSessionID, uint32_t uObjectID, const std::list<VBoxEventType_T> &lstEvents, GuestWaitEvent **ppEvent); 422 void unregisterEvent(GuestWaitEvent *pEvent); 423 void unregisterEventListener(void); 424 int waitForEvent(GuestWaitEvent *pEvent, uint32_t uTimeoutMS, VBoxEventType_T *pType, IEvent **ppEvent); 388 425 389 426 protected: … … 394 431 /** The next upcoming context ID for this object. */ 395 432 uint32_t mNextContextID; 433 /** Local listener for handling the waiting events. */ 434 ComPtr<IEventListener> mListener; 435 /** Critical section for wait events access. */ 436 RTCRITSECT mWaitEventCritSect; 437 /** Map of internal events to wait for. */ 438 GuestWaitEventTypes mWaitEvents; 396 439 }; 397 440 … … 420 463 421 464 int bindToSession(Console *pConsole, GuestSession *pSession, uint32_t uObjectID); 465 int registerEvent(const std::list<VBoxEventType_T> &lstEvents, GuestWaitEvent **ppEvent); 422 466 int sendCommand(uint32_t uFunction, uint32_t uParms, PVBOXHGCMSVCPARM paParms); 423 467
Note:
See TracChangeset
for help on using the changeset viewer.