After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 775970 - glimagesink: hang? on windows
glimagesink: hang? on windows
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
1.10.2
Other Windows
: Normal blocker
: 1.10.3
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2016-12-12 09:31 UTC by flacone
Modified: 2016-12-15 13:16 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
gst-debug output (42.89 KB, text/plain)
2016-12-12 09:31 UTC, flacone
Details

Description flacone 2016-12-12 09:31:23 UTC
Created attachment 341801 [details]
gst-debug output

Starting with GStreamer version 10.0.2 the glimagesink does not show a window. On 10.0.1 it was still working. This is at least the case with default properties, e.g. with the following launch line:

C:\Users\skimmer>gst-launch-1.0 --verbose videotestsrc ! glimagesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'sink': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplay\)\ gldisplay0";
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = video/x-raw, format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-raw, format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLUploadElement:gluploadelement0.GstPad:src: caps = video/x-raw(memory:GLMemory), width=(int)320, height=(int)240, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, format=(string)RGBA, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorConvertElement:glcolorconvertelement0.GstPad:src: caps = video/x-raw(memory:GLMemory), width=(int)320, height=(int)240, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, format=(string)RGBA, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorBalance:glcolorbalance0.GstPad:src: caps = video/x-raw(memory:GLMemory), width=(int)320, height=(int)240, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, format=(string)RGBA, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink.GstPad:sink: caps = video/x-raw(memory:GLMemory), width=(int)320, height=(int)240, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, format=(string)RGBA, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorBalance:glcolorbalance0.GstPad:sink: caps = video/x-raw(memory:GLMemory), width=(int)320, height=(int)240, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, format=(string)RGBA, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorConvertElement:glcolorconvertelement0.GstPad:sink: caps = video/x-raw(memory:GLMemory), width=(int)320, height=(int)240, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, format=(string)RGBA, texture-target=(string)2D
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLUploadElement:gluploadelement0.GstPad:sink: caps = video/x-raw, format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0.GstGhostPad:sink: caps = video/x-raw, format=(string)RGBA, width=(int)320, height=(int)240, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive

and then nothing happens

A attached also the debug output for --gst-debug=gl*:5
Comment 1 Matthew Waters (ystreet00) 2016-12-12 09:35:22 UTC
Is this a hang? If so, a backtrace would be very helpful at the point of the hang.
Comment 2 flacone 2016-12-12 10:18:01 UTC
(In reply to Matthew Waters (ystreet00) from comment #1)
> Is this a hang? If so, a backtrace would be very helpful at the point of the
> hang.

I am not sure what you mean by a hang.
But the command window is still responsive and the curser is blinking. In an own application version the application is running, just the the window does not show (The element does not go to playing state).
Comment 3 Matthew Waters (ystreet00) 2016-12-13 06:37:27 UTC
hang = there's no more output/gstreamer does not continue execution anymore.

A backtrace of all threads at that point would still be very useful.
Comment 4 Matthew Waters (ystreet00) 2016-12-15 13:16:26 UTC
This is most likely caused by 782e7af4a6935ebf31555048c3050612ab771944 and the g_source_attach()'s not finding the thread default main context anymore.

This should fix your issue.  Let me know if it doesn't by reopening this bug.

commit f58eb9844051479062f9c4dcb69da46d001625da
Author: Matthew Waters <matthew@centricular.com>
Date:   Thu Dec 15 00:59:45 2016 +1100

    gl/window: remove use of main_context_push/pop_thread_default()
    
    No-one's using/depending on it (it would have criticalled and not worked)
    and it's causing more problems than it's solving.  Store the GMainContext
    in the public struct instead for subclasses to optionally use instead of
    relying on the push/pop state to be correct.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=775970

and 1.10 3aaf645c7d16a01b49325367ab8403a73c4d624c