crtc/kms: Make the 'transform-handled' API pass through MetaCrtcNative
In preparation for creating another non-KMS backend virtual CRTC. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1698>
This commit is contained in:
parent
6aef4b3970
commit
b91740df0e
@ -74,8 +74,8 @@ meta_crtc_kms_set_cursor_renderer_private (MetaCrtcKms *crtc_kms,
|
|||||||
crtc_kms->cursor_renderer_private_destroy_notify = destroy_notify;
|
crtc_kms->cursor_renderer_private_destroy_notify = destroy_notify;
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
static gboolean
|
||||||
meta_crtc_kms_is_transform_handled (MetaCrtcKms *crtc_kms,
|
is_transform_handled (MetaCrtcKms *crtc_kms,
|
||||||
MetaMonitorTransform transform)
|
MetaMonitorTransform transform)
|
||||||
{
|
{
|
||||||
if (!crtc_kms->primary_plane)
|
if (!crtc_kms->primary_plane)
|
||||||
@ -85,6 +85,15 @@ meta_crtc_kms_is_transform_handled (MetaCrtcKms *crtc_kms,
|
|||||||
transform);
|
transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
meta_crtc_kms_is_transform_handled (MetaCrtcNative *crtc_native,
|
||||||
|
MetaMonitorTransform transform)
|
||||||
|
{
|
||||||
|
MetaCrtcKms *crtc_kms = META_CRTC_KMS (crtc_native);
|
||||||
|
|
||||||
|
return is_transform_handled (crtc_kms, transform);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_crtc_kms_apply_transform (MetaCrtcKms *crtc_kms,
|
meta_crtc_kms_apply_transform (MetaCrtcKms *crtc_kms,
|
||||||
MetaKmsPlaneAssignment *kms_plane_assignment)
|
MetaKmsPlaneAssignment *kms_plane_assignment)
|
||||||
@ -96,9 +105,9 @@ meta_crtc_kms_apply_transform (MetaCrtcKms *crtc_kms,
|
|||||||
crtc_config = meta_crtc_get_config (crtc);
|
crtc_config = meta_crtc_get_config (crtc);
|
||||||
|
|
||||||
hw_transform = crtc_config->transform;
|
hw_transform = crtc_config->transform;
|
||||||
if (!meta_crtc_kms_is_transform_handled (crtc_kms, hw_transform))
|
if (!is_transform_handled (crtc_kms, hw_transform))
|
||||||
hw_transform = META_MONITOR_TRANSFORM_NORMAL;
|
hw_transform = META_MONITOR_TRANSFORM_NORMAL;
|
||||||
if (!meta_crtc_kms_is_transform_handled (crtc_kms, hw_transform))
|
if (!is_transform_handled (crtc_kms, hw_transform))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
meta_kms_plane_update_set_rotation (crtc_kms->primary_plane,
|
meta_kms_plane_update_set_rotation (crtc_kms->primary_plane,
|
||||||
@ -369,6 +378,9 @@ static void
|
|||||||
meta_crtc_kms_class_init (MetaCrtcKmsClass *klass)
|
meta_crtc_kms_class_init (MetaCrtcKmsClass *klass)
|
||||||
{
|
{
|
||||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||||
|
MetaCrtcNativeClass *crtc_native_class = META_CRTC_NATIVE_CLASS (klass);
|
||||||
|
|
||||||
object_class->dispose = meta_crtc_kms_dispose;
|
object_class->dispose = meta_crtc_kms_dispose;
|
||||||
|
|
||||||
|
crtc_native_class->is_transform_handled = meta_crtc_kms_is_transform_handled;
|
||||||
}
|
}
|
||||||
|
@ -45,9 +45,6 @@ void meta_crtc_kms_set_cursor_renderer_private (MetaCrtcKms *crtc_kms,
|
|||||||
gpointer cursor_renderer_private,
|
gpointer cursor_renderer_private,
|
||||||
GDestroyNotify destroy_notify);
|
GDestroyNotify destroy_notify);
|
||||||
|
|
||||||
gboolean meta_crtc_kms_is_transform_handled (MetaCrtcKms *crtc_kms,
|
|
||||||
MetaMonitorTransform transform);
|
|
||||||
|
|
||||||
void meta_crtc_kms_apply_transform (MetaCrtcKms *crtc_kms,
|
void meta_crtc_kms_apply_transform (MetaCrtcKms *crtc_kms,
|
||||||
MetaKmsPlaneAssignment *kms_plane_assignment);
|
MetaKmsPlaneAssignment *kms_plane_assignment);
|
||||||
|
|
||||||
|
@ -24,6 +24,15 @@
|
|||||||
G_DEFINE_ABSTRACT_TYPE (MetaCrtcNative, meta_crtc_native,
|
G_DEFINE_ABSTRACT_TYPE (MetaCrtcNative, meta_crtc_native,
|
||||||
META_TYPE_CRTC)
|
META_TYPE_CRTC)
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
meta_crtc_native_is_transform_handled (MetaCrtcNative *crtc_native,
|
||||||
|
MetaMonitorTransform transform)
|
||||||
|
{
|
||||||
|
MetaCrtcNativeClass *klass = META_CRTC_NATIVE_GET_CLASS (crtc_native);
|
||||||
|
|
||||||
|
return klass->is_transform_handled (crtc_native, transform);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_crtc_native_init (MetaCrtcNative *crtc_native)
|
meta_crtc_native_init (MetaCrtcNative *crtc_native)
|
||||||
{
|
{
|
||||||
|
@ -30,6 +30,12 @@ G_DECLARE_DERIVABLE_TYPE (MetaCrtcNative, meta_crtc_native,
|
|||||||
struct _MetaCrtcNativeClass
|
struct _MetaCrtcNativeClass
|
||||||
{
|
{
|
||||||
MetaCrtcClass parent_class;
|
MetaCrtcClass parent_class;
|
||||||
|
|
||||||
|
gboolean (* is_transform_handled) (MetaCrtcNative *crtc_native,
|
||||||
|
MetaMonitorTransform monitor_transform);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
gboolean meta_crtc_native_is_transform_handled (MetaCrtcNative *crtc_native,
|
||||||
|
MetaMonitorTransform transform);
|
||||||
|
|
||||||
#endif /* META_CRTC_NATIVE_H */
|
#endif /* META_CRTC_NATIVE_H */
|
||||||
|
@ -528,7 +528,8 @@ meta_monitor_manager_native_is_transform_handled (MetaMonitorManager *manager,
|
|||||||
MetaCrtc *crtc,
|
MetaCrtc *crtc,
|
||||||
MetaMonitorTransform transform)
|
MetaMonitorTransform transform)
|
||||||
{
|
{
|
||||||
return meta_crtc_kms_is_transform_handled (META_CRTC_KMS (crtc), transform);
|
return meta_crtc_native_is_transform_handled (META_CRTC_NATIVE (crtc),
|
||||||
|
transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
static float
|
static float
|
||||||
|
Loading…
Reference in New Issue
Block a user