X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=libchimara%2Fevent.c;h=88b09f02c1f31ce0fba2dfec6c35e2eb2f15432b;hb=a547d7c1b896ecae9afe07273dfb0fc744a84cb8;hp=ca5e21aac58a874dd7a28a1ebc968601e925deab;hpb=3886d95d54e24e64a118956db5452a9c2653e307;p=projects%2Fchimara%2Fchimara.git diff --git a/libchimara/event.c b/libchimara/event.c index ca5e21a..88b09f0 100644 --- a/libchimara/event.c +++ b/libchimara/event.c @@ -70,10 +70,13 @@ glk_select(event_t *event) ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key); + /* Emit the "waiting" signal to let listeners know we are ready for input */ + g_signal_emit_by_name(glk_data->self, "waiting"); + g_mutex_lock(glk_data->event_lock); /* Wait for an event */ - while( g_queue_is_empty(glk_data->event_queue) ) + if( g_queue_is_empty(glk_data->event_queue) ) g_cond_wait(glk_data->event_queue_not_empty, glk_data->event_lock); event_t *retrieved_event = g_queue_pop_tail(glk_data->event_queue); @@ -200,4 +203,4 @@ glk_select_poll(event_t *event) /* If an abort event was generated, the thread should have exited by now */ g_assert(event->type != evtype_Abort); -} \ No newline at end of file +}