diff options
author | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2011-04-18 12:40:18 +0200 |
---|---|---|
committer | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2011-04-18 12:44:26 +0200 |
commit | 7d86c822d74dd0f646bb6b17af12c5ab8f4e7351 (patch) | |
tree | 73ce9596759ec8a8573bea5dc94a9767ef3ddf8c | |
parent | 2482bf4ef312f54ff4272f70f2a8934b86937219 (diff) |
wfdport: Handle WFD_PORT_MODE_REFRESH_RATE attrib
-rw-r--r-- | src/wfdapi.c | 20 | ||||
-rw-r--r-- | src/wfdport.c | 24 | ||||
-rw-r--r-- | src/wfdport.h | 5 |
3 files changed, 46 insertions, 3 deletions
diff --git a/src/wfdapi.c b/src/wfdapi.c index 0475514..5479310 100644 --- a/src/wfdapi.c +++ b/src/wfdapi.c @@ -501,12 +501,26 @@ wfdGetPortModeAttribi(WFDDevice device_handle, } WFD_API_CALL WFDfloat WFD_APIENTRY -wfdGetPortModeAttribf(WFDDevice device, - WFDPort port, +wfdGetPortModeAttribf(WFDDevice device_handle, + WFDPort port_handle, WFDPortMode mode, WFDPortModeAttrib attrib) WFD_APIEXIT { - return 0.; + struct wfd_device *device; + struct wfd_port *port; + + device = wf_handle_get_object(device_handle, DEVICE_HANDLE); + if (device == NULL) + return 0.0; + wfd_device_set_error(device, WFD_ERROR_NONE); + + port = wf_handle_get_object(port_handle, PORT_HANDLE); + if (port == NULL) { + wfd_device_set_error(device, WFD_ERROR_BAD_HANDLE); + return 0.0; + } + + return wfd_port_mode_get_attribf(device, port, mode, attrib); } WFD_API_CALL void WFD_APIENTRY diff --git a/src/wfdport.c b/src/wfdport.c index 1b86a22..76c38a5 100644 --- a/src/wfdport.c +++ b/src/wfdport.c @@ -499,6 +499,8 @@ wfd_port_mode_get_attribi(struct wfd_device *device, return mode->hdisplay; case WFD_PORT_MODE_HEIGHT: return mode->vdisplay; + case WFD_PORT_MODE_REFRESH_RATE: + return mode->vrefresh; case WFD_PORT_MODE_FLIP_MIRROR_SUPPORT: return WFD_FALSE; case WFD_PORT_MODE_ROTATION_SUPPORT: @@ -513,6 +515,28 @@ wfd_port_mode_get_attribi(struct wfd_device *device, return 0; } +WFDfloat +wfd_port_mode_get_attribf(struct wfd_device *device, + struct wfd_port *port, + WFDPortMode mode_handle, + WFDPortModeAttrib attrib) +{ + drmModeModeInfoPtr mode; + + mode = wf_handle_get_object(mode_handle, MODE_HANDLE); + if (mode == NULL) + return 0; + + switch (attrib) { + case WFD_PORT_MODE_REFRESH_RATE: + return (WFDfloat) mode->vrefresh; + default: + break; + } + + return 0.0; +} + int wfd_port_get_display_data_formats(struct wfd_device *device, struct wfd_port *port, diff --git a/src/wfdport.h b/src/wfdport.h index 64f358f..eaaedc9 100644 --- a/src/wfdport.h +++ b/src/wfdport.h @@ -96,6 +96,11 @@ wfd_port_mode_get_attribi(struct wfd_device *device, struct wfd_port *port, WFDPortMode mode, WFDPortModeAttrib attrib); +WFDfloat +wfd_port_mode_get_attribf(struct wfd_device *device, + struct wfd_port *port, + WFDPortMode mode_handle, + WFDPortModeAttrib attrib); int wfd_port_get_display_data_formats(struct wfd_device *device, |