avoid a potential endless loop.
Previously it is possible that creating rotation data, then cleaning up and creating again so that pScreen->BlockHandler and xf86_config->BlockHandler all point to xf86RotateBlockHandler. See bug #19343.
This commit is contained in:
parent
b2756a71a4
commit
5f3188228e
|
@ -291,6 +291,8 @@ xf86RotateBlockHandler(int screenNum, pointer blockData,
|
||||||
/* Re-wrap if rotation is still happening */
|
/* Re-wrap if rotation is still happening */
|
||||||
xf86_config->BlockHandler = pScreen->BlockHandler;
|
xf86_config->BlockHandler = pScreen->BlockHandler;
|
||||||
pScreen->BlockHandler = xf86RotateBlockHandler;
|
pScreen->BlockHandler = xf86RotateBlockHandler;
|
||||||
|
} else {
|
||||||
|
xf86_config->BlockHandler = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -477,8 +479,10 @@ xf86CrtcRotate (xf86CrtcPtr crtc)
|
||||||
goto bail2;
|
goto bail2;
|
||||||
|
|
||||||
/* Wrap block handler */
|
/* Wrap block handler */
|
||||||
xf86_config->BlockHandler = pScreen->BlockHandler;
|
if (!xf86_config->BlockHandler) {
|
||||||
pScreen->BlockHandler = xf86RotateBlockHandler;
|
xf86_config->BlockHandler = pScreen->BlockHandler;
|
||||||
|
pScreen->BlockHandler = xf86RotateBlockHandler;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#ifdef RANDR_12_INTERFACE
|
#ifdef RANDR_12_INTERFACE
|
||||||
if (transform)
|
if (transform)
|
||||||
|
|
Loading…
Reference in New Issue