Started using thread-private data. Multisession still doesn't work, but regular opera...
[rodin/chimara.git] / libchimara / glk.c
index d96c951bc19a8270b731b8b9c306117814c30f88..27e30072769198e0ec2a0ec2959ca0a0a5fee8d6 100644 (file)
@@ -6,7 +6,7 @@
 #include "chimara-glk-private.h"
 #include "gi_blorb.h"
 
-G_GNUC_INTERNAL ChimaraGlkPrivate *glk_data = NULL;
+G_GNUC_INTERNAL GPrivate *glk_data_key = NULL;
 
 /**
  * glk_exit:
@@ -42,7 +42,10 @@ G_GNUC_INTERNAL ChimaraGlkPrivate *glk_data = NULL;
 void
 glk_exit(void)
 {
-    g_signal_emit_by_name(glk_data->self, "stopped");
+       ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
+       
+       if(!glk_data->in_startup)
+               g_signal_emit_by_name(glk_data->self, "stopped");
 
        /* Stop any timers */
        glk_request_timer_events(0);
@@ -53,7 +56,6 @@ glk_exit(void)
                glk_stream_close(glk_data->resource_file, NULL);
        }
 
-    glk_data = NULL;
        g_thread_exit(NULL);
 }