X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=client%2Ftdm_client.c;h=0e50916371bf954dcf5e2a9c13e4354c49c86867;hb=refs%2Fheads%2Fsandbox%2Fcyeon%2Fdevel;hp=3a2ab481774a1a522883d10c8ae35d01e68ea3a4;hpb=21ab2ce9f77ca364d4f9ae1d4f52162b951d4530;p=platform%2Fcore%2Fuifw%2Flibtdm.git diff --git a/client/tdm_client.c b/client/tdm_client.c index 3a2ab48..0e50916 100644 --- a/client/tdm_client.c +++ b/client/tdm_client.c @@ -225,6 +225,17 @@ _tdm_client_vblank_cb_stamp(void *data, struct wl_tdm_vblank *wl_tdm_vblank, uin } /* LCOV_EXCL_START */ +static int +_tdm_client_vblank_wait_list_validation_check(tdm_private_client_vblank *private_vblank) +{ + if (private_vblank->wait_list.next == NULL || private_vblank->wait_list.prev == NULL) { + TDM_ERR("vblank(%p) wait_list broken. prev(%p), next(%p) pid(%d)", + private_vblank, private_vblank->wait_list.prev, private_vblank->wait_list.next, getpid()); + } + + return 0; +} + static void _tdm_client_vblank_cb_done(void *data, struct wl_tdm_vblank *wl_tdm_vblank, uint32_t req_id, uint32_t sequence, uint32_t tv_sec, @@ -243,6 +254,8 @@ _tdm_client_vblank_cb_done(void *data, struct wl_tdm_vblank *wl_tdm_vblank, TDM_DBG("vblank(%p) req_id(%u) sequence(%u) time(%.6f)", private_vblank, req_id, sequence, TDM_TIME(tv_sec, tv_usec)); + _tdm_client_vblank_wait_list_validation_check(private_vblank); + LIST_FOR_EACH_ENTRY(w, &private_vblank->wait_list, link) { if (w->req_id != req_id) continue; @@ -2069,6 +2082,7 @@ tdm_client_create_voutput(tdm_client *client, const char *name, tdm_error *error private_voutput->bufmgr = tbm_bufmgr_init(-1); if (private_voutput->bufmgr == NULL) { /* LCOV_EXCL_START */ + wl_proxy_wrapper_destroy(wrapper); TDM_ERR("fail tbm_bufmgr_init"); free(private_voutput); if (error) @@ -2218,6 +2232,11 @@ tdm_client_voutput_set_available_modes(tdm_client_voutput *voutput, const tdm_cl if (count != 0) { private_voutput->available_modes.modes = calloc(count, sizeof(tdm_client_output_mode)); + if (private_voutput->available_modes.modes == NULL) { + private_voutput->available_modes.count = 0; + pthread_mutex_unlock(&private_client->lock); + return TDM_ERROR_OUT_OF_MEMORY; + } memcpy(private_voutput->available_modes.modes, modes, sizeof(tdm_client_output_mode) * count); }