From 9c52a9cd0993b34d0cf02a8fea4fd39b4e8609c0 Mon Sep 17 00:00:00 2001 From: David Schleef Date: Sat, 29 Dec 2007 00:37:41 +0000 Subject: Major cleanup of code. Convert glupload to BaseTransform. Original commit message from CVS: * configure.ac: * sys/glsink/glextensions.c: * sys/glsink/glextensions.h: * sys/glsink/glimagesink.c: * sys/glsink/glimagesink.h: * sys/glsink/gstglbuffer.c: * sys/glsink/gstglbuffer.h: * sys/glsink/gstglconvert.c: * sys/glsink/gstgldisplay.c: * sys/glsink/gstgldisplay.h: * sys/glsink/gstgldownload.c: * sys/glsink/gstglfilter.c: * sys/glsink/gstglfilter.h: * sys/glsink/gstglfilterexample.c: * sys/glsink/gstgltestsrc.c: * sys/glsink/gstglupload.c: Major cleanup of code. Convert glupload to BaseTransform. Handle caps negotiation mostly correctly. Reenable in build. --- sys/glsink/glimagesink.c | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) (limited to 'sys/glsink/glimagesink.c') diff --git a/sys/glsink/glimagesink.c b/sys/glsink/glimagesink.c index 879790d7..365e4c4e 100644 --- a/sys/glsink/glimagesink.c +++ b/sys/glsink/glimagesink.c @@ -301,11 +301,11 @@ gst_glimage_sink_start (GstBaseSink * bsink) GST_ERROR ("failed to open display"); return FALSE; } +#endif - if (glimage_sink->window_id) { + if (glimage_sink->display && glimage_sink->window_id) { gst_gl_display_set_window (glimage_sink->display, glimage_sink->window_id); } -#endif GST_DEBUG ("start done"); @@ -321,9 +321,10 @@ gst_glimage_sink_stop (GstBaseSink * bsink) glimage_sink = GST_GLIMAGE_SINK (bsink); - g_object_unref (glimage_sink->display); - - glimage_sink->display = NULL; + if (glimage_sink->display) { + g_object_unref (glimage_sink->display); + glimage_sink->display = NULL; + } return TRUE; } @@ -417,14 +418,6 @@ gst_glimage_sink_set_caps (GstBaseSink * bsink, GstCaps * caps) glimage_sink->par_n = par_n; glimage_sink->par_d = par_d; - //glimage_sink->type = format; - -#if 0 - if (!glimage_sink->window) { - gst_glimage_sink_create_window (glimage_sink); - } -#endif - return TRUE; } @@ -441,21 +434,23 @@ gst_glimage_sink_render (GstBaseSink * bsink, GstBuffer * buf) if (glimage_sink->display == NULL) { glimage_sink->display = g_object_ref (gl_buffer->display); +#if 1 if (glimage_sink->window_id) { gst_gl_display_set_window (glimage_sink->display, glimage_sink->window_id); } +#endif } else { g_assert (gl_buffer->display == glimage_sink->display); } display = gl_buffer->display; - gst_gl_display_lock (display); - /* FIXME polling causes a round-trip delay. This should be changed * to catch structure events */ gst_gl_display_update_attributes (display); + + gst_gl_display_lock (display); glViewport (0, 0, display->win_width, display->win_height); glClearColor (0.3, 0.3, 0.3, 1.0); @@ -519,7 +514,7 @@ gst_glimage_sink_set_xwindow_id (GstXOverlay * overlay, XID window_id) g_return_if_fail (GST_IS_GLIMAGE_SINK (overlay)); - GST_DEBUG ("set_xwindow_id"); + GST_DEBUG ("set_xwindow_id %ld", window_id); glimage_sink = GST_GLIMAGE_SINK (overlay); -- cgit v1.2.1