Fixed minor bug - wait for event queue condition IF the queue is empty, not WHILE...
[rodin/chimara.git] / libchimara / event.c
index ca5e21aac58a874dd7a28a1ebc968601e925deab..88b09f02c1f31ce0fba2dfec6c35e2eb2f15432b 100644 (file)
@@ -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
+}