[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: