From: <ca...@ke...> - 2009-06-09 18:35:38
|
Module: gst-plugins-gl Branch: master Commit: f59705832209a97c2aa5896403fe516abb218b5f URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-gl/commit/?id=f59705832209a97c2aa5896403fe516abb218b5f Author: Julien Isorce <jul...@gm...> Date: Tue Jun 9 20:35:26 2009 +0200 allow to switch xoverlay while being in paused state --- gst/gl/gstglimagesink.c | 10 +++++++++- tests/examples/gtk/switchxoverlay/main.cpp | 1 + 2 files changed, 10 insertions(+), 1 deletions(-) diff --git a/gst/gl/gstglimagesink.c b/gst/gl/gstglimagesink.c index d73f909..3c97dc8 100644 --- a/gst/gl/gstglimagesink.c +++ b/gst/gl/gstglimagesink.c @@ -606,9 +606,17 @@ gst_glimage_sink_expose (GstXOverlay * overlay) GstGLImageSink *glimage_sink = GST_GLIMAGE_SINK (overlay); //redisplay opengl scene - if (glimage_sink->display && glimage_sink->window_id) + if (glimage_sink->display && glimage_sink->window_id) { + + if (glimage_sink->window_id != glimage_sink->new_window_id) { + glimage_sink->window_id = glimage_sink->new_window_id; + gst_gl_display_set_window_id (glimage_sink->display, + glimage_sink->window_id); + } + gst_gl_display_redisplay (glimage_sink->display, 0, 0, 0, glimage_sink->keep_aspect_ratio); + } } diff --git a/tests/examples/gtk/switchxoverlay/main.cpp b/tests/examples/gtk/switchxoverlay/main.cpp index dfb2252..3f8872d 100644 --- a/tests/examples/gtk/switchxoverlay/main.cpp +++ b/tests/examples/gtk/switchxoverlay/main.cpp @@ -46,6 +46,7 @@ static gboolean on_click_drawing_area(GtkWidget* widget, GdkEventButton* event, { g_print ("switch the drawing area\n"); gst_x_overlay_set_gtk_window (GST_X_OVERLAY (videosink), widget); + gst_x_overlay_expose (GST_X_OVERLAY (videosink)); return FALSE; } |