tdm_client_output_mode *modes;
} available_modes;
+ unsigned int mmwidth;
+ unsigned int mmheight;
+
uint32_t msg;
} tdm_private_client_voutput;
}
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;
}
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);
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);
}
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);
}
<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"/>
int count;
tdm_output_mode *modes;
} available_modes;
+
+ unsigned int mmwidth;
+ unsigned int mmheight;
} tdm_server_voutput_info;
typedef struct _tdm_server_vblank_info {
}
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;
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
};