Bug fixes
[rodin/chimara.git] / libchimara / chimara-glk.c
index 0fabb3943eabe4d6823d04a07dddc15165070e8d..93f95c73cb400a3d57d68b3e137b561a104ad664 100644 (file)
@@ -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