static void ws_handle_stream_data(XtPointer xp, int *source, XtInputId *id) { Stream s = (Stream)xp; pceMTLock(LOCK_PCE); assert(isProperObject(s)); DEBUG(NAME_stream, Cprintf("handleInputStream(%s)\n", pp(s))); handleInputStream(s); pceMTUnlock(LOCK_PCE); }
static void event_window(Widget w, XtPointer xsw, XtPointer xevent) { PceWindow sw = (PceWindow) xsw; XEvent *event = (XEvent *)xevent; pceMTLock(LOCK_PCE); DEBUG(NAME_event, Cprintf("event_window(): X-event %d on %s\n", event->xany.type, pp(sw))); if ( isFreeingObj(sw) || isFreedObj(sw) || sw->sensitive == OFF ) { pceMTUnlock(LOCK_PCE); return; } ServiceMode(is_service_window(sw), { AnswerMark mark; markAnswerStack(mark); x_event_window(sw, event); rewindAnswerStack(mark, NIL); });
VOID CALLBACK timer_proc(HWND hwnd, UINT msg, UINT id, DWORD now) { DEBUG(NAME_timer, Cprintf("Firing timer %d\n", id)); if ( TimerTable ) { Timer tm; pceMTLock(LOCK_PCE); if ( (tm = getMemberHashTable(TimerTable, toInt(id))) ) { if ( tm->service == ON ) { ServiceMode(PCE_EXEC_SERVICE, do_timer_proc(tm, id)); } else do_timer_proc(tm, id); pceMTUnlock(LOCK_PCE); return; } pceMTUnlock(LOCK_PCE); } KillTimer(NULL, id); /* Unexpected timer. Get rid of it */ }