From: Seunghun Lee Date: Thu, 3 Mar 2022 09:02:49 +0000 (+0900) Subject: backend/tdm: Update output mode X-Git-Tag: accepted/tizen/unified/20220720.034120~102 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=976fd811f38ab83a2cc061c216d36881a10ab362;p=platform%2Fcore%2Fuifw%2Flibds-tizen.git backend/tdm: Update output mode Change-Id: I1c23428392249f74376dc40aae5da89011165b17 --- diff --git a/src/libds/backend/tdm/output.c b/src/libds/backend/tdm/output.c index d3317f3..06edbf6 100644 --- a/src/libds/backend/tdm/output.c +++ b/src/libds/backend/tdm/output.c @@ -10,6 +10,7 @@ static const struct ds_output_interface tdm_output_iface; static bool tdm_output_init_modes(struct ds_tdm_output *output); static void tdm_output_destroy(struct ds_tdm_output *output); static void tdm_output_init_hwc(struct ds_tdm_output *output); +static bool tdm_output_update_mode(struct ds_tdm_output *output); struct ds_tdm_output * create_tdm_output(struct ds_tdm_backend *tdm, tdm_output *tdm_output) @@ -188,6 +189,13 @@ tdm_output_iface_commit(struct ds_output *ds_output) output = tdm_output_from_output(ds_output); + if (ds_output->pending.committed & DS_OUTPUT_STATE_MODE) { + if (!tdm_output_update_mode(output)) { + ds_err("Could not update TDM mode"); + return false; + } + } + ds_buffer = ds_output->pending.buffer; buffer = get_or_create_tdm_buffer(output->backend, ds_buffer); if (!buffer) @@ -221,7 +229,8 @@ tdm_output_iface_commit(struct ds_output *ds_output) return false; } - err = tdm_hwc_commit(output->tdm.hwc, 0, tdm_output_hwc_commit_handler, output); + err = tdm_hwc_commit(output->tdm.hwc, 0, tdm_output_hwc_commit_handler, + output); if (err != TDM_ERROR_NONE) { ds_err("Could not hwc commit"); ds_buffer_unlock(buffer->buffer); @@ -295,7 +304,7 @@ tdm_output_init_modes(struct ds_tdm_output *output) if (tdm_mode->type & TDM_OUTPUT_MODE_TYPE_PREFERRED) mode->base.preferred = true; - ds_inf(" %dx%d@%d %s", mode->base.width, mode->base.height, + ds_dbg(" %dx%d@%d %s", mode->base.width, mode->base.height, mode->base.refresh, mode->base.preferred ? "(preferred)" : ""); @@ -303,14 +312,6 @@ tdm_output_init_modes(struct ds_tdm_output *output) wl_list_insert(&output->base.modes, &mode->base.link); else wl_list_insert(output->base.modes.prev, &mode->base.link); - - // FIXME - if (mode->base.preferred) { - err = tdm_output_set_mode(output->tdm.output, tdm_mode); - if (err != TDM_ERROR_NONE) { - ds_err("Could not set mode"); - } - } } return true; @@ -327,3 +328,21 @@ tdm_output_init_hwc(struct ds_tdm_output *output) return; } } + +static bool +tdm_output_update_mode(struct ds_tdm_output *output) +{ + const struct ds_tdm_output_mode *mode; + tdm_error err; + + mode = (struct ds_tdm_output_mode *)output->base.pending.mode; + + ds_inf("TDM output(%p) set mode %dx%d %d mHz", output, + mode->base.width, mode->base.height, mode->base.refresh); + + err = tdm_output_set_mode(output->tdm.output, mode->tdm_mode); + if (err != TDM_ERROR_NONE) + return false; + + return true; +}