virtual: add set_physical_size protocol 81/184781/2
authorJunkyeong Kim <jk0430.kim@samsung.com>
Mon, 23 Jul 2018 06:03:45 +0000 (15:03 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Mon, 23 Jul 2018 06:05:15 +0000 (15:05 +0900)
Change-Id: I19f67d59f816bd1486f6c1f408416856c03469ac
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
client/tdm_client.c
client/tdm_client.h
haltests/src/tc_tdm_client.cpp
protocol/tdm.xml
src/tdm_server.c

index acd832e..e86f2d2 100644 (file)
@@ -99,6 +99,9 @@ typedef struct _tdm_private_client_voutput {
                tdm_client_output_mode *modes;
        } available_modes;
 
+       unsigned int mmwidth;
+       unsigned int mmheight;
+
        uint32_t msg;
 } tdm_private_client_voutput;
 
@@ -1772,11 +1775,22 @@ tdm_client_voutput_set_available_modes(tdm_client_voutput *voutput, const tdm_cl
 }
 
 tdm_error
-tdm_client_voutput_set_physical_size(tdm_client_voutput *voutput, int mmWidth, int mmHeight)
+tdm_client_voutput_set_physical_size(tdm_client_voutput *voutput, unsigned int mmWidth, unsigned int mmHeight)
 {
+       tdm_private_client_voutput *private_voutput;
+
        TDM_RETURN_VAL_IF_FAIL(voutput != NULL, TDM_ERROR_INVALID_PARAMETER);
-       TDM_RETURN_VAL_IF_FAIL(mmWidth > 0, TDM_ERROR_INVALID_PARAMETER);
-       TDM_RETURN_VAL_IF_FAIL(mmHeight > 0, TDM_ERROR_INVALID_PARAMETER);
+       TDM_RETURN_VAL_IF_FAIL(mmWidth != 0, TDM_ERROR_INVALID_PARAMETER);
+       TDM_RETURN_VAL_IF_FAIL(mmHeight != 0, TDM_ERROR_INVALID_PARAMETER);
+
+       private_voutput = (tdm_private_client_voutput *)voutput;
+
+       if (private_voutput->base.connection == TDM_OUTPUT_CONN_STATUS_CONNECTED)
+               return TDM_ERROR_BAD_REQUEST;
+
+       private_voutput->mmwidth = mmWidth;
+       private_voutput->mmheight = mmHeight;
+       wl_tdm_voutput_set_physical_size(private_voutput->wl_voutput, private_voutput->mmwidth, private_voutput->mmheight);
 
        return TDM_ERROR_NONE;
 }
index 4ffe435..d0512cc 100644 (file)
@@ -442,7 +442,7 @@ tdm_error
 tdm_client_voutput_set_available_modes(tdm_client_voutput *voutput, const tdm_client_output_mode *modes, int count);
 
 tdm_error
-tdm_client_voutput_set_physical_size(tdm_client_voutput *voutput, int mmWidth, int mmHeight);
+tdm_client_voutput_set_physical_size(tdm_client_voutput *voutput, unsigned int mmWidth, unsigned int mmHeight);
 
 tdm_error
 tdm_client_voutput_add_commit_handler(tdm_client_voutput *voutput, tdm_client_voutput_commit_handler *func);
index 1909ff0..c637d88 100644 (file)
@@ -1559,8 +1559,8 @@ TEST_F(TDMVirtualOutput, FailTestSetAvailableModes)
 TEST_F(TDMVirtualOutput, SetPhysicalSize)
 {
        tdm_error ret;
-       int mmWidth = 1234, mmHeight = 1234;
-       
+       unsigned int mmWidth = 1234, mmHeight = 1234;
+
        ret = tdm_client_voutput_set_physical_size(this->voutput, mmWidth, mmHeight);
        ASSERT_EQ(ret, TDM_ERROR_NONE);
 }
@@ -1568,8 +1568,8 @@ TEST_F(TDMVirtualOutput, SetPhysicalSize)
 TEST_F(TDMVirtualOutput, FailTestSetPhysicalSize)
 {
        tdm_error ret;
-       int invalid_mmWidth = -1, invalid_mmHeight = -1;
-       
+       unsigned int invalid_mmWidth = 0, invalid_mmHeight = 0;
+
        ret = tdm_client_voutput_set_physical_size(this->voutput, invalid_mmWidth, invalid_mmHeight);
        ASSERT_EQ(ret, TDM_ERROR_INVALID_PARAMETER);
 }
index 1248920..3db00b1 100644 (file)
             <arg name="name" type="string" summary=""/>
         </request>
 
+        <request name="set_physical_size">
+            <arg name="mmwidth" type="uint" summary=""/>
+            <arg name="mmheight" type="uint" summary=""/>
+        </request>
+
         <request name="connect"/>
 
         <request name="disconnect"/>
index 3ce52cb..cf743fa 100644 (file)
@@ -79,6 +79,9 @@ typedef struct _tdm_server_voutput_info {
                int count;
                tdm_output_mode *modes;
        } available_modes;
+
+       unsigned int mmwidth;
+       unsigned int mmheight;
 } tdm_server_voutput_info;
 
 typedef struct _tdm_server_vblank_info {
@@ -786,6 +789,18 @@ _tdm_voutput_cb_set_available_modes(struct wl_client *client,
 }
 
 static void
+_tdm_voutput_cb_set_physical_size(struct wl_client *client, struct wl_resource *resource,
+                                                                 unsigned int mmwidth, unsigned int mmheight)
+{
+       tdm_server_voutput_info *voutput_info;
+
+       voutput_info = wl_resource_get_user_data(resource);
+
+       voutput_info->mmwidth = mmwidth;
+       voutput_info->mmheight = mmheight;
+}
+
+static void
 _tdm_voutput_cb_connect(struct wl_client *client, struct wl_resource *resource)
 {
        tdm_server_voutput_info *voutput_info;
@@ -811,6 +826,7 @@ _tdm_voutput_cb_disconnect(struct wl_client *client, struct wl_resource *resourc
 static const struct wl_tdm_voutput_interface tdm_voutput_implementation = {
        _tdm_voutput_cb_destroy,
        _tdm_voutput_cb_set_available_modes,
+       _tdm_voutput_cb_set_physical_size,
        _tdm_voutput_cb_connect,
        _tdm_voutput_cb_disconnect
 };