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 */
|
||||
xf86_config->BlockHandler = pScreen->BlockHandler;
|
||||
pScreen->BlockHandler = xf86RotateBlockHandler;
|
||||
} else {
|
||||
xf86_config->BlockHandler = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -477,8 +479,10 @@ xf86CrtcRotate (xf86CrtcPtr crtc)
|
|||
goto bail2;
|
||||
|
||||
/* Wrap block handler */
|
||||
xf86_config->BlockHandler = pScreen->BlockHandler;
|
||||
pScreen->BlockHandler = xf86RotateBlockHandler;
|
||||
if (!xf86_config->BlockHandler) {
|
||||
xf86_config->BlockHandler = pScreen->BlockHandler;
|
||||
pScreen->BlockHandler = xf86RotateBlockHandler;
|
||||
}
|
||||
}
|
||||
#ifdef RANDR_12_INTERFACE
|
||||
if (transform)
|
||||
|
|
Loading…
Reference in New Issue
Block a user