Be careful about copying transforms around; they have allocated memory.
This commit is contained in:
parent
7e69e364d2
commit
7236fd9dd4
|
@ -271,7 +271,10 @@ xf86CrtcSetModeTransform (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotati
|
||||||
saved_x = crtc->x;
|
saved_x = crtc->x;
|
||||||
saved_y = crtc->y;
|
saved_y = crtc->y;
|
||||||
saved_rotation = crtc->rotation;
|
saved_rotation = crtc->rotation;
|
||||||
saved_transform = crtc->transform;
|
if (crtc->transformPresent) {
|
||||||
|
RRTransformInit (&saved_transform);
|
||||||
|
RRTransformCopy (&saved_transform, &crtc->transform);
|
||||||
|
}
|
||||||
saved_transform_present = crtc->transformPresent;
|
saved_transform_present = crtc->transformPresent;
|
||||||
|
|
||||||
/* Update crtc values up front so the driver can rely on them for mode
|
/* Update crtc values up front so the driver can rely on them for mode
|
||||||
|
@ -283,7 +286,6 @@ xf86CrtcSetModeTransform (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotati
|
||||||
crtc->rotation = rotation;
|
crtc->rotation = rotation;
|
||||||
if (transform) {
|
if (transform) {
|
||||||
RRTransformCopy (&crtc->transform, transform);
|
RRTransformCopy (&crtc->transform, transform);
|
||||||
crtc->transform = *transform;
|
|
||||||
crtc->transformPresent = TRUE;
|
crtc->transformPresent = TRUE;
|
||||||
} else
|
} else
|
||||||
crtc->transformPresent = FALSE;
|
crtc->transformPresent = FALSE;
|
||||||
|
@ -380,7 +382,8 @@ done:
|
||||||
crtc->y = saved_y;
|
crtc->y = saved_y;
|
||||||
crtc->rotation = saved_rotation;
|
crtc->rotation = saved_rotation;
|
||||||
crtc->mode = saved_mode;
|
crtc->mode = saved_mode;
|
||||||
crtc->transform = saved_transform;
|
if (saved_transform_present)
|
||||||
|
RRTransformCopy (&crtc->transform, &saved_transform);
|
||||||
crtc->transformPresent = saved_transform_present;
|
crtc->transformPresent = saved_transform_present;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue