virtual (client): Use 'wl_array' when client sends available modes to server.
[platform/core/uifw/libtdm.git] / client / tdm_client.c
index d3e8b47..65c37da 100644 (file)
@@ -1889,6 +1889,25 @@ _tdm_client_voutput_send_available_formats(tdm_private_client_voutput *private_v
                *format = private_voutput->available_formats.formats[i];
        }
        wl_tdm_voutput_set_available_formats(private_voutput->wl_voutput, &array);
+        wl_array_release(&array);
+}
+
+void
+_tdm_client_voutput_send_available_modes(tdm_private_client_voutput *private_voutput)
+{
+       tdm_client_output_mode *modes, *mode;
+       struct wl_array array;
+       int i, size;
+
+       modes = private_voutput->available_modes.modes;
+       size = sizeof(tdm_client_output_mode);
+
+       wl_array_init(&array);
+       for (i = 0; i < private_voutput->available_modes.count; i++) {
+               mode = wl_array_add(&array, size);
+               memcpy(mode, &modes[i], size);
+       }
+       wl_tdm_voutput_set_available_modes(private_voutput->wl_voutput, &array);
        wl_array_release(&array);
 }
 
@@ -1897,8 +1916,6 @@ tdm_client_output_connect(tdm_client_output *output)
 {
        tdm_private_client_output *private_output;
        tdm_private_client_voutput *private_voutput;
-       tdm_client_output_mode *modes;
-       int i;
 
        TDM_RETURN_VAL_IF_FAIL(output != NULL, TDM_ERROR_INVALID_PARAMETER);
 
@@ -1910,19 +1927,7 @@ tdm_client_output_connect(tdm_client_output *output)
 
        private_output->connection = TDM_OUTPUT_CONN_STATUS_CONNECTED;
 
-       modes = private_voutput->available_modes.modes;
-       for (i = 0; i < private_voutput->available_modes.count; i++) {
-               wl_tdm_voutput_set_available_modes(private_voutput->wl_voutput, i,
-                                                                                  modes[i].clock, modes[i].hdisplay,
-                                                                                  modes[i].hsync_start, modes[i].hsync_end,
-                                                                                  modes[i].htotal, modes[i].hskew,
-                                                                                  modes[i].vdisplay, modes[i].vsync_start,
-                                                                                  modes[i].vsync_end, modes[i].vtotal,
-                                                                                  modes[i].vscan, modes[i].vrefresh,
-                                                                                  modes[i].flags, modes[i].type,
-                                                                                  modes[i].name);
-       }
-
+       _tdm_client_voutput_send_available_modes(private_voutput);
        _tdm_client_voutput_send_available_formats(private_voutput);
 
        wl_tdm_voutput_set_physical_size(private_voutput->wl_voutput, private_voutput->mmwidth, private_voutput->mmheight);