/* 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;
}
Esempio n. 4
0
 nsGnomeVFSSetContentTypeEvent()
 {
   PL_InitEvent(EventDestructor);
 }
Esempio n. 5
0
nsNSSEventRunnable::nsNSSEventRunnable(nsIRunnable* runnable)
    :  mRunnable(runnable)
{
    PL_InitEvent(this, nsnull, PLHandleEventProc(handleNSSEventRunnable),
                 PLDestroyEventProc(&destroyNSSEventRunnable));
}