diff --git a/src/backends/native/meta-output-kms.c b/src/backends/native/meta-output-kms.c index 684cf0e09..27b7533a5 100644 --- a/src/backends/native/meta-output-kms.c +++ b/src/backends/native/meta-output-kms.c @@ -47,6 +47,8 @@ struct _MetaOutputKms G_DEFINE_TYPE (MetaOutputKms, meta_output_kms, META_TYPE_OUTPUT_NATIVE) +static GQuark kms_connector_output_kms_quark; + MetaKmsConnector * meta_output_kms_get_kms_connector (MetaOutputKms *output_kms) { @@ -90,6 +92,13 @@ meta_output_kms_can_clone (MetaOutputKms *output_kms, return TRUE; } +MetaOutputKms * +meta_output_kms_from_kms_connector (MetaKmsConnector *connector) +{ + return g_object_get_qdata (G_OBJECT (connector), + kms_connector_output_kms_quark); +} + static GBytes * meta_output_kms_read_edid (MetaOutputNative *output_native) { @@ -534,6 +543,16 @@ meta_output_kms_new (MetaGpuKms *gpu_kms, meta_output_unassign_crtc (output); } + if (!kms_connector_output_kms_quark) + { + kms_connector_output_kms_quark = + g_quark_from_static_string ("kms-connector-output-kms-quark"); + } + + g_object_set_qdata (G_OBJECT (kms_connector), + kms_connector_output_kms_quark, + output_kms); + return output_kms; } diff --git a/src/backends/native/meta-output-kms.h b/src/backends/native/meta-output-kms.h index e0eb60eb4..4391dc189 100644 --- a/src/backends/native/meta-output-kms.h +++ b/src/backends/native/meta-output-kms.h @@ -39,6 +39,8 @@ MetaKmsConnector * meta_output_kms_get_kms_connector (MetaOutputKms *output_kms) uint32_t meta_output_kms_get_connector_id (MetaOutputKms *output_kms); +MetaOutputKms * meta_output_kms_from_kms_connector (MetaKmsConnector *connector); + MetaOutputKms * meta_output_kms_new (MetaGpuKms *gpu_kms, MetaKmsConnector *kms_connector, MetaOutput *old_output,