shutdown_glk_pre();
shutdown_glk_post();
/* If program is terminated by g_thread_exit() instead of returning from the
- glk_main() function, then the line in glk_enter() where the "stopped"
+ glk_main() function, then the line in glk_exit() where the "stopped"
signal is emitted will not be reached. So we have to emit it here. */
if(!glk_data->in_startup)
g_signal_emit_by_name(glk_data->self, "stopped");
/* Empty the event queue */
g_mutex_lock(glk_data->event_lock);
g_queue_foreach(glk_data->event_queue, (GFunc)g_free, NULL);
- g_queue_clear(glk_data->event_queue);
+
+ /* COMPAT: g_queue_clear could be used here, but only appeared in 2.14 */
+ // g_queue_clear(glk_data->event_queue);
+ g_list_free(glk_data->event_queue->head);
+ glk_data->event_queue->head = glk_data->event_queue->tail = NULL;
+ glk_data->event_queue->length = 0;
+
g_mutex_unlock(glk_data->event_lock);
/* Reset the abort signaling mechanism */
glk_data->unregister_obj = NULL;
glk_data->register_arr = NULL;
glk_data->unregister_arr = NULL;
-
- /* Leave the style_initialized flag as it is, since the CSS file is a widget property */
}