From 77aaf72a8ef5ff9d32b1be594659201d59ccf2e1 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Mon, 23 Jul 2018 15:03:45 +0900 Subject: [PATCH] virtual: add set_physical_size protocol Change-Id: I19f67d59f816bd1486f6c1f408416856c03469ac Signed-off-by: Junkyeong Kim --- client/tdm_client.c | 20 +++++++++++++++++--- client/tdm_client.h | 2 +- haltests/src/tc_tdm_client.cpp | 8 ++++---- protocol/tdm.xml | 5 +++++ src/tdm_server.c | 16 ++++++++++++++++ 5 files changed, 43 insertions(+), 8 deletions(-) diff --git a/client/tdm_client.c b/client/tdm_client.c index acd832e..e86f2d2 100644 --- a/client/tdm_client.c +++ b/client/tdm_client.c @@ -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; } diff --git a/client/tdm_client.h b/client/tdm_client.h index 4ffe435..d0512cc 100644 --- a/client/tdm_client.h +++ b/client/tdm_client.h @@ -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); diff --git a/haltests/src/tc_tdm_client.cpp b/haltests/src/tc_tdm_client.cpp index 1909ff0..c637d88 100644 --- a/haltests/src/tc_tdm_client.cpp +++ b/haltests/src/tc_tdm_client.cpp @@ -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); } diff --git a/protocol/tdm.xml b/protocol/tdm.xml index 1248920..3db00b1 100644 --- a/protocol/tdm.xml +++ b/protocol/tdm.xml @@ -96,6 +96,11 @@ + + + + + diff --git a/src/tdm_server.c b/src/tdm_server.c index 3ce52cb..cf743fa 100644 --- a/src/tdm_server.c +++ b/src/tdm_server.c @@ -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 }; -- 2.7.4