[mutter] kms/impl-device: Make property ID lookup also handle parsing
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] kms/impl-device: Make property ID lookup also handle parsing
- Date: Fri, 22 Jan 2021 17:08:27 +0000 (UTC)
commit 1b3e8b4a277311ea05bc83adafccd8b253ba9f83
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Tue Jul 14 14:58:47 2020 +0200
kms/impl-device: Make property ID lookup also handle parsing
Values may need to be processed and parsed in custom ways; make this
possible via the property table infrastructure using a callback.
Will be used for e.g. parsing rotation and formats.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1488>
src/backends/native/meta-kms-connector.c | 4 +++-
src/backends/native/meta-kms-crtc.c | 4 +++-
src/backends/native/meta-kms-impl-device.c | 11 ++++++++++-
src/backends/native/meta-kms-impl-device.h | 15 ++++++++++++---
src/backends/native/meta-kms-plane.c | 4 +++-
5 files changed, 31 insertions(+), 7 deletions(-)
---
diff --git a/src/backends/native/meta-kms-connector.c b/src/backends/native/meta-kms-connector.c
index f0623715d2..c25b9e8172 100644
--- a/src/backends/native/meta-kms-connector.c
+++ b/src/backends/native/meta-kms-connector.c
@@ -612,9 +612,11 @@ init_properties (MetaKmsConnector *connector,
meta_kms_impl_device_init_prop_table (impl_device,
drm_connector->props,
+ drm_connector->prop_values,
drm_connector->count_props,
connector->prop_table.props,
- META_KMS_CONNECTOR_N_PROPS);
+ META_KMS_CONNECTOR_N_PROPS,
+ NULL);
}
static char *
diff --git a/src/backends/native/meta-kms-crtc.c b/src/backends/native/meta-kms-crtc.c
index 2b04aa6271..c4b71c50eb 100644
--- a/src/backends/native/meta-kms-crtc.c
+++ b/src/backends/native/meta-kms-crtc.c
@@ -266,9 +266,11 @@ init_proporties (MetaKmsCrtc *crtc,
meta_kms_impl_device_init_prop_table (impl_device,
drm_props->props,
+ drm_props->prop_values,
drm_props->count_props,
crtc->prop_table.props,
- META_KMS_CRTC_N_PROPS);
+ META_KMS_CRTC_N_PROPS,
+ NULL);
drmModeFreeObjectProperties (drm_props);
}
diff --git a/src/backends/native/meta-kms-impl-device.c b/src/backends/native/meta-kms-impl-device.c
index 54ec9906a5..ff824e16bd 100644
--- a/src/backends/native/meta-kms-impl-device.c
+++ b/src/backends/native/meta-kms-impl-device.c
@@ -360,9 +360,11 @@ find_prop (MetaKmsProp *props,
void
meta_kms_impl_device_init_prop_table (MetaKmsImplDevice *impl_device,
uint32_t *drm_props,
+ uint64_t *drm_prop_values,
int n_drm_props,
MetaKmsProp *props,
- int n_props)
+ int n_props,
+ gpointer user_data)
{
int fd;
uint32_t i;
@@ -396,6 +398,13 @@ meta_kms_impl_device_init_prop_table (MetaKmsImplDevice *impl_device,
prop->prop_id = drm_props[i];
+ if (prop->parse)
+ {
+ prop->parse (impl_device, prop,
+ drm_prop, drm_prop_values[i],
+ user_data);
+ }
+
drmModeFreeProperty (drm_prop);
}
}
diff --git a/src/backends/native/meta-kms-impl-device.h b/src/backends/native/meta-kms-impl-device.h
index 861c79b6e4..1545439404 100644
--- a/src/backends/native/meta-kms-impl-device.h
+++ b/src/backends/native/meta-kms-impl-device.h
@@ -35,13 +35,20 @@ typedef struct _MetaKmsDeviceCaps
uint64_t cursor_height;
} MetaKmsDeviceCaps;
-typedef struct _MetaKmsProp
+typedef struct _MetaKmsProp MetaKmsProp;
+
+struct _MetaKmsProp
{
const char *name;
uint32_t type;
+ void (* parse) (MetaKmsImplDevice *impl_device,
+ MetaKmsProp *prop,
+ drmModePropertyPtr drm_prop,
+ uint64_t value,
+ gpointer user_data);
uint32_t prop_id;
-} MetaKmsProp;
+};
#define META_TYPE_KMS_IMPL_DEVICE (meta_kms_impl_device_get_type ())
G_DECLARE_FINAL_TYPE (MetaKmsImplDevice, meta_kms_impl_device,
@@ -87,9 +94,11 @@ MetaKmsPlane * meta_kms_impl_device_add_fake_plane (MetaKmsImplDevice *impl_devi
void meta_kms_impl_device_init_prop_table (MetaKmsImplDevice *impl_device,
uint32_t *drm_props,
+ uint64_t *drm_props_values,
int n_drm_props,
MetaKmsProp *props,
- int n_props);
+ int n_props,
+ gpointer user_data);
int meta_kms_impl_device_close (MetaKmsImplDevice *impl_device);
diff --git a/src/backends/native/meta-kms-plane.c b/src/backends/native/meta-kms-plane.c
index 8348f37572..e2f50ac466 100644
--- a/src/backends/native/meta-kms-plane.c
+++ b/src/backends/native/meta-kms-plane.c
@@ -454,9 +454,11 @@ init_properties (MetaKmsPlane *plane,
meta_kms_impl_device_init_prop_table (impl_device,
drm_plane_props->props,
+ drm_plane_props->prop_values,
drm_plane_props->count_props,
plane->prop_table.props,
- META_KMS_PLANE_N_PROPS);
+ META_KMS_PLANE_N_PROPS,
+ NULL);
}
MetaKmsPlane *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]