/* Sends the given event to the UI thread. Assumes aEventID never goes out * of scope (static strings are ideal). */ nsresult nsNotifyAddrListener::SendEventToUI(const char *aEventID) { nsresult rv; if (!aEventID) return NS_ERROR_NULL_POINTER; nsCOMPtr<nsIEventQueue> eq; rv = NS_GetMainEventQ(getter_AddRefs(eq)); if (NS_FAILED(rv)) return rv; ChangeEvent *event = new ChangeEvent(aEventID); if (!event) return NS_ERROR_OUT_OF_MEMORY; // AddRef this because it is being placed in the PLEvent; it'll be Released // when DestroyInterfaceEvent is called NS_ADDREF_THIS(); PL_InitEvent(event, this, HandleInterfaceEvent, DestroyInterfaceEvent); if (NS_FAILED(rv = eq->PostEvent(event))) { NS_ERROR("failed to post event to UI EventQueue"); PL_DestroyEvent(event); } return rv; }
nsresult nsStreamListenerEvent::Fire(nsIEventQueue* aEventQueue) { NS_PRECONDITION(nsnull != aEventQueue, "nsIEventQueue for thread is null"); PL_InitEvent(&mEvent, nsnull, (PLHandleEventProc) nsStreamListenerEvent::HandlePLEvent, (PLDestroyEventProc) nsStreamListenerEvent::DestroyPLEvent); return aEventQueue->PostEvent(&mEvent); }
//----------------------------------------------------------- PRBool CPrintingPromptService::FirePauseEvent() { static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); nsCOMPtr<nsIEventQueueService> event_service = do_GetService(kEventQueueServiceCID); if (!event_service) { NS_WARNING("Failed to get event queue service"); return PR_FALSE; } nsCOMPtr<nsIEventQueue> event_queue; event_service->GetThreadEventQueue(NS_CURRENT_THREAD, getter_AddRefs(event_queue)); if (!event_queue) { NS_WARNING("Failed to get event queue from service"); return PR_FALSE; } PLEvent *event = new PLEvent; if (!event) { NS_WARNING("Out of memory?"); return PR_FALSE; } PL_InitEvent(event, this, (PLHandleEventProc)::HandlePLEvent, (PLDestroyEventProc)::DestroyPLEvent); // The event owns the content pointer now. NS_ADDREF_THIS(); event_queue->PostEvent(event); return PR_TRUE; }
nsGnomeVFSSetContentTypeEvent() { PL_InitEvent(EventDestructor); }
nsNSSEventRunnable::nsNSSEventRunnable(nsIRunnable* runnable) : mRunnable(runnable) { PL_InitEvent(this, nsnull, PLHandleEventProc(handleNSSEventRunnable), PLDestroyEventProc(&destroyNSSEventRunnable)); }