diff options
author | Matthew Waters <matthew@centricular.com> | 2017-09-05 16:14:02 +1000 |
---|---|---|
committer | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2017-12-06 14:24:18 -0500 |
commit | bfce027d81e60d02fdd1ed64516587c9fd67d953 (patch) | |
tree | 5cb798e73f7426d214178b94913bc840925ea4a7 | |
parent | 6db0d3f04e9fd4fa133fda3bcc4c89f8f23c3291 (diff) | |
download | gstreamer-plugins-bad-bfce027d81e60d02fdd1ed64516587c9fd67d953.tar.gz |
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 e466fb4dd..c3e902de4 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); |