summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-libs/clutter/files/clutter-1.22.2-clutter_gdk_get_visual.patch')
-rw-r--r--media-libs/clutter/files/clutter-1.22.2-clutter_gdk_get_visual.patch109
1 files changed, 109 insertions, 0 deletions
diff --git a/media-libs/clutter/files/clutter-1.22.2-clutter_gdk_get_visual.patch b/media-libs/clutter/files/clutter-1.22.2-clutter_gdk_get_visual.patch
new file mode 100644
index 000000000000..d157ac1ee690
--- /dev/null
+++ b/media-libs/clutter/files/clutter-1.22.2-clutter_gdk_get_visual.patch
@@ -0,0 +1,109 @@
+From ab63b30a9b1812b0e53bcddcd55f00fd507347dc Mon Sep 17 00:00:00 2001
+From: Emmanuele Bassi <ebassi@gnome.org>
+Date: Wed, 10 Jun 2015 12:02:13 +0100
+Subject: [PATCH 2/3] gdk: Add function to retrieve the GdkVisual
+
+Straight from Cogl.
+
+This allows us to propagate the GdkVisual Cogl and Clutter use to
+embedding toolkits, like GTK+.
+
+The function is annotated as being added to the 1.22 development
+cycle because it will be backported to the stable branch, so that
+downstream developers can package up a version of Clutter that does
+not crash on nVidia.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=747489
+(cherry picked from commit 2d5b5aa82aacab7cc523e5877afbb864592b7651)
+Signed-off-by: Emmanuele Bassi <ebassi@gnome.org>
+---
+ clutter/gdk/clutter-backend-gdk.c | 48 ++++++++++++++++++++++++++++++
+ clutter/gdk/clutter-gdk.h | 3 ++
+ doc/reference/clutter/clutter-sections.txt | 1 +
+ 3 files changed, 52 insertions(+)
+
+diff --git a/clutter/gdk/clutter-backend-gdk.c b/clutter/gdk/clutter-backend-gdk.c
+index 47bd671..01ba8cb 100644
+--- a/clutter/gdk/clutter-backend-gdk.c
++++ b/clutter/gdk/clutter-backend-gdk.c
+@@ -498,3 +498,51 @@ clutter_gdk_disable_event_retrieval (void)
+
+ disable_event_retrieval = TRUE;
+ }
++
++/**
++ * clutter_gdk_get_visual:
++ *
++ * Retrieves the #GdkVisual used by Clutter.
++ *
++ * This function should be used when embedding Clutter inside GDK-based
++ * foreign toolkits, to ensure that the visual applied to the #GdkWindow
++ * used to render the #ClutterStage is the correct one.
++ *
++ * Returns: (transfer none): a #GdkVisual instance
++ *
++ * Since: 1.22
++ */
++GdkVisual *
++clutter_gdk_get_visual (void)
++{
++ ClutterBackend *backend = clutter_get_default_backend ();
++ GdkScreen *screen;
++
++ if (backend == NULL)
++ {
++ g_critical ("The Clutter backend has not been initialised");
++ return NULL;
++ }
++
++ if (!CLUTTER_IS_BACKEND_GDK (backend))
++ {
++ g_critical ("The Clutter backend is not a GDK backend");
++ return NULL;
++ }
++
++ screen = CLUTTER_BACKEND_GDK (backend)->screen;
++ g_assert (screen != NULL);
++
++#if defined(GDK_WINDOWING_X11) && defined(COGL_HAS_XLIB_SUPPORT)
++ {
++ XVisualInfo *xvisinfo = cogl_clutter_winsys_xlib_get_visual_info ();
++ if (xvisinfo != NULL)
++ return gdk_x11_screen_lookup_visual (screen, xvisinfo->visualid);
++ }
++#endif
++
++ if (gdk_screen_get_rgba_visual (screen) != NULL)
++ return gdk_screen_get_rgba_visual (screen);
++
++ return gdk_screen_get_system_visual (screen);
++}
+diff --git a/clutter/gdk/clutter-gdk.h b/clutter/gdk/clutter-gdk.h
+index a009378..c5b979b 100644
+--- a/clutter/gdk/clutter-gdk.h
++++ b/clutter/gdk/clutter-gdk.h
+@@ -61,6 +61,9 @@ ClutterStage * clutter_gdk_get_stage_from_window (GdkWindow *window);
+ CLUTTER_AVAILABLE_IN_1_10
+ void clutter_gdk_disable_event_retrieval (void);
+
++CLUTTER_AVAILABLE_IN_1_22
++GdkVisual * clutter_gdk_get_visual (void);
++
+ G_END_DECLS
+
+ #endif /* __CLUTTER_GDK_H__ */
+diff --git a/doc/reference/clutter/clutter-sections.txt b/doc/reference/clutter/clutter-sections.txt
+index 327f185..d521dc1 100644
+--- a/doc/reference/clutter/clutter-sections.txt
++++ b/doc/reference/clutter/clutter-sections.txt
+@@ -1516,6 +1516,7 @@ clutter_gdk_handle_event
+ clutter_gdk_set_display
+ clutter_gdk_get_default_display
+ clutter_gdk_set_stage_foreign
++clutter_gdk_get_visual
+ </SECTION>
+
+ <SECTION>
+--
+2.4.3
+