Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GStreamer plugin fails to get GL context #27013

Closed
TrevorFSmith opened this issue Jun 22, 2020 · 13 comments
Closed

GStreamer plugin fails to get GL context #27013

TrevorFSmith opened this issue Jun 22, 2020 · 13 comments

Comments

@TrevorFSmith
Copy link
Contributor

@TrevorFSmith TrevorFSmith commented Jun 22, 2020

I'm attempting to use the GStreamer plugin to record and stream Servo hosting a simple "hello world" page.

I successfully followed the instructions and ended up with a command like so:

RUST_BACKTRACE=1 \
GST_PLUGIN_PATH=$PWD/target/gstplugins/ \
LD_PRELOAD=$PWD/target/gstplugins/libgstservoplugin.so \
gst-launch-1.0 servowebsrc \
    ! video/x-raw\(memory:GLMemory\),framerate=50/1,width=512,height=256 \
    ! glcolorconvert \
    ! gldownload \
    ! theoraenc \
    ! oggmux \
    ! filesink location=test.ogg

The resulting output:

Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
Got context from element 'gldownloadelement0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";
ERROR: from element /GstPipeline:pipeline0/ServoWebSrc:servowebsrc0: Could not get/set settings from/on resource.
Additional debug info:
ports/gstplugin/servowebsrc.rs(484): gstservoplugin::servowebsrc (): /GstPipeline:pipeline0/ServoWebSrc:servowebsrc0:
Failed to get GL context
Setting pipeline to NULL ...
Freeing pipeline ...
thread '<unnamed>' panicked at 'Failed to start (Err(RecvError))', ports/gstplugin/servowebsrc.rs:175:18
stack backtrace:

(the same behaviour occurs in wayland with a slightly different GLDisplay value, then hard crashes the display manager)

Here's the gst-inspect-1.0 output:

Factory Details:
  Rank                     none (0)
  Long-name                Servo as a gstreamer src
  Klass                    Filter/Effect/Converter/Video
  Description              The Servo web browser
  Author                   The Servo Project Developers

Plugin Details:
  Name                     servoplugin
  Description              A GStreamer plugin that provides servosrc
  Filename                 /home/trevor/Documents/Transmutable/Code/servo/target/gstplugins/libgstservoplugin.so
  Version                  0.0.1-fde47f8937
  License                  MPL
  Source module            servo-gst-plugin
  Source release date      2020-06-21
  Binary package           servo-gst-plugin
  Origin URL               https://github.com/servo/servo/

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseSrc
                         +----ServoWebSrc

Pad Templates:
  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/x-raw(memory:GLMemory)
                 format: { (string)RGBA, (string)RGBx }
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]

Element has no clocking capabilities.
Element has no URI handling capabilities.

Pads:
  SRC: 'src'
    Pad Template: 'src'

Element Properties:
  blocksize           : Size in bytes to read per buffer (-1 = default)
                        flags: readable, writable
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4096 
  do-timestamp        : Apply current stream time to buffers
                        flags: readable, writable
                        Boolean. Default: true
  name                : The name of the object
                        flags: readable, writable
                        String. Default: "servowebsrc0"
  num-buffers         : Number of buffers to output before sending EOS (-1 = unlimited)
                        flags: readable, writable
                        Integer. Range: -1 - 2147483647 Default: -1 
  parent              : The parent of the object
                        flags: readable, writable
                        Object of type "GstObject"
  typefind            : Run typefind before negotiating (deprecated, non-functional)
                        flags: readable, writable, deprecated
                        Boolean. Default: false
  url                 : Initial URL
                        flags: readable, writable
                        String. Default: null
thread '<unnamed>' panicked at 'Failed to start (Err(RecvError))', ports/gstplugin/servowebsrc.rs:175:18
stack backtrace:

(the backtrace is empty regardless of whether I set RUST_BACKTRACE=1)

My dev environment:
OS: pop_os (64bit Ubuntu 20.04 TLS derivative)
CPU: AMD Ryzer 7 3700x
GPU: AMD Radeon RX 5700 XT
RAM: 64GB
GNOME: 3.66.2
Windowing system: X11 (the same error occurs on Wayland)

I'm wiling to dig in and do more debugging but figured I'd ask to see whether this is a known bug that my Issue diving couldn't turn up.

@TrevorFSmith
Copy link
Contributor Author

@TrevorFSmith TrevorFSmith commented Jun 22, 2020

@asajeffrey Feel free to just tell me the setup that you're using and I can replicate that.

@asajeffrey
Copy link
Member

@asajeffrey asajeffrey commented Jun 22, 2020

Oh that's annoying, I'll see if it's working at my end. Something might have regressed.

@asajeffrey
Copy link
Member

@asajeffrey asajeffrey commented Jun 22, 2020

OK, I'm getting the same behaviour at my end, fore some reason there's no GL context being returned by gst_gl_query_local_gl_context when the downstream node is a gldownload. For me it works if there's a glimagesink downstream:

LD_PRELOAD=$PWD/target/gstplugins/libgstservoplugin.so GST_PLUGIN_PATH=target/gstplugins   gst-launch-1.0 servowebsrc     ! video/x-raw\(memory:GLMemory\),framerate=50/1,width=512,height=256 ! glimagesink

this works for me on wayland, does it work at your end?

@asajeffrey
Copy link
Member

@asajeffrey asajeffrey commented Jun 22, 2020

The relevant bit of the log looks like:

0:00:00.027522473  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2503:gst_bin_element_set_state:<gldownloadelement0> current NULL pending VOID_PENDING, desired next READY
0:00:00.027548873  6419 0x56037879b600 INFO             GST_CONTEXT gstglutils.c:115:pad_query:<gldownloadelement0:src> pad peer query failed
0:00:00.027560269  6419 0x56037879b600 INFO             GST_CONTEXT gstglutils.c:115:pad_query:<gldownloadelement0:sink> pad peer query failed
0:00:00.027565642  6419 0x56037879b600 INFO             GST_CONTEXT gstglutils.c:176:_gst_context_query:<gldownloadelement0> posting need context message
0:00:00.027576872  6419 0x56037879b600 INFO             GST_CONTEXT gstglutils.c:115:pad_query:<gldownloadelement0:src> pad peer query failed
0:00:00.027583722  6419 0x56037879b600 INFO             GST_CONTEXT gstglutils.c:115:pad_query:<gldownloadelement0:sink> pad peer query failed
0:00:00.027588923  6419 0x56037879b600 INFO             GST_CONTEXT gstglutils.c:176:_gst_context_query:<gldownloadelement0> posting need context message
0:00:00.027597333  6419 0x56037879b600 INFO             GST_CONTEXT gstglutils.c:115:pad_query:<gldownloadelement0:src> pad peer query failed
0:00:00.027603772  6419 0x56037879b600 INFO             GST_CONTEXT gstglutils.c:115:pad_query:<gldownloadelement0:sink> pad peer query failed
0:00:00.027608793  6419 0x56037879b600 INFO             GST_CONTEXT gstglutils.c:176:_gst_context_query:<gldownloadelement0> posting need context message
0:00:00.027619684  6419 0x56037879b600 INFO               gldisplay gstgldisplay.c:284:gst_gl_display_new: creating a display, user choice:(NULL) (platform: (NULL))
0:00:00.028071202  6419 0x56037879b600 INFO             GST_CONTEXT gstglutils.c:240:gst_gl_element_propagate_display_context:<gldownloadelement0> posting have context (0x560378779b00) message with display (0x5603789ba040)
0:00:00.028091965  6419 0x56037879b600 INFO             GST_CONTEXT gstglutils.c:115:pad_query:<gldownloadelement0:src> pad peer query failed
0:00:00.028101774  6419 0x56037879b600 INFO             GST_CONTEXT gstglutils.c:115:pad_query:<gldownloadelement0:sink> pad peer query failed
0:00:00.028108477  6419 0x56037879b600 INFO             GST_CONTEXT gstglutils.c:176:_gst_context_query:<gldownloadelement0> posting need context message
0:00:00.028118279  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2675:gst_element_continue_state:<gldownloadelement0> completed state change to READY
0:00:00.028126388  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2575:_priv_gst_element_state_changed:<gldownloadelement0> notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:00.028136793  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2952:gst_bin_change_state_func:<pipeline0> child 'gldownloadelement0' changed state to 2(READY) successfully
0:00:00.028146362  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2503:gst_bin_element_set_state:<capsfilter0> current NULL pending VOID_PENDING, desired next READY
0:00:00.028153401  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2675:gst_element_continue_state:<capsfilter0> completed state change to READY
0:00:00.028159862  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2575:_priv_gst_element_state_changed:<capsfilter0> notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:00.028168001  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2952:gst_bin_change_state_func:<pipeline0> child 'capsfilter0' changed state to 2(READY) successfully
0:00:00.028174746  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2503:gst_bin_element_set_state:<servowebsrc0> current NULL pending VOID_PENDING, desired next READY
0:00:00.028186650  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2675:gst_element_continue_state:<servowebsrc0> completed state change to READY
0:00:00.028193444  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2575:_priv_gst_element_state_changed:<servowebsrc0> notifying about state-changed NULL to READY (VOID_PENDING pending)
0:00:00.028200385  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2952:gst_bin_change_state_func:<pipeline0> child 'servowebsrc0' changed state to 2(READY) successfully
0:00:00.028209413  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2647:gst_element_continue_state:<pipeline0> committing state from NULL to READY, pending PAUSED, next PAUSED
0:00:00.028215523  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2575:_priv_gst_element_state_changed:<pipeline0> notifying about state-changed NULL to READY (PAUSED pending)
0:00:00.028231598  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2655:gst_element_continue_state:<pipeline0> continue state change READY to PAUSED, final PAUSED
0:00:00.028245788  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2503:gst_bin_element_set_state:<filesink0> current READY pending VOID_PENDING, desired next PAUSED
0:00:00.028259918  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2959:gst_bin_change_state_func:<pipeline0> child 'filesink0' is changing state asynchronously to PAUSED
0:00:00.028268167  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2503:gst_bin_element_set_state:<oggmux0> current READY pending VOID_PENDING, desired next PAUSED
0:00:00.028298081  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2675:gst_element_continue_state:<oggmux0> completed state change to PAUSED
0:00:00.028305146  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2575:_priv_gst_element_state_changed:<oggmux0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:00.028313942  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2952:gst_bin_change_state_func:<pipeline0> child 'oggmux0' changed state to 3(PAUSED) successfully
0:00:00.028321308  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2503:gst_bin_element_set_state:<theoraenc0> current READY pending VOID_PENDING, desired next PAUSED
0:00:00.028331457  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2675:gst_element_continue_state:<theoraenc0> completed state change to PAUSED
0:00:00.028337831  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2575:_priv_gst_element_state_changed:<theoraenc0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:00.028346652  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2952:gst_bin_change_state_func:<pipeline0> child 'theoraenc0' changed state to 3(PAUSED) successfully
0:00:00.028354037  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2503:gst_bin_element_set_state:<videoconvert0> current READY pending VOID_PENDING, desired next PAUSED
0:00:00.028364835  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2675:gst_element_continue_state:<videoconvert0> completed state change to PAUSED
0:00:00.028371491  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2575:_priv_gst_element_state_changed:<videoconvert0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:00.028379877  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2952:gst_bin_change_state_func:<pipeline0> child 'videoconvert0' changed state to 3(PAUSED) successfully
0:00:00.028386950  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2503:gst_bin_element_set_state:<gldownloadelement0> current READY pending VOID_PENDING, desired next PAUSED
0:00:00.028398086  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2675:gst_element_continue_state:<gldownloadelement0> completed state change to PAUSED
0:00:00.028404443  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2575:_priv_gst_element_state_changed:<gldownloadelement0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:00.028412830  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2952:gst_bin_change_state_func:<pipeline0> child 'gldownloadelement0' changed state to 3(PAUSED) successfully
0:00:00.028419895  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2503:gst_bin_element_set_state:<capsfilter0> current READY pending VOID_PENDING, desired next PAUSED
0:00:00.028430111  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2675:gst_element_continue_state:<capsfilter0> completed state change to PAUSED
0:00:00.028436648  6419 0x56037879b600 INFO              GST_STATES gstelement.c:2575:_priv_gst_element_state_changed:<capsfilter0> notifying about state-changed READY to PAUSED (VOID_PENDING pending)
0:00:00.028444625  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2952:gst_bin_change_state_func:<pipeline0> child 'capsfilter0' changed state to 3(PAUSED) successfully
0:00:00.028451323  6419 0x56037879b600 INFO              GST_STATES gstbin.c:2503:gst_bin_element_set_state:<servowebsrc0> current READY pending VOID_PENDING, desired next PAUSED
0:00:00.028490242  6419 0x56037879b600 INFO             servowebsrc ports/gstplugin/servowebsrc.rs:462:gstservoplugin::servowebsrc: Starting
0:00:00.028774404  6419 0x56037879b600 INFO             GST_CONTEXT gstglutils.c:115:pad_query:<servowebsrc0:src> pad peer query failed
0:00:00.028827091  6419 0x56037879b600 INFO        GST_ERROR_SYSTEM gstelement.c:2140:gst_element_message_full_with_details:<servowebsrc0> posting message: Could not get/set settings from/on resource.
0:00:00.028846885  6419 0x56037879b600 INFO        GST_ERROR_SYSTEM gstelement.c:2167:gst_element_message_full_with_details:<servowebsrc0> posted error message: Could not get/set settings from/on resource.
0:00:00.028858826  6419 0x56037879b600 WARN                 basesrc gstbasesrc.c:3468:gst_base_src_start:<servowebsrc0> error: Failed to start
0:00:00.028869892  6419 0x56037879b600 INFO        GST_ERROR_SYSTEM gstelement.c:2140:gst_element_message_full_with_details:<servowebsrc0> posting message: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
0:00:00.028879463  6419 0x56037879b600 INFO        GST_ERROR_SYSTEM gstelement.c:2167:gst_element_message_full_with_details:<servowebsrc0> posted error message: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
@asajeffrey
Copy link
Member

@asajeffrey asajeffrey commented Jun 22, 2020

As a workaround, if you pipe servo into both a glimagesink and a gldownload then it will succeed in finding a GL context. A command line to do this is:

LD_PRELOAD=$PWD/target/gstplugins/libgstservoplugin.so \
GST_PLUGIN_PATH=target/gstplugins \
  gst-launch-1.0 servowebsrc \
    ! video/x-raw\(memory:GLMemory\),framerate=50/1,width=512,height=256 \
    !  tee name=t \
 t. ! queue ! glimagesink 
 t. ! queue ! glcolorconvert ! gldownload ! theoraenc ! oggmux ! filesink location=test.ogg

Does this work for you?

@TrevorFSmith
Copy link
Contributor Author

@TrevorFSmith TrevorFSmith commented Jun 23, 2020

Adding the glimagesink did allow it to make progress in finding the GL context! Than you.

Now I'm getting greedy and attempting to swap out the wayland-specific code for x11. I'm stumbling a bit convincing multi::connection::Connection::Default(...) to accept an x11 Connection instead of the wayland one. I changed the glstreamer-gl-sys features to ["x11"] and can't find any other references to wayland (other than in in servowebsrc.rs) in port/gstplugin but I'll keep digging. There's some expectation for wayland that I haven't found, yet.

@asajeffrey
Copy link
Member

@asajeffrey asajeffrey commented Jun 23, 2020

Glad to hear you got it working! Any chance you could submit a PR that updates the README?

Back when I wrote the plug-in, I could only get it to work with Wayland, but since then the x11 support in surfman has changed, so there's a better chance that it'll work.

I'm glad to see you getting it up and running, it would be great to see people outside the team using Servo with gstreamer!

@TrevorFSmith TrevorFSmith mentioned this issue Jun 23, 2020
3 of 5 tasks complete
@TrevorFSmith
Copy link
Contributor Author

@TrevorFSmith TrevorFSmith commented Jun 23, 2020

@asajeffrey I intend to use Servo+GStreamer as the backend renderer for livestreams coming out of Transmutable Soundstage. The main idea is that small crews of ~12 people working from home can use the virtual soundstage to produce live talk shows. The crew use web browsers on laptops and tablets to run the cameras, sound board, lighting, teleprompters, etc. The cast and live audience come on-set via headsets with WebXR.
So, my immediate goal is to figure out how to get Servo pointed at an instance of the web app that hosts the soundstage and then get that into GStreamer. My pop_os installation is unusably unstable with wayland so I'm going to put in a bit of time to see if I can get it running on X11. If that's going to take too much time then I'll bit the bullet and configure a machine with a stable wayland install.

bors-servo added a commit that referenced this issue Jun 23, 2020
…r=asajeffrey

Document a GStreamer plugin workaround

<!-- Please describe your changes on the following line: -->

Based on conversation in Issue #27013 this documents a workaround in the gstreamer CLI for a failure of the GStreamer plugin to find usable a GL context without a downstream glimagesink

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)

<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because it's a document change

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jun 23, 2020
…r=asajeffrey

Document a GStreamer plugin workaround

<!-- Please describe your changes on the following line: -->

Based on conversation in Issue #27013 this documents a workaround in the gstreamer CLI for a failure of the GStreamer plugin to find usable a GL context without a downstream glimagesink

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)

<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because it's a document change

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jun 24, 2020
…r=asajeffrey

Document a GStreamer plugin workaround

<!-- Please describe your changes on the following line: -->

Based on conversation in Issue #27013 this documents a workaround in the gstreamer CLI for a failure of the GStreamer plugin to find usable a GL context without a downstream glimagesink

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)

<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because it's a document change

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
@philn
Copy link
Contributor

@philn philn commented Jun 27, 2020

@TrevorFSmith cool project you got there! Maybe GstWPE could be an option as well ;)

@asajeffrey
Copy link
Member

@asajeffrey asajeffrey commented Jul 1, 2020

My attempt to fix this is https://github.com/asajeffrey/servo/tree/gstplugin-fallback-glcontext, which gets further but then fails to run a task on the GL thread.

@asajeffrey
Copy link
Member

@asajeffrey asajeffrey commented Jul 1, 2020

So it turns out the problem is that some GL sinks (e.g. gldownload) don't create their GL context until they're in the PAUSED state, so we were issuing the query too early. In https://github.com/asajeffrey/servo/blob/gstplugin-lazy-gl-init/ports/gstplugin/servowebsrc.rs I delay getting the GL state until we're producing GL frames, which seems to fix the issue.

bors-servo added a commit that referenced this issue Jul 7, 2020
Delay initializing servo GL until as late as possible

<!-- Please describe your changes on the following line: -->

Initialize the GL state for the gstreamer plugin as late as possible.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #27013
- [x] These changes do not require tests because it's a gstreamer plugin issue

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jul 7, 2020
Delay initializing servo GL until as late as possible

<!-- Please describe your changes on the following line: -->

Initialize the GL state for the gstreamer plugin as late as possible.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #27013
- [x] These changes do not require tests because it's a gstreamer plugin issue

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jul 7, 2020
Delay initializing servo GL until as late as possible

<!-- Please describe your changes on the following line: -->

Initialize the GL state for the gstreamer plugin as late as possible.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #27013
- [x] These changes do not require tests because it's a gstreamer plugin issue

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jul 7, 2020
Delay initializing servo GL until as late as possible

<!-- Please describe your changes on the following line: -->

Initialize the GL state for the gstreamer plugin as late as possible.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #27013
- [x] These changes do not require tests because it's a gstreamer plugin issue

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
bors-servo added a commit that referenced this issue Jul 7, 2020
Delay initializing servo GL until as late as possible

<!-- Please describe your changes on the following line: -->

Initialize the GL state for the gstreamer plugin as late as possible.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #27013
- [x] These changes do not require tests because it's a gstreamer plugin issue

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
@bors-servo bors-servo closed this in ea9ecd6 Jul 8, 2020
@asajeffrey
Copy link
Member

@asajeffrey asajeffrey commented Jul 8, 2020

@TrevorFSmith hopefully this fixed the problem!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

3 participants
You can’t perform that action at this time.