X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Ftdm_display.c;h=45ccdf2c811431127fd98e6198f8e6eba88f3200;hb=547570439aa623b2f46197c3362e65f0af93dec1;hp=9f66167a62d201c246816aa98a8a5d44b3bbe592;hpb=d6ada65f4863702f6d7d5c1080b408e332fb8923;p=platform%2Fcore%2Fuifw%2Flibtdm.git diff --git a/src/tdm_display.c b/src/tdm_display.c index 9f66167..45ccdf2 100644 --- a/src/tdm_display.c +++ b/src/tdm_display.c @@ -634,18 +634,50 @@ tdm_display_find_output(tdm_display *dpy, const char *name, tdm_error *error) { tdm_private_module *private_module = NULL; tdm_private_output *private_output = NULL; + tdm_private_output *mode_setted_output = NULL; + tdm_private_output *connected_output = NULL; + unsigned int find_primary = 0; DISPLAY_FUNC_ENTRY_ERROR(); - if (!strncasecmp(name, "primary", 7) || !strncasecmp(name, "default", 7)) { - return tdm_display_get_output(dpy, 0, error); - } + if (!strncasecmp(name, "primary", 7) || !strncasecmp(name, "default", 7)) + find_primary = 1; _pthread_mutex_lock(&private_display->lock); if (error) *error = TDM_ERROR_NONE; + if (find_primary) { + LIST_FOR_EACH_ENTRY(private_module, &private_display->module_list, link) { + LIST_FOR_EACH_ENTRY(private_output, &private_module->output_list, link) { + if (private_output->caps.status == TDM_OUTPUT_CONN_STATUS_CONNECTED && !connected_output) + connected_output = private_output; + else if (private_output->caps.status == TDM_OUTPUT_CONN_STATUS_MODE_SETTED && !mode_setted_output) + mode_setted_output = private_output; + } + } + + if (mode_setted_output) { + _pthread_mutex_unlock(&private_display->lock); + return mode_setted_output; + } + + if (connected_output) { + _pthread_mutex_unlock(&private_display->lock); + return connected_output; + } + + LIST_FOR_EACH_ENTRY(private_module, &private_display->module_list, link) { + LIST_FOR_EACH_ENTRY(private_output, &private_module->output_list, link) { + if (private_output->index == 0) { + _pthread_mutex_unlock(&private_display->lock); + return private_output; + } + } + } + } + LIST_FOR_EACH_ENTRY(private_module, &private_display->module_list, link) { LIST_FOR_EACH_ENTRY(private_output, &private_module->output_list, link) { if (strncmp(private_output->caps.model, name, TDM_NAME_LEN))