hw/xf86/modes: Set crtc mode/rotation/transform before calling set_mode_major
This moves code out of each implementation of set_mode_major and back into
the X server. The real feature here is that the transform is now available
in the crtc for use by either xf86CrtcRotate or whatever the driver wants to
do. Without this change, the transform was lost for drivers providing the
set_mode_major interface.
Note that users of this API will want to stop smashing the transformPresent
field, and could also stop setting mode/x/y/rotation for new enough X servers,
but there's no reason to make that change as it will break things when
running against older X servers.
Signed-off-by: Keith Packard <keithp@keithp.com>
Acked-by: Daniel Stone <daniel@fooishbar.org>
(cherry picked from commit 6f59a81600
)
Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
parent
abc89e2c48
commit
7f95d18397
|
@ -255,9 +255,6 @@ xf86CrtcSetModeTransform (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotati
|
|||
RRTransformRec saved_transform;
|
||||
Bool saved_transform_present;
|
||||
|
||||
if (crtc->funcs->set_mode_major)
|
||||
return crtc->funcs->set_mode_major(crtc, mode, rotation, x, y);
|
||||
|
||||
crtc->enabled = xf86CrtcInUse (crtc);
|
||||
|
||||
if (!crtc->enabled)
|
||||
|
@ -293,6 +290,11 @@ xf86CrtcSetModeTransform (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotati
|
|||
} else
|
||||
crtc->transformPresent = FALSE;
|
||||
|
||||
if (crtc->funcs->set_mode_major) {
|
||||
ret = crtc->funcs->set_mode_major(crtc, mode, rotation, x, y);
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Pass our mode to the outputs and the CRTC to give them a chance to
|
||||
* adjust it according to limitations or output properties, and also
|
||||
* a chance to reject the mode entirely.
|
||||
|
|
Loading…
Reference in New Issue
Block a user