/* Empty the event queue */
g_mutex_lock(&glk_data->event_lock);
g_queue_foreach(glk_data->event_queue, (GFunc)g_free, NULL);
-
- /* 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_queue_clear(glk_data->event_queue);
g_mutex_unlock(&glk_data->event_lock);
/* Reset the abort signaling mechanism */
priv->glk_styles = g_new0(StyleSet,1);
priv->final_message = g_strdup("[ The game has finished ]");
priv->event_queue = g_queue_new();
- priv->char_input_queue = g_async_queue_new();
- priv->line_input_queue = g_async_queue_new();
- /* FIXME Should be g_async_queue_new_full(g_free); but only in GTK >= 2.16 */
+ priv->char_input_queue = g_async_queue_new_full(g_free);
+ priv->line_input_queue = g_async_queue_new_full(g_free);
g_mutex_init(&priv->event_lock);
g_mutex_init(&priv->abort_lock);
while(i < startup->args.argc)
g_free(startup->args.argv[i++]);
g_free(startup->args.argv);
- g_free(startup);
+ g_slice_free(struct StartupData, startup);
}
/* glk_enter() is the actual function called in the new thread in which
/* Run main function */
glk_main_t glk_main = startup->glk_main;
- /* COMPAT: avoid usage of slices */
g_signal_emit_by_name(startup->glk_data->self, "started");
glk_main();
free_startup_data(startup);
ChimaraGlkPrivate *priv = CHIMARA_GLK_PRIVATE(glk);
- /* COMPAT: avoid usage of slices */
- struct StartupData *startup = g_new0(struct StartupData,1);
-
+ struct StartupData *startup = g_slice_new0(struct StartupData);
+
g_assert( g_module_supported() );
/* If there is already a module loaded, free it first -- you see, we want to
* keep modules loaded as long as possible to avoid crashes in stack unwinding */