[gstreamer-bugs] [Bug 599885] New: [gtk examples] unstable behaviour with recent gtk (post csw merge)

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Wed Oct 28 03:11:55 PDT 2009


https://bugzilla.gnome.org/show_bug.cgi?id=599885
  GStreamer | gst-plugins-gl | git

           Summary: [gtk examples] unstable behaviour with recent gtk
                    (post csw merge)
    Classification: Desktop
           Product: GStreamer
           Version: git
        OS/Version: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-gl
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: fargiolas at gnome.org
         QAContact: gstreamer-bugs at lists.sourceforge.net
      GNOME target: ---
     GNOME version: ---


Gtk examples set xoverlay window using direct access to a drawing area native
window handle like GDK_WINDOW_XWINDOW(window->window).
Starting from gtk+ 2.17.3 (or .4, after client-side-windows merge) thre is no
more warranty that a gdkwindow has a native counterpart. This has the effect of
random crashes with fatal X11 IO errors. 

The right way to fix this is to call gdk_window_ensure_native so that we can
trust gdk to do everything it can to give us a native handler.

It would be great to also remove flickering from gtk effects while fixing this.
I'd say we should include a function in gstgtk.c that does something like the
following and call that in each gtk example. It cannot be done in the
set_gtk_window call because that's called in gst threads. Probably the best
place is right after the drawingarea has been added to a container so it can be
realized.

gtk_widget_realize (screen);
#if GTK_CHECK_VERSION(2.17.3)
GdkWindow win = gtk_widget_get_window (screen);
if (!gdk_window_ensure_native (win))
{
  g_error ("Could not create a native X11 window for the drawing area");
}
#endif
gdk_window_set_back_pixmap (gtk_widget_get_window (screen), NULL, FALSE);
gtk_widget_set_app_paintable (screen, TRUE);
gtk_widget_set_double_buffered (screen, FALSE);

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.




More information about the Gstreamer-bugs mailing list