diff options
| author | Matthew Waters <matthew@centricular.com> | 2017-09-05 16:14:02 +1000 |
|---|---|---|
| committer | Matthew Waters <matthew@centricular.com> | 2017-09-05 21:16:33 +1000 |
| commit | 3f2a3d0db928e47c1b2f1074ff7c72a69396147a (patch) | |
| tree | 48e74bbeb72ff810367c32a7699fb25edeba4f31 | |
| parent | 03e96f3ceb76704ea1ec0812d99d33415dd4fb2c (diff) | |
gl/wayland: call eglTerminate() before wl_display_disconnect()
Calling these two functions in the wrong order will result in
use-after-free inside wayland.
https://bugzilla.gnome.org/show_bug.cgi?id=787293
| -rw-r--r-- | gst-libs/gst/gl/wayland/gstgldisplay_wayland.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gst-libs/gst/gl/wayland/gstgldisplay_wayland.c b/gst-libs/gst/gl/wayland/gstgldisplay_wayland.c index a7ca203..ed974a8 100644 --- a/gst-libs/gst/gl/wayland/gstgldisplay_wayland.c +++ b/gst-libs/gst/gl/wayland/gstgldisplay_wayland.c @@ -91,6 +91,10 @@ gst_gl_display_wayland_finalize (GObject * object) { GstGLDisplayWayland *display_wayland = GST_GL_DISPLAY_WAYLAND (object); + /* Cause eglTerminate() to occur before wl_display_disconnect() + * https://bugzilla.gnome.org/show_bug.cgi?id=787293 */ + g_object_set_data (object, "gst.gl.display.egl", NULL); + if (!display_wayland->foreign_display && display_wayland->display) { wl_display_flush (display_wayland->display); wl_display_disconnect (display_wayland->display); |
