diff options
author | Emmanuele Bassi <ebassi@linux.intel.com> | 2011-10-24 17:33:41 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@linux.intel.com> | 2011-10-24 17:33:41 +0100 |
commit | b2ff434dded8b700c2c064dcb44c4a9ef3f1a2be (patch) | |
tree | d08ebf26444aacc57e9f1bbad93d4107b9765da6 | |
parent | 3d8d6f7627ba45f7045484a21906919a03521c55 (diff) | |
download | clutter-gtk-b2ff434dded8b700c2c064dcb44c4a9ef3f1a2be.tar.gz |
embed: Install the filter just once
Don't install a global filter multiple times: once is enough, all the
heavy lifting is done by Clutter anyway.
-rw-r--r-- | clutter-gtk/gtk-clutter-embed.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/clutter-gtk/gtk-clutter-embed.c b/clutter-gtk/gtk-clutter-embed.c index 2c81356..7cabfe5 100644 --- a/clutter-gtk/gtk-clutter-embed.c +++ b/clutter-gtk/gtk-clutter-embed.c @@ -207,6 +207,8 @@ gtk_clutter_embed_realize (GtkWidget *widget) gint attributes_mask; gint border_width; + static gboolean filter_installed = FALSE; + #ifdef HAVE_CLUTTER_GTK_X11 { const XVisualInfo *xvinfo; @@ -272,7 +274,11 @@ gtk_clutter_embed_realize (GtkWidget *widget) style_context = gtk_widget_get_style_context (widget); gtk_style_context_set_background (style_context, window); - gdk_window_add_filter (NULL, gtk_clutter_filter_func, widget); + if (G_UNLIKELY (!filter_installed)) + { + filter_installed = TRUE; + gdk_window_add_filter (NULL, gtk_clutter_filter_func, widget); + } #if defined(HAVE_CLUTTER_GTK_X11) clutter_x11_set_stage_foreign (CLUTTER_STAGE (priv->stage), |