debian/changelog | 2 debian/patches/03_fix-panning.diff | 162 +++++++++++++++++++++++++++++++++++++ debian/patches/series | 1 3 files changed, 165 insertions(+)
New commits: commit 5b6ba538e0370c15feb189bfec413b04cda3200d Author: Julien Cristau <[email protected]> Date: Fri Aug 3 20:42:19 2012 +0200 03_fix-panning.diff: disable cursor confinement when panning is enabled closes: #643693 diff --git a/debian/changelog b/debian/changelog index b0a94a0..ac00660 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,8 @@ xorg-server (2:1.12.3.901-1) UNRELEASED; urgency=low * New upstream release candidate + glx: Free DRI2 drawable reference to destroyed GLX drawable (closes: #681265, #674668) + * 03_fix-panning.diff: disable cursor confinement when panning is enabled + (closes: #643693) -- Julien Cristau <[email protected]> Fri, 03 Aug 2012 20:17:43 +0200 diff --git a/debian/patches/03_fix-panning.diff b/debian/patches/03_fix-panning.diff new file mode 100644 index 0000000..d990948 --- /dev/null +++ b/debian/patches/03_fix-panning.diff @@ -0,0 +1,162 @@ +From: Adam Jackson <[email protected]> +To: [email protected] +Subject: [PATCH 5/5] xf86RandR12: Don't call ConstrainCursorHarder() if + panning is enabled +Date: Mon, 30 Jul 2012 14:32:12 -0400 +Message-Id: <[email protected]> + +From: Rui Matos <[email protected]> + +Panning is at odds with CRTC cursor confinement. This disables CRTC cursor +confinement as long as panning is enabled. + +Fixes regression introduced in 56c90e29f04727c903bd0f084d23bf44eb1a0a11. + +Reviewed-by: Adam Jackson <[email protected]> +Signed-off-by: Rui Matos <[email protected]> +--- + hw/xfree86/modes/xf86RandR12.c | 38 ++++++++++++++++++++++++++++++++++---- + 1 files changed, 34 insertions(+), 4 deletions(-) + +diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c +index 4be0ea3..3530abf 100644 +--- a/hw/xfree86/modes/xf86RandR12.c ++++ b/hw/xfree86/modes/xf86RandR12.c +@@ -60,6 +60,9 @@ typedef struct _xf86RandR12Info { + * See https://bugs.freedesktop.org/show_bug.cgi?id=21554 + */ + xf86EnterVTProc *orig_EnterVT; ++ ++ Bool panning; ++ ConstrainCursorHarderProcPtr orig_ConstrainCursorHarder; + } XF86RandRInfoRec, *XF86RandRInfoPtr; + + #ifdef RANDR_12_INTERFACE +@@ -665,6 +668,10 @@ xf86RandR12SetConfig(ScreenPtr pScreen, + return TRUE; + } + ++#define PANNING_ENABLED(crtc) \ ++ ((crtc)->panningTotalArea.x2 > (crtc)->panningTotalArea.x1 || \ ++ (crtc)->panningTotalArea.y2 > (crtc)->panningTotalArea.y1) ++ + static Bool + xf86RandR12ScreenSetSize(ScreenPtr pScreen, + CARD16 width, +@@ -676,6 +683,7 @@ xf86RandR12ScreenSetSize(ScreenPtr pScreen, + WindowPtr pRoot = pScreen->root; + PixmapPtr pScrnPix; + Bool ret = FALSE; ++ Bool panning = FALSE; + int c; + + if (xf86RandR12Key) { +@@ -696,8 +704,7 @@ xf86RandR12ScreenSetSize(ScreenPtr pScreen, + for (c = 0; c < config->num_crtc; c++) { + xf86CrtcPtr crtc = config->crtc[c]; + +- if (crtc->panningTotalArea.x2 > crtc->panningTotalArea.x1 || +- crtc->panningTotalArea.y2 > crtc->panningTotalArea.y1) { ++ if (PANNING_ENABLED (crtc)) { + if (crtc->panningTotalArea.x2 > crtc->panningTrackingArea.x1) + crtc->panningTotalArea.x2 += width - pScreen->width; + if (crtc->panningTotalArea.y2 > crtc->panningTrackingArea.y1) +@@ -708,6 +715,7 @@ xf86RandR12ScreenSetSize(ScreenPtr pScreen, + crtc->panningTrackingArea.y2 += height - pScreen->height; + xf86RandR13VerifyPanningArea(crtc, width, height); + xf86RandR13Pan(crtc, randrp->pointerX, randrp->pointerY); ++ panning = TRUE; + } + } + +@@ -903,6 +911,7 @@ xf86RandR12CloseScreen(ScreenPtr pScreen) + randrp = XF86RANDRINFO(pScreen); + #if RANDR_12_INTERFACE + xf86ScreenToScrn(pScreen)->EnterVT = randrp->orig_EnterVT; ++ pScreen->ConstrainCursorHarder = randrp->orig_ConstrainCursorHarder; + #endif + + free(randrp); +@@ -1216,6 +1225,7 @@ xf86RandR12CrtcSet(ScreenPtr pScreen, + } + xf86RandR13VerifyPanningArea(crtc, pScreen->width, pScreen->height); + xf86RandR13Pan(crtc, randrp->pointerX, randrp->pointerY); ++ randrp->panning = PANNING_ENABLED (crtc); + /* + * Save the last successful setting for EnterVT + */ +@@ -1650,6 +1660,7 @@ xf86RandR13SetPanning(ScreenPtr pScreen, + BoxRec oldTotalArea; + BoxRec oldTrackingArea; + INT16 oldBorder[4]; ++ Bool oldPanning = randrp->panning; + + if (crtc->version < 2) + return FALSE; +@@ -1667,6 +1678,7 @@ xf86RandR13SetPanning(ScreenPtr pScreen, + + if (xf86RandR13VerifyPanningArea(crtc, pScreen->width, pScreen->height)) { + xf86RandR13Pan(crtc, randrp->pointerX, randrp->pointerY); ++ randrp->panning = PANNING_ENABLED (crtc); + return TRUE; + } + else { +@@ -1674,6 +1686,7 @@ xf86RandR13SetPanning(ScreenPtr pScreen, + memcpy(&crtc->panningTotalArea, &oldTotalArea, sizeof(BoxRec)); + memcpy(&crtc->panningTrackingArea, &oldTrackingArea, sizeof(BoxRec)); + memcpy(crtc->panningBorder, oldBorder, 4 * sizeof(INT16)); ++ randrp->panning = oldPanning; + return FALSE; + } + } +@@ -1762,8 +1775,6 @@ xf86RandR14ProviderSetOutputSource(ScreenPtr pScreen, + RRProviderPtr provider, + RRProviderPtr source_provider) + { +- +- + if (!source_provider) { + if (provider->output_source) { + ScreenPtr cmScreen = pScreen->current_master; +@@ -1859,6 +1870,21 @@ xf86CrtcSetScanoutPixmap(RRCrtcPtr randr_crtc, PixmapPtr pixmap) + return crtc->funcs->set_scanout_pixmap(crtc, pixmap); + } + ++static void ++xf86RandR13ConstrainCursorHarder(DeviceIntPtr dev, ScreenPtr screen, int mode, int *x, int *y) ++{ ++ XF86RandRInfoPtr randrp = XF86RANDRINFO(screen); ++ ++ if (randrp->panning) ++ return; ++ ++ if (randrp->orig_ConstrainCursorHarder) { ++ screen->ConstrainCursorHarder = randrp->orig_ConstrainCursorHarder; ++ screen->ConstrainCursorHarder(dev, screen, mode, x, y); ++ screen->ConstrainCursorHarder = xf86RandR13ConstrainCursorHarder; ++ } ++} ++ + static Bool + xf86RandR12Init12(ScreenPtr pScreen) + { +@@ -1895,6 +1921,10 @@ xf86RandR12Init12(ScreenPtr pScreen) + randrp->orig_EnterVT = pScrn->EnterVT; + pScrn->EnterVT = xf86RandR12EnterVT; + ++ randrp->panning = FALSE; ++ randrp->orig_ConstrainCursorHarder = pScreen->ConstrainCursorHarder; ++ pScreen->ConstrainCursorHarder = xf86RandR13ConstrainCursorHarder; ++ + if (!xf86RandR12CreateObjects12(pScreen)) + return FALSE; + +-- +1.7.7.6 + +_______________________________________________ [email protected]: X.Org development +Archives: http://lists.x.org/archives/xorg-devel +Info: http://lists.x.org/mailman/listinfo/xorg-devel + + diff --git a/debian/patches/series b/debian/patches/series index aaaaaed..731a4e0 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -2,4 +2,5 @@ ## Ubuntu patches start with 100. 001_fedora_extramodes.patch 02_Add-libnettle-as-option-for-sha1.diff +03_fix-panning.diff #13_debian_add_xkbpath_env_variable.diff -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

