void XDesktopContainer::eventLoop() { XEvent ev; #ifdef HAVE_STARTUP_NOTIFICATION sn_context = NULL; sn_display = NULL; sn_bool_t retval; sn_display = sn_display_new (display, error_trap_push, error_trap_pop); #endif /* HAVE_STARTUP_NOTIFICATION */ for(;;) { if( !XPending( display ) && timer){ if(!bg->IsOneShot()){ timer->Update(); } } else { XNextEvent(display, &ev); #ifdef HAVE_STARTUP_NOTIFICATION if (sn_display != NULL){ sn_display_process_event (sn_display, &ev); } #endif /* HAVE_STARTUP_NOTIFICATION */ event = ev; parseEvent(); } } #ifdef HAVE_STARTUP_NOTIFICATION sn_launcher_context_unref (sn_context); if (sn_display) { sn_display_unref (sn_display); } #endif /* HAVE_STARTUP_NOTIFICATION */ }
static void sn_handler(const XEvent *e, gpointer data) { XEvent ec; ec = *e; sn_display_process_event(sn_display, &ec); }