xorg-server: Changes to 'debian-unstable'
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 <jcristau@debian.org>
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 <jcristau@debian.org> 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 <ajax@redhat.com>
+To: xorg-devel@lists.x.org
+Subject: [PATCH 5/5] xf86RandR12: Don't call ConstrainCursorHarder() if
+ panning is enabled
+Date: Mon, 30 Jul 2012 14:32:12 -0400
+Message-Id: <1343673132-11165-6-git-send-email-ajax@redhat.com>
+
+From: Rui Matos <tiagomatos@gmail.com>
+
+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 <ajax@redhat.com>
+Signed-off-by: Rui Matos <tiagomatos@gmail.com>
+---
+ 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
+
+_______________________________________________
+xorg-devel@lists.x.org: 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
Reply to: