Use init and clear for GMutex and GCond
[projects/chimara/chimara.git] / libchimara / chimara-glk-private.h
index 44a2a49988ede5de56f680b913d80312fbc5ce62..5a73939a8384748078f6c9375e504ac38c7c7c95 100644 (file)
@@ -30,7 +30,6 @@ struct _ChimaraGlkPrivate {
        /* Hashtable containing the current styles set by CSS and GLK */
        struct StyleSet *styles;
        struct StyleSet *glk_styles;
-       PangoAttrList *pager_attr_list;
        /* Final message displayed when game exits */
        gchar *final_message;
        /* Image cache */
@@ -39,33 +38,35 @@ struct _ChimaraGlkPrivate {
        /* *** Threading data *** */
        /* Whether program is running */
        gboolean running;
+       /* Whether widget has been finalized */
+       gboolean after_finalize;
     /* Glk program loaded in widget */
     GModule *program;
     /* Thread in which Glk program is run */
     GThread *thread;
     /* Event queue and threading stuff */
     GQueue *event_queue;
-    GMutex *event_lock;
-    GCond *event_queue_not_empty;
-    GCond *event_queue_not_full;
+       GMutex event_lock;
+       GCond event_queue_not_empty;
+       GCond event_queue_not_full;
     /* Abort mechanism */
-    GMutex *abort_lock;
+       GMutex abort_lock;
     gboolean abort_signalled;
        /* Key press after shutdown mechanism */
-       GMutex *shutdown_lock;
-       GCond *shutdown_key_pressed;
+       GMutex shutdown_lock;
+       GCond shutdown_key_pressed;
        /* Window arrangement locks */
-       GMutex *arrange_lock;
-       GCond *rearranged;
+       GMutex arrange_lock;
+       GCond rearranged;
        gboolean needs_rearrange;
        gboolean ignore_next_arrange_event;
        /* Input queues */
        GAsyncQueue *char_input_queue;
        GAsyncQueue *line_input_queue;
        /* Resource loading locks */
-       GMutex *resource_lock;
-       GCond *resource_loaded;
-       GCond *resource_info_available;
+       GMutex resource_lock;
+       GCond resource_loaded;
+       GCond resource_info_available;
        guint32 resource_available;
 
        /* *** Glk library data *** */
@@ -83,12 +84,18 @@ struct _ChimaraGlkPrivate {
     strid_t current_stream;
     /* List of streams currently in existence */
     GList *stream_list;
+       /* List of sound channels currently in existence */
+       GList *schannel_list;
        /* Current timer */
        guint timer_id;
        /* Current resource blorb map */
        giblorb_map_t *resource_map;
        /* File stream pointing to the blorb used as current resource map */
        strid_t resource_file;
+       /* Optional callback for loading resource data */
+       ChimaraResourceLoadFunc resource_load_callback;
+       gpointer resource_load_callback_data;
+       GDestroyNotify resource_load_callback_destroy_data;
        /* Callbacks for registering and unregistering dispatch objects */
        gidispatch_rock_t (*register_obj)(void *, glui32);
        void (*unregister_obj)(void *, glui32, gidispatch_rock_t);