MMFMWK-8185 waylandsink: fix waylandsink segfault when exit unpredicted
should check if sink->window is valid to reset wayland surface
upstream status: imx specific
diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c
index 3f32a77..2c4a714 100644
--- a/ext/wayland/gstwaylandsink.c
+++ b/ext/wayland/gstwaylandsink.c
@@ -421,13 +421,13 @@
break;
case GST_STATE_CHANGE_PAUSED_TO_READY:
gst_buffer_replace (&sink->last_buffer, NULL);
- gst_wl_window_set_alpha(sink->window, 1.0);
- wl_surface_damage (sink->window->area_surface, 0, 0,
- sink->window->render_rectangle.w, sink->window->render_rectangle.h);
- wl_surface_commit (sink->window->area_surface);
- wl_display_roundtrip (sink->display->display);
gst_wayland_sink_config_hdr10 (sink, NULL);
if (sink->window) {
+ gst_wl_window_set_alpha(sink->window, 1.0);
+ wl_surface_damage (sink->window->area_surface, 0, 0,
+ sink->window->render_rectangle.w, sink->window->render_rectangle.h);
+ wl_surface_commit (sink->window->area_surface);
+ wl_display_roundtrip (sink->display->display);
if (gst_wl_window_is_toplevel (sink->window)) {
g_clear_object (&sink->window);
} else {
diff --git a/ext/wayland/wlwindow.c b/ext/wayland/wlwindow.c
index c49bfd4..c4823b1 100644
--- a/ext/wayland/wlwindow.c
+++ b/ext/wayland/wlwindow.c
@@ -469,7 +469,7 @@
void
gst_wl_window_set_alpha (GstWlWindow * window, gfloat alpha)
{
- if (window->blend_func) {
+ if (window && window->blend_func) {
zwp_blending_v1_set_alpha(window->blend_func, wl_fixed_from_double(alpha));
if(alpha < 1.0)
zwp_blending_v1_set_blending(window->blend_func, ZWP_BLENDING_V1_BLENDING_EQUATION_FROMSOURCE);