X-Git-Url: https://git.stderr.nl/gitweb?p=rodin%2Fchimara.git;a=blobdiff_plain;f=libchimara%2Fchimara-glk.c;h=93f95c73cb400a3d57d68b3e137b561a104ad664;hp=0fabb3943eabe4d6823d04a07dddc15165070e8d;hb=5d29fc8d5b231c0390f8a4cbebec97c7a51b8f69;hpb=224e54373b084f5246e19abebb7e9a6337798918 diff --git a/libchimara/chimara-glk.c b/libchimara/chimara-glk.c index 0fabb39..93f95c7 100644 --- a/libchimara/chimara-glk.c +++ b/libchimara/chimara-glk.c @@ -235,8 +235,10 @@ void _chimara_glk_free_window_private_data(ChimaraGlkPrivate *priv) { /* Destroy the window tree */ - trash_windows_recursive(priv, priv->root_window->data); - g_node_destroy(priv->root_window); + if(priv->root_window) { + trash_windows_recursive(priv, priv->root_window->data); + g_node_destroy(priv->root_window); + } /* Free the window arrangement signaling */ g_mutex_lock(priv->arrange_lock); @@ -244,6 +246,12 @@ _chimara_glk_free_window_private_data(ChimaraGlkPrivate *priv) g_mutex_unlock(priv->arrange_lock); g_mutex_free(priv->arrange_lock); priv->arrange_lock = NULL; + + /* Remove the dispatch callbacks */ + priv->register_obj = NULL; + priv->unregister_obj = NULL; + priv->register_arr = NULL; + priv->unregister_arr = NULL; } static void