logical-monitor: Track whether the logical monitor is transformed

Keep track of the logical monitor transform. When a logical monitor is
transformed, all of its monitors are also transformed in the same way.
A logical monitor can either be transformed on the CRTC level, or using
an offscreen intermediate buffer. In both cases will the logical
monitor be transformed, but only in the latter will the view be
transformed.

MetaCrtcs::transform currently does not represent whether the CRTC is
configured to be transformed or not; only when the backend can handle
it does it correctly correspond to the actual CRTC configuration. This
is intended to change with MetaMonitorConfigManager.

https://bugzilla.gnome.org/show_bug.cgi?id=777732
This commit is contained in:
Jonas Ådahl
2017-03-17 16:33:18 +08:00
parent 2091df3856
commit d38c4c1f2d
5 changed files with 20 additions and 9 deletions

View File

@ -2734,17 +2734,13 @@ meta_monitor_manager_get_monitor_matrix (MetaMonitorManager *manager,
MetaLogicalMonitor *logical_monitor,
gfloat matrix[6])
{
MetaMonitor *main_monitor;
MetaOutput *main_output;
MetaMonitorTransform transform;
gfloat viewport[9];
if (!calculate_viewport_matrix (manager, logical_monitor, viewport))
return FALSE;
main_monitor = meta_logical_monitor_get_monitors (logical_monitor)->data;
main_output = meta_monitor_get_main_output (main_monitor);
transform = main_output->crtc->transform;
transform = logical_monitor->transform;
multiply_matrix (viewport, transform_matrices[transform],
matrix);
return TRUE;