From: Julien Isorce Date: Mon, 7 Jul 2008 20:59:20 +0000 (+0000) Subject: [118/906] git-svn-id: svn://svn.wobow.com/GStreamer_playground/gst-plugins-gl@573... X-Git-Tag: 1.19.3~507^2~12414 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=951460cdd18bfe3d064239bcc59d30720e68e639;p=platform%2Fupstream%2Fgstreamer.git [118/906] git-svn-id: svn://svn.wobow.com/GStreamer_playground/gst-plugins-gl@573 93df14bb-0f41-7a43-8087-d3e2a2f0e464 --- diff --git a/gst-libs/gst/gl/gstgldisplay.c b/gst-libs/gst/gl/gstgldisplay.c index 57f224b1ad..582925d6bc 100644 --- a/gst-libs/gst/gl/gstgldisplay.c +++ b/gst-libs/gst/gl/gstgldisplay.c @@ -347,9 +347,9 @@ gst_gl_display_init (GstGLDisplay *display, GstGLDisplayClass *klass) } static void -gst_gl_display_finalize (GObject *object) +gst_gl_display_finalize (GObject* object) { - GstGLDisplay *display = GST_GL_DISPLAY (object); + GstGLDisplay* display = GST_GL_DISPLAY (object); //request glut window destruction //blocking call because display must be alive @@ -439,6 +439,7 @@ gst_gl_display_finalize (GObject *object) gst_gl_display_glutThread = NULL; g_async_queue_unref (gst_gl_display_messageQueue); g_hash_table_unref (gst_gl_display_map); + gst_gl_display_map = NULL; } } @@ -498,7 +499,7 @@ gst_gl_display_thread_loop (void) gst_gl_display_thread_dispatch_action (msg); } } - else g_print ("timeout reached in idle func\n"); + else GST_DEBUG ("timeout reached in idle func\n"); } diff --git a/gst/gl/gstglimagesink.c b/gst/gl/gstglimagesink.c index a50258aa35..0364c709e5 100644 --- a/gst/gl/gstglimagesink.c +++ b/gst/gl/gstglimagesink.c @@ -323,7 +323,6 @@ gst_glimage_sink_stop (GstBaseSink* bsink) } if (glimage_sink->display) { - gst_gl_display_set_visible_context (glimage_sink->display, FALSE); g_object_unref (glimage_sink->display); glimage_sink->display = NULL; } @@ -410,6 +409,9 @@ gst_glimage_sink_set_caps (GstBaseSink* bsink, GstCaps* caps) glimage_sink->par_n = par_n; glimage_sink->par_d = par_d; + if (!glimage_sink->window_id) + gst_x_overlay_prepare_xwindow_id (GST_X_OVERLAY (glimage_sink)); + return TRUE; } @@ -433,8 +435,6 @@ gst_glimage_sink_render (GstBaseSink* bsink, GstBuffer* buf) { glimage_sink->display = g_object_ref (gl_buffer->display); - gst_x_overlay_prepare_xwindow_id (GST_X_OVERLAY (glimage_sink)); - if (glimage_sink->window_id) gst_gl_display_set_window_id (glimage_sink->display, glimage_sink->window_id); @@ -462,10 +462,6 @@ gst_glimage_sink_render (GstBaseSink* bsink, GstBuffer* buf) //create a display glimage_sink->display = gst_gl_display_new (); - //Notify application to set window id now - if (!glimage_sink->window_id) - gst_x_overlay_prepare_xwindow_id (GST_X_OVERLAY (glimage_sink)); - //init opengl context gst_gl_display_create_context (glimage_sink->display, 50, y_pos++ * (glimage_sink->height+50) + 50, @@ -531,7 +527,6 @@ gst_glimage_sink_set_xwindow_id (GstXOverlay* overlay, gulong window_id) GstGLImageSink* glimage_sink = GST_GLIMAGE_SINK (overlay); g_return_if_fail (GST_IS_GLIMAGE_SINK (overlay)); - g_assert (glimage_sink->display != NULL); GST_DEBUG ("set_xwindow_id %ld", window_id);