g_get_current_time(&timeout);
g_time_val_add(&timeout, EVENT_TIMEOUT_MICROSECONDS);
g_get_current_time(&timeout);
g_time_val_add(&timeout, EVENT_TIMEOUT_MICROSECONDS);
/* Wait for room in the event queue */
while( g_queue_get_length(priv->event_queue) >= EVENT_QUEUE_MAX_LENGTH )
/* Wait for room in the event queue */
while( g_queue_get_length(priv->event_queue) >= EVENT_QUEUE_MAX_LENGTH )
g_queue_push_head(priv->event_queue, event);
/* Signal that there is an event */
g_queue_push_head(priv->event_queue, event);
/* Signal that there is an event */
retrieved_event = g_queue_pop_tail(glk_data->event_queue);
/* Signal that the event queue is no longer full */
retrieved_event = g_queue_pop_tail(glk_data->event_queue);
/* Signal that the event queue is no longer full */
if(retrieved_event->type == evtype_ForcedCharInput)
{
/* Check for forced character input in the queue */
if(retrieved_event->type == evtype_ForcedCharInput)
{
/* Check for forced character input in the queue */
memcpy(event, link->data, sizeof(event_t));
g_free(link->data);
g_queue_delete_link(glk_data->event_queue, link);
memcpy(event, link->data, sizeof(event_t));
g_free(link->data);
g_queue_delete_link(glk_data->event_queue, link);