X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=libchimara%2Fchimara-glk.c;h=fc4c446ed05aa51ecead7b2f862061a7588b5b2c;hb=9a5d9a7907479ed1073e1a5bbdeb3d4d6169e883;hp=1ddeb7911e8a859294f51de746597dbf81f726f1;hpb=2b423f4064b36e95ce9c0bd157d35bb2181c21c1;p=rodin%2Fchimara.git diff --git a/libchimara/chimara-glk.c b/libchimara/chimara-glk.c index 1ddeb79..fc4c446 100644 --- a/libchimara/chimara-glk.c +++ b/libchimara/chimara-glk.c @@ -84,6 +84,8 @@ chimara_glk_init(ChimaraGlk *self) priv->abort_lock = NULL; priv->abort_signalled = FALSE; priv->arrange_lock = NULL; + priv->rearranged = NULL; + priv->needs_rearrange = FALSE; priv->ignore_next_arrange_event = FALSE; priv->interrupt_handler = NULL; priv->root_window = NULL; @@ -172,7 +174,7 @@ chimara_glk_finalize(GObject *object) /* Free the window arrangement signalling */ g_mutex_lock(priv->arrange_lock); - /* Make sure no other thread is busy with this */ + g_cond_free(priv->rearranged); g_mutex_unlock(priv->arrange_lock); g_mutex_free(priv->arrange_lock); priv->arrange_lock = NULL; @@ -470,6 +472,8 @@ chimara_glk_size_allocate(GtkWidget *widget, GtkAllocation *allocation) } else priv->ignore_next_arrange_event = FALSE; + priv->needs_rearrange = FALSE; + g_cond_signal(priv->rearranged); g_mutex_unlock(priv->arrange_lock); } } @@ -662,6 +666,7 @@ chimara_glk_new(void) priv->event_queue_not_full = g_cond_new(); priv->abort_lock = g_mutex_new(); priv->arrange_lock = g_mutex_new(); + priv->rearranged = g_cond_new(); return GTK_WIDGET(self); }