summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@linux.intel.com>2011-10-24 17:33:41 +0100
committerEmmanuele Bassi <ebassi@linux.intel.com>2011-10-24 17:33:41 +0100
commitb2ff434dded8b700c2c064dcb44c4a9ef3f1a2be (patch)
treed08ebf26444aacc57e9f1bbad93d4107b9765da6
parent3d8d6f7627ba45f7045484a21906919a03521c55 (diff)
downloadclutter-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.c8
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),