Added notify signals to properties
[rodin/chimara.git] / libchimara / chimara-glk.c
index 4f1d39102dd9db62754eb4ecc30a6bfe5a8f3b6c..4af716b40e70883d5f458fc7874a3c812035304c 100644 (file)
@@ -107,10 +107,11 @@ chimara_glk_init(ChimaraGlk *self)
        priv->ignore_next_arrange_event = FALSE;
        priv->char_input_queue = g_async_queue_new();
        priv->line_input_queue = g_async_queue_new();
+       /* Should be g_async_queue_new_full(g_free); but only in GTK >= 2.16 */
        priv->resource_lock = g_mutex_new();
        priv->resource_loaded = g_cond_new();
        priv->resource_info_available = g_cond_new();
-       /* Should be g_async_queue_new_full(g_free); but only in GTK >= 2.16 */
+       priv->image_cache = NULL;
        priv->interrupt_handler = NULL;
     priv->root_window = NULL;
     priv->fileref_list = NULL;
@@ -223,6 +224,8 @@ chimara_glk_finalize(GObject *object)
        g_cond_free(priv->resource_info_available);
        g_mutex_unlock(priv->resource_lock);
        g_mutex_free(priv->resource_lock);
+       g_slist_foreach(priv->image_cache, (GFunc)clear_image_cache, NULL);
+       g_slist_free(priv->image_cache);
        /* Unref input queues (this should destroy them since any Glk thread has stopped by now */
        g_async_queue_unref(priv->char_input_queue);
        g_async_queue_unref(priv->line_input_queue);
@@ -837,6 +840,7 @@ chimara_glk_set_interactive(ChimaraGlk *glk, gboolean interactive)
     
     ChimaraGlkPrivate *priv = CHIMARA_GLK_PRIVATE(glk);
     priv->interactive = interactive;
+    g_object_notify(G_OBJECT(glk), "interactive");
 }
 
 /**
@@ -873,6 +877,7 @@ chimara_glk_set_protect(ChimaraGlk *glk, gboolean protect)
     
     ChimaraGlkPrivate *priv = CHIMARA_GLK_PRIVATE(glk);
     priv->protect = protect;
+    g_object_notify(G_OBJECT(glk), "protect");
 }
 
 /**
@@ -910,7 +915,7 @@ chimara_glk_set_default_font_description(ChimaraGlk *glk, PangoFontDescription *
        ChimaraGlkPrivate *priv = CHIMARA_GLK_PRIVATE(glk);
        pango_font_description_free(priv->default_font_desc);
        priv->default_font_desc = pango_font_description_copy(font);
-       
+       g_object_notify(G_OBJECT(glk), "default-font-description");
        /* TODO: Apply the font description to all the windows and recalculate the sizes */
 }
 
@@ -938,6 +943,7 @@ chimara_glk_set_default_font_string(ChimaraGlk *glk, const gchar *font)
        ChimaraGlkPrivate *priv = CHIMARA_GLK_PRIVATE(glk);
        pango_font_description_free(priv->default_font_desc);
        priv->default_font_desc = fontdesc;
+       g_object_notify(G_OBJECT(glk), "default-font-description");
        
        /* TODO: Apply the font description to all the windows and recalculate the sizes */
 }
@@ -977,6 +983,7 @@ chimara_glk_set_monospace_font_description(ChimaraGlk *glk, PangoFontDescription
        ChimaraGlkPrivate *priv = CHIMARA_GLK_PRIVATE(glk);
        pango_font_description_free(priv->monospace_font_desc);
        priv->monospace_font_desc = pango_font_description_copy(font);
+       g_object_notify(G_OBJECT(glk), "monospace-font-description");
        
        /* TODO: Apply the font description to all the windows and recalculate the sizes */
 }
@@ -1005,6 +1012,7 @@ chimara_glk_set_monospace_font_string(ChimaraGlk *glk, const gchar *font)
        ChimaraGlkPrivate *priv = CHIMARA_GLK_PRIVATE(glk);
        pango_font_description_free(priv->monospace_font_desc);
        priv->monospace_font_desc = fontdesc;
+       g_object_notify(G_OBJECT(glk), "monospace-font-description");
        
        /* TODO: Apply the font description to all the windows and recalculate the sizes */
 }
@@ -1042,6 +1050,7 @@ chimara_glk_set_spacing(ChimaraGlk *glk, guint spacing)
        
        ChimaraGlkPrivate *priv = CHIMARA_GLK_PRIVATE(glk);
        priv->spacing = spacing;
+       g_object_notify(G_OBJECT(glk), "spacing");
 }
 
 /**