static void xf86RotateBlockHandler(pointer data, OSTimePtr pTimeout, pointer pRead) { ScreenPtr pScreen = (ScreenPtr) data; xf86RotateRedisplay(pScreen); }
static void xf86RotateBlockHandler(ScreenPtr pScreen, pointer pTimeout, pointer pReadmask) { ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); Bool rotation_active; rotation_active = xf86RotateRedisplay(pScreen); pScreen->BlockHandler = xf86_config->BlockHandler; (*pScreen->BlockHandler) (pScreen, pTimeout, pReadmask); /* cannot avoid re-wrapping until all wrapping is audited */ xf86_config->BlockHandler = pScreen->BlockHandler; pScreen->BlockHandler = xf86RotateBlockHandler; }
static void xf86RotateBlockHandler(int screenNum, pointer blockData, pointer pTimeout, pointer pReadmask) { ScreenPtr pScreen = screenInfo.screens[screenNum]; ScrnInfoPtr pScrn = xf86Screens[screenNum]; xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); pScreen->BlockHandler = xf86_config->BlockHandler; (*pScreen->BlockHandler) (screenNum, blockData, pTimeout, pReadmask); if (xf86RotateRedisplay(pScreen)) { /* Re-wrap if rotation is still happening */ xf86_config->BlockHandler = pScreen->BlockHandler; pScreen->BlockHandler = xf86RotateBlockHandler; } }
static void xf86RotateBlockHandler(ScreenPtr pScreen, void *pTimeout, void *pReadmask) { ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); /* Unwrap before redisplay in case the software * cursor layer wants to add its block handler to the * chain */ pScreen->BlockHandler = xf86_config->BlockHandler; xf86RotateRedisplay(pScreen); (*pScreen->BlockHandler) (pScreen, pTimeout, pReadmask); /* Re-wrap if we still need this hook */ if (xf86_config->rotation_damage != NULL) { xf86_config->BlockHandler = pScreen->BlockHandler; pScreen->BlockHandler = xf86RotateBlockHandler; } else xf86_config->BlockHandler = NULL; }