[clutter/clutter-1.16] win32: Disable event retrieval in Cogl



commit 0cef63b8374c86753ca20b5270b57c486d541ca1
Author: Neil Roberts <neil linux intel com>
Date:   Fri May 31 14:18:01 2013 +0100

    win32: Disable event retrieval in Cogl
    
    Since commit 4543ed6ac3af in Cogl, Cogl will now try to consume
    Windows message itself. This doesn't really cause any problems because
    both message loops just call DispatchMessage which will cause the
    message to be routed through Clutter's window procedure either way.
    However, it's not great to have two sources listening for messages so
    this patch disables Cogl's message retrieval.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=701356

 clutter/gdk/clutter-backend-gdk.c     |    1 +
 clutter/win32/clutter-backend-win32.c |   19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 0 deletions(-)
---
diff --git a/clutter/gdk/clutter-backend-gdk.c b/clutter/gdk/clutter-backend-gdk.c
index 8f61821..7a719aa 100644
--- a/clutter/gdk/clutter-backend-gdk.c
+++ b/clutter/gdk/clutter-backend-gdk.c
@@ -279,6 +279,7 @@ clutter_backend_gdk_get_renderer (ClutterBackend  *backend,
     {
       /* Force a WGL winsys on windows */
       cogl_renderer_set_winsys_id (renderer, COGL_WINSYS_ID_WGL);
+      cogl_win32_renderer_set_event_retrieval_enabled (renderer, FALSE);
     }
   else
 #endif
diff --git a/clutter/win32/clutter-backend-win32.c b/clutter/win32/clutter-backend-win32.c
index cb99079..fc7c604 100644
--- a/clutter/win32/clutter-backend-win32.c
+++ b/clutter/win32/clutter-backend-win32.c
@@ -178,6 +178,24 @@ clutter_win32_disable_event_retrieval (void)
   _no_event_retrieval = TRUE;
 }
 
+static CoglRenderer *
+clutter_backend_win32_get_renderer (ClutterBackend  *backend,
+                                    GError         **error)
+{
+  CoglRenderer *renderer;
+
+  CLUTTER_NOTE (BACKEND, "Creating a new WGL renderer");
+
+  renderer = cogl_renderer_new ();
+  cogl_renderer_set_winsys_id (renderer, COGL_WINSYS_ID_WGL);
+
+  /* We don't want Cogl to install its default event handler because
+   * we'll handle them manually */
+  cogl_win32_renderer_set_event_retrieval_enabled (renderer, FALSE);
+
+  return renderer;
+}
+
 static void
 clutter_backend_win32_class_init (ClutterBackendWin32Class *klass)
 {
@@ -192,6 +210,7 @@ clutter_backend_win32_class_init (ClutterBackendWin32Class *klass)
 
   backend_class->init_events = clutter_backend_win32_init_events;
   backend_class->get_features = clutter_backend_win32_get_features;
+  backend_class->get_renderer = clutter_backend_win32_get_renderer;
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]