set correct mode info 33/165333/1
authorJunkyeong Kim <jk0430.kim@samsung.com>
Thu, 28 Dec 2017 08:16:40 +0000 (17:16 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Thu, 28 Dec 2017 08:16:43 +0000 (17:16 +0900)
Change-Id: If2e0a1210af27a6d441aea32ec83c23caab9d047
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
src/tdm_nexell_display.c

index 0f17866bea423a7c388829a04d72d33fdefdeed6..c5959ec7479b3977cc54844e8832b00bcbef53fd 100644 (file)
@@ -1096,8 +1096,40 @@ nexell_output_get_capability(tdm_output *output, tdm_caps_output *caps)
                TDM_ERR("alloc failed\n");
                goto failed_get;
        }
-       for (i = 0; i < caps->mode_count; i++)
+
+       if (caps->mode_count != output_data->count_modes) {
+               drmModeModeInfoPtr new_drm_modes;
+               tdm_output_mode *new_output_modes;
+
+               new_drm_modes = calloc(connector->count_modes,
+                                               sizeof(drmModeModeInfo));
+               if (!new_drm_modes) {
+                       ret = TDM_ERROR_OUT_OF_MEMORY;
+                       TDM_ERR("alloc failed drm_modes\n");
+                       goto failed_get;
+               }
+               new_output_modes = calloc(connector->count_modes,
+                                               sizeof(tdm_output_mode));
+               if (!new_output_modes) {
+                       ret = TDM_ERROR_OUT_OF_MEMORY;
+                       TDM_ERR("alloc failed output_modes\n");
+                       free(new_drm_modes);
+                       goto failed_get;
+               }
+               free(output_data->drm_modes);
+               free(output_data->output_modes);
+
+               output_data->drm_modes = new_drm_modes;
+               output_data->output_modes = new_output_modes;
+               output_data->count_modes = caps->mode_count;
+       }
+
+       for (i = 0; i < caps->mode_count; i++) {
+               output_data->drm_modes[i] = connector->modes[i];
+               _tdm_nexell_display_to_tdm_mode(&output_data->drm_modes[i],
+                                                                               &output_data->output_modes[i]);
                caps->modes[i] = output_data->output_modes[i];
+       }
 
        caps->mmWidth = connector->mmWidth;
        caps->mmHeight = connector->mmHeight;