#include #include "seat.h" #include "call-idle-handler.h" static void *call_idle_handler_inner (void *data) { struct Call_idle_handler_parameters *params = (struct Call_idle_handler_parameters *)data; SCM event; switch (params->event) { case IDLE: event = scm_from_utf8_symbol("idle"); break; case RESUME: event = scm_from_utf8_symbol("resume"); break; } return scm_call_1(params->idle->handler, event); } void *call_idle_handler (void *data) { /* Continuation barrier causes stack unwind on exceptions (i.e. errors * in the user defined ide handler) to stop here. Otherwise the entire * stack created by scm_with_guile() would be unwound. This makes * responding to exceptions nicer. */ SCM call_result = scm_c_with_continuation_barrier( call_idle_handler_inner, data ); if ( call_result == NULL ) return (void *)"ERROR: An exception occured while calling the user-command handler.\n"; return NULL; }