if (event_lm == NULL) event_lm = PR_LOG_DEFINE("event");  self = PR_NEWZAP(PLEventQueue); if (self == NULL) return NULL;  mon = PR_NewNamedMonitor(name); if (mon == NULL) goto error;  self->name = name; self->monitor = mon; self->handlerThread = handlerThread; self->processingEvents = PR_FALSE; PR_INIT_CLIST(&self->queue); err = _pl_SetupNativeNotifier(self); if (err) goto error;  return self;  error: if (mon != NULL) PR_DestroyMonitor(mon); PR_DELETE(self); return NULL;
PR_IMPLEMENT(PRInt32)PL_GetEventQueueSelectFD(PLEventQueue* self){    if (self == NULL)    return -1;#if defined(XP_UNIX)    return self->eventPipe[0];#else    return -1;    /* other platforms don't handle this (yet) */#endif}