X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Ftdm_helper.c;h=0c8b336cd19078e4f7570e4fec30b474c507fd96;hb=60ea919f68912ac1fec69f1f78d743a055970b42;hp=6e2c5cfbfc884aa221cd66fd4385de207f57f23f;hpb=a03f1283751930597b6c9f2fe43bffef288d6ead;p=platform%2Fcore%2Fuifw%2Flibtdm.git diff --git a/src/tdm_helper.c b/src/tdm_helper.c index 6e2c5cf..0c8b336 100644 --- a/src/tdm_helper.c +++ b/src/tdm_helper.c @@ -9,7 +9,7 @@ * Taeheon Kim , * YoungJun Cho , * SooChan Lim , - * Boram Park + * Boram Park * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the @@ -44,7 +44,7 @@ #define PNG_DEPTH 8 -static const char *file_exts[2] = {"png", "yuv"}; +static const char *file_exts[2] = {"png", "raw"}; int tdm_dump_enable; char *tdm_debug_dump_dir; @@ -291,6 +291,11 @@ tdm_helper_dump_buffer(tbm_surface_h buffer, const char *file) strncat(p, ext, 3); p += 3; *p = '\0'; + } else { + len = strnlen(file, TDM_PATH_LEN - 1); + strncat(p, file, len); + p += len; + *p = '\0'; } tdm_helper_get_buffer_full_size(buffer, &bw, &bh); @@ -326,17 +331,15 @@ tdm_helper_dump_buffer(tbm_surface_h buffer, const char *file) info.planes[1].size, NULL, 0); break; - case TBM_FORMAT_YUYV: - case TBM_FORMAT_UYVY: + default: _tdm_helper_dump_raw((const char*)temp, info.planes[0].ptr, - info.planes[0].size, NULL, 0, - NULL, 0); + info.planes[0].size, + info.planes[1].ptr, + info.planes[1].size, + info.planes[2].ptr, + info.planes[2].size); break; - default: - TDM_ERR("can't dump %c%c%c%c buffer", FOURCC_STR(info.format)); - tbm_surface_unmap(buffer); - return; } tbm_surface_unmap(buffer); @@ -383,22 +386,6 @@ tdm_helper_clear_buffer_color(tbm_surface_h buffer, tdm_pos *pos, unsigned int c memset((char*)info.planes[0].ptr, 0x10, info.planes[0].stride * info.height); memset((char*)info.planes[1].ptr, 0x80, info.planes[1].stride * (info.height >> 1)); break; - case TBM_FORMAT_YUYV: { - int *ibuf = (int*)info.planes[0].ptr; - int i, size = info.planes[0].stride * info.height / 4; - - for (i = 0 ; i < size ; i++) - ibuf[i] = 0x10801080; - } - break; - case TBM_FORMAT_UYVY: { - int *ibuf = (int*)info.planes[0].ptr; - int i, size = info.planes[0].stride * info.height / 4; - - for (i = 0 ; i < size ; i++) - ibuf[i] = 0x80108010; /* YUYV -> 0xVYUY */ - } - break; default: TDM_ERR("can't clear %c%c%c%c buffer", FOURCC_STR(info.format)); break; @@ -754,7 +741,7 @@ tdm_helper_capture_output(tdm_output *output, tbm_surface_h dst_buffer, } static char * -_tdm_helper_get_backend_information(tdm_private_backend *private_backend, char *reply, int *len) +_tdm_helper_get_backend_information(tdm_private_module *private_module, char *reply, int *len) { tdm_backend_module *module_data; tdm_func_output *func_output; @@ -766,11 +753,11 @@ _tdm_helper_get_backend_information(tdm_private_backend *private_backend, char * tdm_error ret; int i; - func_output = &private_backend->func_output; - func_layer = &private_backend->func_layer; + func_output = &private_module->func_output; + func_layer = &private_module->func_layer; /* module information */ - module_data = private_backend->module_data; + module_data = private_module->module_data; TDM_SNPRINTF(reply, len, "['%s' backend information]\n", module_data->name); TDM_SNPRINTF(reply, len, "vendor: %s\n", module_data->vendor); TDM_SNPRINTF(reply, len, "version: %d.%d\n\n", @@ -782,7 +769,7 @@ _tdm_helper_get_backend_information(tdm_private_backend *private_backend, char * TDM_SNPRINTF(reply, len, "--------------------------------------------------------------------------------------------\n"); TDM_SNPRINTF(reply, len, "idx maker model name type status dpms subpixel align_w min max phy(mm)\n"); TDM_SNPRINTF(reply, len, "--------------------------------------------------------------------------------------------\n"); - LIST_FOR_EACH_ENTRY(private_output, &private_backend->output_list, link) { + LIST_FOR_EACH_ENTRY(private_output, &private_module->output_list, link) { TDM_SNPRINTF(reply, len, "%d %s %s %s %s %s %s %u %d %dx%d %dx%d %ux%u\n", private_output->index, private_output->caps.maker, private_output->caps.model, private_output->caps.name, @@ -866,7 +853,7 @@ _tdm_helper_get_backend_information(tdm_private_backend *private_backend, char * TDM_SNPRINTF(reply, len, "-----------------------------------------------------------------------\n"); TDM_SNPRINTF(reply, len, "idx output zpos buf format size crop geometry transform\n"); TDM_SNPRINTF(reply, len, "-----------------------------------------------------------------------\n"); - LIST_FOR_EACH_ENTRY(private_output, &private_backend->output_list, link) { + LIST_FOR_EACH_ENTRY(private_output, &private_module->output_list, link) { LIST_FOR_EACH_ENTRY(private_layer, &private_output->layer_list, link) { if (!private_layer->usable) { tdm_info_layer info; @@ -963,31 +950,31 @@ _tdm_helper_get_backend_information(tdm_private_backend *private_backend, char * } TDM_SNPRINTF(reply, len, "\n"); - if (private_backend->capabilities & TDM_DISPLAY_CAPABILITY_PP) { + if (private_module->capabilities & TDM_DISPLAY_CAPABILITY_PP) { const char *sep = ""; TDM_SNPRINTF(reply, len, "['%s' backend PP information]\n", module_data->name); TDM_SNPRINTF(reply, len, "caps\t: "); - tdm_pp_caps_str(private_backend->caps_pp.capabilities, &reply, len); + tdm_pp_caps_str(private_module->caps_pp.capabilities, &reply, len); TDM_SNPRINTF(reply, len, "\n"); TDM_SNPRINTF(reply, len, "formats\t: "); - for (i = 0; i < private_backend->caps_pp.format_count; i++) { - if (private_backend->caps_pp.formats[i] == 0) + for (i = 0; i < private_module->caps_pp.format_count; i++) { + if (private_module->caps_pp.formats[i] == 0) continue; - TDM_SNPRINTF(reply, len, "%s%c%c%c%c", sep, FOURCC_STR(private_backend->caps_pp.formats[i])); + TDM_SNPRINTF(reply, len, "%s%c%c%c%c", sep, FOURCC_STR(private_module->caps_pp.formats[i])); sep = ","; } TDM_SNPRINTF(reply, len, "\n"); TDM_SNPRINTF(reply, len, "size\t: min(%dx%d) max(%dx%d) align_w(%d)\n", - TDM_FRONT_VALUE(private_backend->caps_pp.min_w), - TDM_FRONT_VALUE(private_backend->caps_pp.min_h), - TDM_FRONT_VALUE(private_backend->caps_pp.max_w), - TDM_FRONT_VALUE(private_backend->caps_pp.max_h), - TDM_FRONT_VALUE(private_backend->caps_pp.preferred_align)); - if (!LIST_IS_EMPTY(&private_backend->pp_list)) { + TDM_FRONT_VALUE(private_module->caps_pp.min_w), + TDM_FRONT_VALUE(private_module->caps_pp.min_h), + TDM_FRONT_VALUE(private_module->caps_pp.max_w), + TDM_FRONT_VALUE(private_module->caps_pp.max_h), + TDM_FRONT_VALUE(private_module->caps_pp.preferred_align)); + if (!LIST_IS_EMPTY(&private_module->pp_list)) { TDM_SNPRINTF(reply, len, "-------------------------------------------------------------\n"); TDM_SNPRINTF(reply, len, "src(format size crop) | dst(format size crop) | transform\n"); TDM_SNPRINTF(reply, len, "-------------------------------------------------------------\n"); - LIST_FOR_EACH_ENTRY(private_pp, &private_backend->pp_list, link) { + LIST_FOR_EACH_ENTRY(private_pp, &private_module->pp_list, link) { TDM_SNPRINTF(reply, len, "%c%c%c%c %ux%u %ux%u+%u+%u | %c%c%c%c %ux%u %ux%u+%u+%u | %s\n", FOURCC_STR(private_pp->info.src_config.format), private_pp->info.src_config.size.h, @@ -1007,31 +994,31 @@ _tdm_helper_get_backend_information(tdm_private_backend *private_backend, char * } TDM_SNPRINTF(reply, len, "\n"); - if (private_backend->capabilities & TDM_DISPLAY_CAPABILITY_CAPTURE) { + if (private_module->capabilities & TDM_DISPLAY_CAPABILITY_CAPTURE) { const char *sep = ""; TDM_SNPRINTF(reply, len, "['%s' backend capture information]\n", module_data->name); TDM_SNPRINTF(reply, len, "caps\t: "); - tdm_capture_caps_str(private_backend->caps_capture.capabilities, &reply, len); + tdm_capture_caps_str(private_module->caps_capture.capabilities, &reply, len); TDM_SNPRINTF(reply, len, "\n"); TDM_SNPRINTF(reply, len, "formats\t: "); - for (i = 0; i < private_backend->caps_capture.format_count; i++) { - if (private_backend->caps_capture.formats[i] == 0) + for (i = 0; i < private_module->caps_capture.format_count; i++) { + if (private_module->caps_capture.formats[i] == 0) continue; - TDM_SNPRINTF(reply, len, "%s%c%c%c%c", sep, FOURCC_STR(private_backend->caps_capture.formats[i])); + TDM_SNPRINTF(reply, len, "%s%c%c%c%c", sep, FOURCC_STR(private_module->caps_capture.formats[i])); sep = ","; } TDM_SNPRINTF(reply, len, "\n"); TDM_SNPRINTF(reply, len, "size\t: min(%dx%d) max(%dx%d) align_w(%d)\n", - TDM_FRONT_VALUE(private_backend->caps_capture.min_w), - TDM_FRONT_VALUE(private_backend->caps_capture.min_h), - TDM_FRONT_VALUE(private_backend->caps_capture.max_w), - TDM_FRONT_VALUE(private_backend->caps_capture.max_h), - TDM_FRONT_VALUE(private_backend->caps_capture.preferred_align)); - if (!LIST_IS_EMPTY(&private_backend->capture_list)) { + TDM_FRONT_VALUE(private_module->caps_capture.min_w), + TDM_FRONT_VALUE(private_module->caps_capture.min_h), + TDM_FRONT_VALUE(private_module->caps_capture.max_w), + TDM_FRONT_VALUE(private_module->caps_capture.max_h), + TDM_FRONT_VALUE(private_module->caps_capture.preferred_align)); + if (!LIST_IS_EMPTY(&private_module->capture_list)) { TDM_SNPRINTF(reply, len, "-----------------------------------\n"); TDM_SNPRINTF(reply, len, "dst(format size crop) | transform\n"); TDM_SNPRINTF(reply, len, "-----------------------------------\n"); - LIST_FOR_EACH_ENTRY(private_capture, &private_backend->capture_list, link) { + LIST_FOR_EACH_ENTRY(private_capture, &private_module->capture_list, link) { TDM_SNPRINTF(reply, len, "%c%c%c%c %ux%u %ux%u+%u+%u | %s\n", FOURCC_STR(private_capture->info.dst_config.format), private_capture->info.dst_config.size.h, @@ -1052,7 +1039,7 @@ EXTERN void tdm_helper_get_display_information(tdm_display *dpy, char *reply, int *len) { tdm_private_display *private_display; - tdm_private_backend *private_backend = NULL; + tdm_private_module *private_module = NULL; TDM_DBG_RETURN_IF_FAIL(dpy != NULL); @@ -1060,8 +1047,8 @@ tdm_helper_get_display_information(tdm_display *dpy, char *reply, int *len) _pthread_mutex_lock(&private_display->lock); - LIST_FOR_EACH_ENTRY(private_backend, &private_display->backend_list, link) { - reply = _tdm_helper_get_backend_information(private_backend, reply, len); + LIST_FOR_EACH_ENTRY(private_module, &private_display->module_list, link) { + reply = _tdm_helper_get_backend_information(private_module, reply, len); } _pthread_mutex_unlock(&private_display->lock); @@ -1087,3 +1074,12 @@ tdm_helper_output_commit_per_vblank_enabled(tdm_output *output) return !!private_output->commit_per_vblank; } +EXTERN unsigned int +tdm_helper_output_vblank_timer_expired(tdm_output *output) +{ + tdm_private_output *private_output = output; + + TDM_RETURN_VAL_IF_FAIL(private_output != NULL, -1); + + return private_output->vblank_timeout_timer_expired; +}