diff --git a/mozilla/xpcom/public/nsIEventQueue.h b/mozilla/xpcom/public/nsIEventQueue.h index 9d153f6c94a..cd7d1394260 100644 --- a/mozilla/xpcom/public/nsIEventQueue.h +++ b/mozilla/xpcom/public/nsIEventQueue.h @@ -38,8 +38,10 @@ public: static const nsIID& GetIID() { static nsIID iid = NS_IEVENTQUEUE_IID; return iid;} NS_IMETHOD_(PRStatus) PostEvent(PLEvent* aEvent) = 0; - NS_IMETHOD PostSynchronousEvent(PLEvent* aEvent) = 0; - NS_IMETHOD ProcessPendingEvents() = 0; + NS_IMETHOD PostSynchronousEvent(PLEvent* aEvent, void** aResult) = 0; + + NS_IMETHOD ProcessPendingEvents() = 0; + NS_IMETHOD EventLoop() = 0; NS_IMETHOD EventAvailable(PRBool& aResult) = 0; NS_IMETHOD GetEvent(PLEvent** aResult) = 0; diff --git a/mozilla/xpcom/src/nsEventQueue.cpp b/mozilla/xpcom/src/nsEventQueue.cpp index 99c3aeb7324..b4981790eeb 100644 --- a/mozilla/xpcom/src/nsEventQueue.cpp +++ b/mozilla/xpcom/src/nsEventQueue.cpp @@ -60,10 +60,14 @@ nsEventQueueImpl::PostEvent(PLEvent* aEvent) } NS_IMETHODIMP -nsEventQueueImpl::PostSynchronousEvent(PLEvent* aEvent) +nsEventQueueImpl::PostSynchronousEvent(PLEvent* aEvent, void** aResult) { - PL_PostSynchronousEvent(mEventQueue, aEvent); - return NS_OK; + void* result = PL_PostSynchronousEvent(mEventQueue, aEvent); + if (aResult) + { + *aResult = result; + } + return NS_OK; } NS_IMETHODIMP @@ -73,6 +77,13 @@ nsEventQueueImpl::ProcessPendingEvents() return NS_OK; } +NS_IMETHODIMP +nsEventQueueImpl::EventLoop() +{ + PL_EventLoop(mEventQueue); + return NS_OK; +} + NS_IMETHODIMP nsEventQueueImpl::EventAvailable(PRBool& aResult) { diff --git a/mozilla/xpcom/src/nsEventQueue.h b/mozilla/xpcom/src/nsEventQueue.h index 8c323013302..23f5f1fb457 100644 --- a/mozilla/xpcom/src/nsEventQueue.h +++ b/mozilla/xpcom/src/nsEventQueue.h @@ -33,9 +33,12 @@ public: // nsIEventQueue interface... NS_IMETHOD_(PRStatus) PostEvent(PLEvent* aEvent); - NS_IMETHOD PostSynchronousEvent(PLEvent* aEvent); + NS_IMETHOD PostSynchronousEvent(PLEvent* aEvent, void** aResult); + NS_IMETHOD ProcessPendingEvents(); - NS_IMETHOD EventAvailable(PRBool& aResult); + NS_IMETHOD EventLoop(); + + NS_IMETHOD EventAvailable(PRBool& aResult); NS_IMETHOD GetEvent(PLEvent** aResult); NS_IMETHOD_(PRInt32) GetEventQueueSelectFD(); diff --git a/mozilla/xpcom/threads/nsEventQueue.cpp b/mozilla/xpcom/threads/nsEventQueue.cpp index 99c3aeb7324..b4981790eeb 100644 --- a/mozilla/xpcom/threads/nsEventQueue.cpp +++ b/mozilla/xpcom/threads/nsEventQueue.cpp @@ -60,10 +60,14 @@ nsEventQueueImpl::PostEvent(PLEvent* aEvent) } NS_IMETHODIMP -nsEventQueueImpl::PostSynchronousEvent(PLEvent* aEvent) +nsEventQueueImpl::PostSynchronousEvent(PLEvent* aEvent, void** aResult) { - PL_PostSynchronousEvent(mEventQueue, aEvent); - return NS_OK; + void* result = PL_PostSynchronousEvent(mEventQueue, aEvent); + if (aResult) + { + *aResult = result; + } + return NS_OK; } NS_IMETHODIMP @@ -73,6 +77,13 @@ nsEventQueueImpl::ProcessPendingEvents() return NS_OK; } +NS_IMETHODIMP +nsEventQueueImpl::EventLoop() +{ + PL_EventLoop(mEventQueue); + return NS_OK; +} + NS_IMETHODIMP nsEventQueueImpl::EventAvailable(PRBool& aResult) { diff --git a/mozilla/xpcom/threads/nsEventQueue.h b/mozilla/xpcom/threads/nsEventQueue.h index 8c323013302..23f5f1fb457 100644 --- a/mozilla/xpcom/threads/nsEventQueue.h +++ b/mozilla/xpcom/threads/nsEventQueue.h @@ -33,9 +33,12 @@ public: // nsIEventQueue interface... NS_IMETHOD_(PRStatus) PostEvent(PLEvent* aEvent); - NS_IMETHOD PostSynchronousEvent(PLEvent* aEvent); + NS_IMETHOD PostSynchronousEvent(PLEvent* aEvent, void** aResult); + NS_IMETHOD ProcessPendingEvents(); - NS_IMETHOD EventAvailable(PRBool& aResult); + NS_IMETHOD EventLoop(); + + NS_IMETHOD EventAvailable(PRBool& aResult); NS_IMETHOD GetEvent(PLEvent** aResult); NS_IMETHOD_(PRInt32) GetEventQueueSelectFD(); diff --git a/mozilla/xpcom/threads/nsIEventQueue.h b/mozilla/xpcom/threads/nsIEventQueue.h index 9d153f6c94a..cd7d1394260 100644 --- a/mozilla/xpcom/threads/nsIEventQueue.h +++ b/mozilla/xpcom/threads/nsIEventQueue.h @@ -38,8 +38,10 @@ public: static const nsIID& GetIID() { static nsIID iid = NS_IEVENTQUEUE_IID; return iid;} NS_IMETHOD_(PRStatus) PostEvent(PLEvent* aEvent) = 0; - NS_IMETHOD PostSynchronousEvent(PLEvent* aEvent) = 0; - NS_IMETHOD ProcessPendingEvents() = 0; + NS_IMETHOD PostSynchronousEvent(PLEvent* aEvent, void** aResult) = 0; + + NS_IMETHOD ProcessPendingEvents() = 0; + NS_IMETHOD EventLoop() = 0; NS_IMETHOD EventAvailable(PRBool& aResult) = 0; NS_IMETHOD GetEvent(PLEvent** aResult) = 0;