[118/906] git-svn-id: svn://svn.wobow.com/GStreamer_playground/gst-plugins-gl@573...
authorJulien Isorce <julien.isorce@gmail.com>
Mon, 7 Jul 2008 20:59:20 +0000 (20:59 +0000)
committerMatthew Waters <ystreet00@gmail.com>
Sat, 15 Mar 2014 17:36:22 +0000 (18:36 +0100)
gst-libs/gst/gl/gstgldisplay.c
gst/gl/gstglimagesink.c

index 57f224b1adda701a8405489c954a77052dca66ee..582925d6bcd4d38d274b6e6b1b8943c3b9447146 100644 (file)
@@ -347,9 +347,9 @@ gst_gl_display_init (GstGLDisplay *display, GstGLDisplayClass *klass)
 }
 
 static void
-gst_gl_display_finalize (GObject *object)
+gst_gl_display_finalize (GObjectobject)
 {
-    GstGLDisplay *display = GST_GL_DISPLAY (object);
+    GstGLDisplaydisplay = 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");
 }
 
 
index a50258aa358a9dd2a4d92adef793d50ea7b2fea8..0364c709e58816670f5d2d3829dec886e798a7fb 100644 (file)
@@ -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);