From b54815f526d8fdadebf1e2b6643e5068a6dfe5d2 Mon Sep 17 00:00:00 2001 From: Sangjin Lee Date: Tue, 26 Apr 2016 20:54:50 +0900 Subject: [PATCH] tbm: check need_dpy_deinit Change-Id: Ib13fe70e133e2f63f4a520acda4f068dc34d33d4 --- src/tpl_tbm.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/tpl_tbm.c b/src/tpl_tbm.c index 552dead..9ed4b1c 100644 --- a/src/tpl_tbm.c +++ b/src/tpl_tbm.c @@ -13,6 +13,7 @@ typedef struct _tpl_tbm_display tpl_tbm_display_t; typedef struct _tpl_tbm_surface tpl_tbm_surface_t; struct _tpl_tbm_display { + int need_dpy_deinit; int dummy; }; @@ -27,12 +28,13 @@ __tpl_tbm_display_init(tpl_display_t *display) TPL_ASSERT(display); + tbm_display = (tpl_tbm_display_t *) calloc(1, sizeof(tpl_tbm_display_t)); + if (!display->native_handle) { display->native_handle = tbm_bufmgr_init(-1); + tbm_display->need_dpy_deinit = 1; } - tbm_display = (tpl_tbm_display_t *) calloc(1, sizeof(tpl_tbm_display_t)); - if (!tbm_display) { TPL_ERR("Failed to allocate memory for new tpl_tbm_display_t."); return TPL_ERROR_INVALID_OPERATION; @@ -53,11 +55,13 @@ __tpl_tbm_display_fini(tpl_display_t *display) tbm_display = (tpl_tbm_display_t *)display->backend.data; - if (tbm_display) free(tbm_display); - display->backend.data = NULL; - tbm_bufmgr_deinit((tbm_bufmgr)display->native_handle); + if (tbm_display->need_dpy_deinit) + tbm_bufmgr_deinit((tbm_bufmgr)display->native_handle); + + if (tbm_display) + free(tbm_display); } static tpl_result_t -- 2.7.4