Use statically-allocated thread private data
[projects/chimara/chimara.git] / libchimara / dispatch.c
index f15472750d12de0518c488330fcf0ca6448e9b54..8473b20899fe3772c88642bd5823230852c2c0a4 100644 (file)
@@ -3,8 +3,9 @@
 #include "window.h"
 #include "stream.h"
 #include "fileref.h"
+#include "schannel.h"
 
-extern GPrivate *glk_data_key;
+extern GPrivate glk_data_key;
 
 /**
  * gidispatch_set_object_registry:
@@ -69,7 +70,7 @@ extern GPrivate *glk_data_key;
 void 
 gidispatch_set_object_registry(gidispatch_rock_t (*regi)(void *obj, glui32 objclass), void (*unregi)(void *obj, glui32 objclass, gidispatch_rock_t objrock))
 {
-       ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
+       ChimaraGlkPrivate *glk_data = g_private_get(&glk_data_key);
        winid_t win;
     strid_t str;
     frefid_t fref;
@@ -108,6 +109,7 @@ gidispatch_rock_t
 gidispatch_get_objrock(void *obj, glui32 objclass)
 {
        g_return_val_if_fail(obj, (gidispatch_rock_t)NULL);
+
        
        switch(objclass) 
        {
@@ -117,6 +119,8 @@ gidispatch_get_objrock(void *obj, glui32 objclass)
                        return ((strid_t)obj)->disprock;
                case gidisp_Class_Fileref:
                        return ((frefid_t)obj)->disprock;
+               case gidisp_Class_Schannel:
+                       return ((schanid_t)obj)->disprock;
                default: 
                {
                        gidispatch_rock_t dummy;
@@ -184,7 +188,7 @@ gidispatch_get_objrock(void *obj, glui32 objclass)
 void 
 gidispatch_set_retained_registry(gidispatch_rock_t (*regi)(void *array, glui32 len, char *typecode), void (*unregi)(void *array, glui32 len, char *typecode, gidispatch_rock_t objrock))
 {
-       ChimaraGlkPrivate *glk_data = g_private_get(glk_data_key);
+       ChimaraGlkPrivate *glk_data = g_private_get(&glk_data_key);
        glk_data->register_arr = regi;
        glk_data->unregister_arr = unregi;
 }