From 1ee366c5e9532ff4a9efdd5ba547f464617a8585 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Mon, 21 Jan 2019 19:56:55 +0900 Subject: [PATCH 1/1] server: fix voutput buffer ref error Change-Id: I604afb6f48c17f7b724fadd01580f2abe692224b Signed-off-by: Junkyeong Kim --- src/tdm_server.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/tdm_server.c b/src/tdm_server.c index 4dfcdc1..c66948d 100644 --- a/src/tdm_server.c +++ b/src/tdm_server.c @@ -926,16 +926,17 @@ _tdm_voutput_cb_disconnect(struct wl_client *client, struct wl_resource *resourc voutput_info->mmwidth = 0; voutput_info->mmheight = 0; + if (voutput_info->request_commit == 1) { + tdm_output_unset_voutput_commit(voutput_info->voutput); + voutput_info->request_commit = 0; + } + if (voutput_info->attach_buffer) { tbm_surface_h buffer = voutput_info->attach_buffer->buffer; tbm_surface_internal_unref(buffer); voutput_info->committing = 0; voutput_info->attach_buffer = NULL; - } - - if (voutput_info->request_commit == 1) { - tdm_output_unset_voutput_commit(voutput_info->voutput); - voutput_info->request_commit = 0; + tdm_voutput_commit_done(voutput_info->voutput); } tdm_voutput_disconnect(voutput_info->voutput); @@ -1148,7 +1149,6 @@ _tdm_output_get_voutput_buffer(tdm_server_voutput_info *voutput_info, tbm_surfac LIST_FOR_EACH_ENTRY(vb, &voutput_info->buffer_list, link) { if (vb && vb->buffer == buffer) { - tbm_surface_internal_ref(vb->buffer); return vb; } } @@ -1206,6 +1206,7 @@ tdm_voutput_attach_buffer(tdm_voutput *voutput, tbm_surface_h buffer) voutput_info->attach_buffer = voutput_buffer; + tbm_surface_internal_ref(buffer); wl_tdm_voutput_send_attach_buffer(voutput_info->resource, voutput_buffer->wl_buffer); return TDM_ERROR_NONE; -- 2.7.4