summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2011-04-18 12:40:18 +0200
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2011-04-18 12:44:26 +0200
commit7d86c822d74dd0f646bb6b17af12c5ab8f4e7351 (patch)
tree73ce9596759ec8a8573bea5dc94a9767ef3ddf8c
parent2482bf4ef312f54ff4272f70f2a8934b86937219 (diff)
wfdport: Handle WFD_PORT_MODE_REFRESH_RATE attrib
-rw-r--r--src/wfdapi.c20
-rw-r--r--src/wfdport.c24
-rw-r--r--src/wfdport.h5
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,