GNOME Bugzilla – Bug 734906
Unpainted GtkClutterEmbed with GDK backend
Last modified: 2014-08-18 22:54:24 UTC
GtkClutterEmbed puts a filter on its GdkWindow to capture events and pass them to the ClutterBackend. That works well for X11, because the filter function receives an XEvent that can be directly fed to the ClutterX11Backend. For the GDK backend we can't do this because the filter function provides an untranslated event to the callee. Thus we can't give a valid GdkEvent to the ClutterGDKBackend. To work around this problem the current GtkClutterEmbed listen to the 'event' signal of its widget, and puts fed them to the ClutterGDKBackend. The problem with this is that Gtk+ already does some filtering, mostly on Expose events. This means that initially a GtkClutterEmbed often appears unpainted with the Gdk backend of Clutter.
Created attachment 283594 [details] [review] gtk-clutter-embed: use draw() from Gtk+ as Expose event for the GDK backend
Review of attachment 283594 [details] [review]: looks good.
I'm going to reverse this one. It triggers a never ending loop of redraw, because the toolkits have different paint cycle.
Created attachment 283685 [details] [review] gtk-clutter-embed: don't use queue redraw on gtk+'s draw()
Review of attachment 283685 [details] [review]: okay.