[mutter] kms/impl-device: Make type derivable
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] kms/impl-device: Make type derivable
- Date: Fri, 22 Jan 2021 17:08:27 +0000 (UTC)
commit 1959a872b8bd5e9cd451cf5328c896c84cbfc778
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Thu Jul 16 17:55:39 2020 +0200
kms/impl-device: Make type derivable
This means moving things from the private struct _MetaKmsImplDevice into
a instance private struct. No other changes made.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1488>
src/backends/native/meta-kms-impl-device.c | 197 +++++++++++++++++++----------
src/backends/native/meta-kms-impl-device.h | 11 +-
2 files changed, 137 insertions(+), 71 deletions(-)
---
diff --git a/src/backends/native/meta-kms-impl-device.c b/src/backends/native/meta-kms-impl-device.c
index ff824e16bd..3f5833b316 100644
--- a/src/backends/native/meta-kms-impl-device.c
+++ b/src/backends/native/meta-kms-impl-device.c
@@ -38,10 +38,8 @@
#include "meta-default-modes.h"
-struct _MetaKmsImplDevice
+typedef struct _MetaKmsImplDevicePrivate
{
- GObject parent;
-
MetaKmsDevice *device;
MetaKmsImpl *impl;
@@ -58,56 +56,81 @@ struct _MetaKmsImplDevice
MetaKmsDeviceCaps caps;
GList *fallback_modes;
-};
+} MetaKmsImplDevicePrivate;
-G_DEFINE_TYPE (MetaKmsImplDevice, meta_kms_impl_device, G_TYPE_OBJECT)
+G_DEFINE_TYPE_WITH_PRIVATE (MetaKmsImplDevice, meta_kms_impl_device,
+ G_TYPE_OBJECT)
MetaKmsDevice *
meta_kms_impl_device_get_device (MetaKmsImplDevice *impl_device)
{
- return impl_device->device;
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
+
+ return priv->device;
}
GList *
meta_kms_impl_device_copy_connectors (MetaKmsImplDevice *impl_device)
{
- return g_list_copy (impl_device->connectors);
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
+
+ return g_list_copy (priv->connectors);
}
GList *
meta_kms_impl_device_copy_crtcs (MetaKmsImplDevice *impl_device)
{
- return g_list_copy (impl_device->crtcs);
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
+
+ return g_list_copy (priv->crtcs);
}
GList *
meta_kms_impl_device_copy_planes (MetaKmsImplDevice *impl_device)
{
- return g_list_copy (impl_device->planes);
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
+
+ return g_list_copy (priv->planes);
}
const MetaKmsDeviceCaps *
meta_kms_impl_device_get_caps (MetaKmsImplDevice *impl_device)
{
- return &impl_device->caps;
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
+
+ return &priv->caps;
}
GList *
meta_kms_impl_device_copy_fallback_modes (MetaKmsImplDevice *impl_device)
{
- return g_list_copy (impl_device->fallback_modes);
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
+
+ return g_list_copy (priv->fallback_modes);
}
const char *
meta_kms_impl_device_get_driver_name (MetaKmsImplDevice *impl_device)
{
- return impl_device->driver_name;
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
+
+ return priv->driver_name;
}
const char *
meta_kms_impl_device_get_driver_description (MetaKmsImplDevice *impl_device)
{
- return impl_device->driver_description;
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
+
+ return priv->driver_description;
}
static void
@@ -131,9 +154,12 @@ gboolean
meta_kms_impl_device_dispatch (MetaKmsImplDevice *impl_device,
GError **error)
{
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
+
drmEventContext drm_event_context;
- meta_assert_in_kms_impl (meta_kms_impl_get_kms (impl_device->impl));
+ meta_assert_in_kms_impl (meta_kms_impl_get_kms (priv->impl));
drm_event_context = (drmEventContext) { 0 };
drm_event_context.version = 2;
@@ -141,7 +167,7 @@ meta_kms_impl_device_dispatch (MetaKmsImplDevice *impl_device,
while (TRUE)
{
- if (drmHandleEvent (impl_device->fd, &drm_event_context) != 0)
+ if (drmHandleEvent (priv->fd, &drm_event_context) != 0)
{
struct pollfd pfd;
int ret;
@@ -154,7 +180,7 @@ meta_kms_impl_device_dispatch (MetaKmsImplDevice *impl_device,
return FALSE;
}
- pfd.fd = impl_device->fd;
+ pfd.fd = priv->fd;
pfd.events = POLL_IN | POLL_ERR;
do
{
@@ -189,15 +215,17 @@ meta_kms_impl_device_find_property (MetaKmsImplDevice *impl_device,
const char *prop_name,
int *out_idx)
{
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
unsigned int i;
- meta_assert_in_kms_impl (meta_kms_impl_get_kms (impl_device->impl));
+ meta_assert_in_kms_impl (meta_kms_impl_get_kms (priv->impl));
for (i = 0; i < props->count_props; i++)
{
drmModePropertyPtr prop;
- prop = drmModeGetProperty (impl_device->fd, props->props[i]);
+ prop = drmModeGetProperty (priv->fd, props->props[i]);
if (!prop)
continue;
@@ -216,15 +244,17 @@ meta_kms_impl_device_find_property (MetaKmsImplDevice *impl_device,
static void
init_caps (MetaKmsImplDevice *impl_device)
{
- int fd = impl_device->fd;
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
+ int fd = priv->fd;
uint64_t cursor_width, cursor_height;
if (drmGetCap (fd, DRM_CAP_CURSOR_WIDTH, &cursor_width) == 0 &&
drmGetCap (fd, DRM_CAP_CURSOR_HEIGHT, &cursor_height) == 0)
{
- impl_device->caps.has_cursor_size = TRUE;
- impl_device->caps.cursor_width = cursor_width;
- impl_device->caps.cursor_height = cursor_height;
+ priv->caps.has_cursor_size = TRUE;
+ priv->caps.cursor_width = cursor_width;
+ priv->caps.cursor_height = cursor_height;
}
}
@@ -232,6 +262,8 @@ static void
init_crtcs (MetaKmsImplDevice *impl_device,
drmModeRes *drm_resources)
{
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
int idx;
for (idx = 0; idx < drm_resources->count_crtcs; idx++)
@@ -239,22 +271,24 @@ init_crtcs (MetaKmsImplDevice *impl_device,
drmModeCrtc *drm_crtc;
MetaKmsCrtc *crtc;
- drm_crtc = drmModeGetCrtc (impl_device->fd, drm_resources->crtcs[idx]);
+ drm_crtc = drmModeGetCrtc (priv->fd, drm_resources->crtcs[idx]);
crtc = meta_kms_crtc_new (impl_device, drm_crtc, idx);
drmModeFreeCrtc (drm_crtc);
- impl_device->crtcs = g_list_prepend (impl_device->crtcs, crtc);
+ priv->crtcs = g_list_prepend (priv->crtcs, crtc);
}
- impl_device->crtcs = g_list_reverse (impl_device->crtcs);
+ priv->crtcs = g_list_reverse (priv->crtcs);
}
static MetaKmsConnector *
find_existing_connector (MetaKmsImplDevice *impl_device,
drmModeConnector *drm_connector)
{
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
GList *l;
- for (l = impl_device->connectors; l; l = l->next)
+ for (l = priv->connectors; l; l = l->next)
{
MetaKmsConnector *connector = l->data;
@@ -269,6 +303,8 @@ static void
update_connectors (MetaKmsImplDevice *impl_device,
drmModeRes *drm_resources)
{
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
GList *connectors = NULL;
unsigned int i;
@@ -277,7 +313,7 @@ update_connectors (MetaKmsImplDevice *impl_device,
drmModeConnector *drm_connector;
MetaKmsConnector *connector;
- drm_connector = drmModeGetConnector (impl_device->fd,
+ drm_connector = drmModeGetConnector (priv->fd,
drm_resources->connectors[i]);
if (!drm_connector)
continue;
@@ -293,8 +329,8 @@ update_connectors (MetaKmsImplDevice *impl_device,
connectors = g_list_prepend (connectors, connector);
}
- g_list_free_full (impl_device->connectors, g_object_unref);
- impl_device->connectors = g_list_reverse (connectors);
+ g_list_free_full (priv->connectors, g_object_unref);
+ priv->connectors = g_list_reverse (connectors);
}
static MetaKmsPlaneType
@@ -329,10 +365,12 @@ meta_kms_impl_device_add_fake_plane (MetaKmsImplDevice *impl_device,
MetaKmsPlaneType plane_type,
MetaKmsCrtc *crtc)
{
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
MetaKmsPlane *plane;
plane = meta_kms_plane_new_fake (plane_type, crtc);
- impl_device->planes = g_list_append (impl_device->planes, plane);
+ priv->planes = g_list_append (priv->planes, plane);
return plane;
}
@@ -412,7 +450,9 @@ meta_kms_impl_device_init_prop_table (MetaKmsImplDevice *impl_device,
static void
init_planes (MetaKmsImplDevice *impl_device)
{
- int fd = impl_device->fd;
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
+ int fd = priv->fd;
drmModePlaneRes *drm_planes;
unsigned int i;
@@ -445,19 +485,21 @@ init_planes (MetaKmsImplDevice *impl_device)
impl_device,
drm_plane, props);
- impl_device->planes = g_list_prepend (impl_device->planes, plane);
+ priv->planes = g_list_prepend (priv->planes, plane);
}
}
g_clear_pointer (&props, drmModeFreeObjectProperties);
drmModeFreePlane (drm_plane);
}
- impl_device->planes = g_list_reverse (impl_device->planes);
+ priv->planes = g_list_reverse (priv->planes);
}
static void
init_fallback_modes (MetaKmsImplDevice *impl_device)
{
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
GList *modes = NULL;
int i;
@@ -481,49 +523,53 @@ init_fallback_modes (MetaKmsImplDevice *impl_device)
modes = g_list_prepend (modes, mode);
}
- impl_device->fallback_modes = g_list_reverse (modes);
+ priv->fallback_modes = g_list_reverse (modes);
}
static void
init_info (MetaKmsImplDevice *impl_device)
{
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
drmVersion *drm_version;
- drm_version = drmGetVersion (impl_device->fd);
+ drm_version = drmGetVersion (priv->fd);
if (!drm_version)
return;
- impl_device->driver_name = g_strndup (drm_version->name,
- drm_version->name_len);
- impl_device->driver_description = g_strndup (drm_version->desc,
- drm_version->desc_len);
+ priv->driver_name = g_strndup (drm_version->name,
+ drm_version->name_len);
+ priv->driver_description = g_strndup (drm_version->desc,
+ drm_version->desc_len);
drmFreeVersion (drm_version);
}
void
meta_kms_impl_device_update_states (MetaKmsImplDevice *impl_device)
{
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
drmModeRes *drm_resources;
- meta_assert_in_kms_impl (meta_kms_impl_get_kms (impl_device->impl));
+ meta_assert_in_kms_impl (meta_kms_impl_get_kms (priv->impl));
- drm_resources = drmModeGetResources (impl_device->fd);
+ drm_resources = drmModeGetResources (priv->fd);
if (!drm_resources)
{
- g_list_free_full (impl_device->planes, g_object_unref);
- g_list_free_full (impl_device->crtcs, g_object_unref);
- g_list_free_full (impl_device->connectors, g_object_unref);
- impl_device->planes = NULL;
- impl_device->crtcs = NULL;
- impl_device->connectors = NULL;
+ g_list_free_full (priv->planes, g_object_unref);
+ g_list_free_full (priv->crtcs, g_object_unref);
+ g_list_free_full (priv->connectors, g_object_unref);
+ priv->planes = NULL;
+ priv->crtcs = NULL;
+ priv->connectors = NULL;
return;
}
update_connectors (impl_device, drm_resources);
- g_list_foreach (impl_device->crtcs, (GFunc) meta_kms_crtc_update_state,
+ g_list_foreach (priv->crtcs, (GFunc) meta_kms_crtc_update_state,
NULL);
- g_list_foreach (impl_device->connectors, (GFunc) meta_kms_connector_update_state,
+ g_list_foreach (priv->connectors, (GFunc) meta_kms_connector_update_state,
drm_resources);
drmModeFreeResources (drm_resources);
}
@@ -532,9 +578,12 @@ void
meta_kms_impl_device_predict_states (MetaKmsImplDevice *impl_device,
MetaKmsUpdate *update)
{
- g_list_foreach (impl_device->crtcs, (GFunc) meta_kms_crtc_predict_state,
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
+
+ g_list_foreach (priv->crtcs, (GFunc) meta_kms_crtc_predict_state,
update);
- g_list_foreach (impl_device->connectors, (GFunc) meta_kms_connector_predict_state,
+ g_list_foreach (priv->connectors, (GFunc) meta_kms_connector_predict_state,
update);
}
@@ -546,6 +595,7 @@ meta_kms_impl_device_new (MetaKmsDevice *device,
{
MetaKms *kms = meta_kms_impl_get_kms (impl);
MetaKmsImplDevice *impl_device;
+ MetaKmsImplDevicePrivate *priv;
int ret;
drmModeRes *drm_resources;
@@ -570,9 +620,10 @@ meta_kms_impl_device_new (MetaKmsDevice *device,
}
impl_device = g_object_new (META_TYPE_KMS_IMPL_DEVICE, NULL);
- impl_device->device = device;
- impl_device->impl = impl;
- impl_device->fd = fd;
+ priv = meta_kms_impl_device_get_instance_private (impl_device);
+ priv->device = device;
+ priv->impl = impl;
+ priv->fd = fd;
init_caps (impl_device);
@@ -586,7 +637,7 @@ meta_kms_impl_device_new (MetaKmsDevice *device,
drmModeFreeResources (drm_resources);
- impl_device->fd_source =
+ priv->fd_source =
meta_kms_register_fd_in_impl (kms, fd,
kms_event_dispatch_in_impl,
impl_device);
@@ -597,27 +648,35 @@ meta_kms_impl_device_new (MetaKmsDevice *device,
int
meta_kms_impl_device_get_fd (MetaKmsImplDevice *impl_device)
{
- meta_assert_in_kms_impl (meta_kms_impl_get_kms (impl_device->impl));
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
+
+ meta_assert_in_kms_impl (meta_kms_impl_get_kms (priv->impl));
- return impl_device->fd;
+ return priv->fd;
}
int
meta_kms_impl_device_leak_fd (MetaKmsImplDevice *impl_device)
{
- return impl_device->fd;
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
+
+ return priv->fd;
}
int
meta_kms_impl_device_close (MetaKmsImplDevice *impl_device)
{
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
int fd;
- meta_assert_in_kms_impl (meta_kms_impl_get_kms (impl_device->impl));
+ meta_assert_in_kms_impl (meta_kms_impl_get_kms (priv->impl));
- g_clear_pointer (&impl_device->fd_source, g_source_destroy);
- fd = impl_device->fd;
- impl_device->fd = -1;
+ g_clear_pointer (&priv->fd_source, g_source_destroy);
+ fd = priv->fd;
+ priv->fd = -1;
return fd;
}
@@ -626,14 +685,16 @@ static void
meta_kms_impl_device_finalize (GObject *object)
{
MetaKmsImplDevice *impl_device = META_KMS_IMPL_DEVICE (object);
+ MetaKmsImplDevicePrivate *priv =
+ meta_kms_impl_device_get_instance_private (impl_device);
- g_list_free_full (impl_device->planes, g_object_unref);
- g_list_free_full (impl_device->crtcs, g_object_unref);
- g_list_free_full (impl_device->connectors, g_object_unref);
- g_list_free_full (impl_device->fallback_modes,
+ g_list_free_full (priv->planes, g_object_unref);
+ g_list_free_full (priv->crtcs, g_object_unref);
+ g_list_free_full (priv->connectors, g_object_unref);
+ g_list_free_full (priv->fallback_modes,
(GDestroyNotify) meta_kms_mode_free);
- g_free (impl_device->driver_name);
- g_free (impl_device->driver_description);
+ g_free (priv->driver_name);
+ g_free (priv->driver_description);
G_OBJECT_CLASS (meta_kms_impl_device_parent_class)->finalize (object);
}
diff --git a/src/backends/native/meta-kms-impl-device.h b/src/backends/native/meta-kms-impl-device.h
index 1545439404..30b45f8721 100644
--- a/src/backends/native/meta-kms-impl-device.h
+++ b/src/backends/native/meta-kms-impl-device.h
@@ -51,9 +51,14 @@ struct _MetaKmsProp
};
#define META_TYPE_KMS_IMPL_DEVICE (meta_kms_impl_device_get_type ())
-G_DECLARE_FINAL_TYPE (MetaKmsImplDevice, meta_kms_impl_device,
- META, KMS_IMPL_DEVICE,
- GObject)
+G_DECLARE_DERIVABLE_TYPE (MetaKmsImplDevice, meta_kms_impl_device,
+ META, KMS_IMPL_DEVICE,
+ GObject)
+
+struct _MetaKmsImplDeviceClass
+{
+ GObjectClass parent_class;
+};
MetaKmsDevice * meta_kms_impl_device_get_device (MetaKmsImplDevice *impl_device);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]