If GTK 2.18 is used, make sure that the DrawingArea has a native window attached
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 25 Nov 2009 07:16:05 +0000 (08:16 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 25 Nov 2009 07:16:05 +0000 (08:16 +0100)
configure.ac
samples/GtkVideoPlayer.cs

index 944c7b4..f95b139 100644 (file)
@@ -125,6 +125,10 @@ AC_SUBST(GST_CFLAGS)
 # glib-sharp and gtk-sharp and mono-cairo are currently only needed for the samples
 PKG_CHECK_MODULES(GLIB_SHARP, glib-sharp-2.0 >= 2.12, have_glibsharp=yes, have_glibsharp=no)
 PKG_CHECK_MODULES(GTK_SHARP, gtk-sharp-2.0 >= 2.12, have_gtksharp=yes, have_gtksharp=no)
+PKG_CHECK_MODULES(GTK_2_17_3, gtk+-2.0 >= 2.17.3, have_gtk_2_17_3=yes, have_gtk_2_17_3=no)
+if test "x$have_gtk_2_17_3" = "xyes"; then
+    GTK_SHARP_LIBS="$GTK_SHARP_LIBS -define:HAVE_GTK_2_17_3"
+fi
 PKG_CHECK_MODULES(MONO_CAIRO, mono-cairo, have_monocairo=yes, have_monocairo=no)
 AC_SUBST(GLIB_SHARP_LIBS)
 AC_SUBST(GTK_SHARP_LIBS)
index 391e413..dcc2ecc 100644 (file)
@@ -23,6 +23,11 @@ public class MainWindow : Gtk.Window {
     MainWindow window = new MainWindow ();
     window.ShowAll ();
 
+#if HAVE_GTK_2_17_3
+    if (!gdk_window_ensure_native (window._da.GdkWindow.Handle)) {
+        Console.WriteLine ("Can't ensure a native window for the drawing area");
+    }
+#endif
     switch (System.Environment.OSVersion.Platform) {
       case PlatformID.Unix:
         window._xWindowId = gdk_x11_drawable_get_xid (window._da.GdkWindow.Handle);
@@ -241,4 +246,9 @@ public class MainWindow : Gtk.Window {
 
   [DllImport ("libgdk-win32-2.0-0.dll") ]
   static extern IntPtr gdk_win32_drawable_get_handle (IntPtr handle);
+
+#if HAVE_GTK_2_17_3
+  [DllImport ("libgdk-win32-2.0-0.dll") ]
+  static extern bool gdk_window_ensure_native (IntPtr handle);
+#endif
 }