xserver: Branch 'server-1.4-branch' - 5 commits

Daniel Stone daniels at kemper.freedesktop.org
Sat Nov 17 13:51:41 PST 2007


 exa/exa_accel.c     |    9 ++++++---
 exa/exa_migration.c |    4 ++++
 xkb/xkbAccessX.c    |   15 ++++++++++-----
 xkb/xkbEvents.c     |    3 ++-
 4 files changed, 22 insertions(+), 9 deletions(-)

New commits:
commit cbf775cde7bb737ddf71fa3aa5b08c859d516084
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Sat Nov 17 22:50:07 2007 +0100

    XKB: Generate correct key repeat events (bug #13114)
    
    Make sure we send the correct event for the type of device when we're
    sending key repeat events, which stops repeats being sent to incorrect
    windows.

diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c
index 4c6e3d4..43b82e1 100644
--- a/xkb/xkbAccessX.c
+++ b/xkb/xkbAccessX.c
@@ -308,14 +308,19 @@ xkbControlsNotify	cn;
 static CARD32
 AccessXRepeatKeyExpire(OsTimerPtr timer,CARD32 now,pointer arg)
 {
-XkbSrvInfoPtr	xkbi= ((DeviceIntPtr)arg)->key->xkbInfo;
+DeviceIntPtr    dev = (DeviceIntPtr) arg;
+XkbSrvInfoPtr	xkbi = dev->key->xkbInfo;
 KeyCode		key;
+BOOL            is_core;
 
-    if (xkbi->repeatKey==0)
+    if (xkbi->repeatKey == 0)
 	return 0;
-    key= xkbi->repeatKey;
-    AccessXKeyboardEvent((DeviceIntPtr)arg,KeyRelease,key,True);
-    AccessXKeyboardEvent((DeviceIntPtr)arg,KeyPress,key,True);
+
+    is_core = (dev == inputInfo.keyboard);
+    key = xkbi->repeatKey;
+    AccessXKeyboardEvent(dev, is_core ? KeyRelease : DeviceKeyRelease, key,
+                         True);
+    AccessXKeyboardEvent(dev, is_core ? KeyPress : DeviceKeyPress, key, True);
     return xkbi->desc->ctrls->repeat_interval;
 }
 
commit 3e987ea670aadefeb3a6ad05d9a39dd7902985f9
Author: Michel Dänzer <michel at tungstengraphics.com>
Date:   Thu Oct 18 17:44:14 2007 +0200

    EXA: Don't attempt to move in pixmaps that can't be accelerated.
    
    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=12815 .
    
    (Related to commit 5d74416740de883b7ef0994afea4bbd4d3901be0 on master.)

diff --git a/exa/exa_migration.c b/exa/exa_migration.c
index 70d8e12..ff81041 100644
--- a/exa/exa_migration.c
+++ b/exa/exa_migration.c
@@ -319,6 +319,10 @@ exaMoveInPixmap (PixmapPtr pPixmap)
     if (pPixmap->drawable.bitsPerPixel < 8)
 	return;
 
+    if (pPixmap->drawable.width > pExaScr->info->maxX ||
+	pPixmap->drawable.height > pExaScr->info->maxY)
+	return;
+
     if (pExaPixmap->area == NULL) {
 	pExaPixmap->area =
 	    exaOffscreenAlloc (pScreen, pExaPixmap->fb_size,
commit 75b9dc907b332d64d074083cae0c6b099960f09b
Author: Michel Dänzer <michel at tungstengraphics.com>
Date:   Thu Sep 27 13:08:41 2007 +0200

    EXA: Make sure tile offsets passed to drivers are never negative.
    
    Thanks to Björn Steinbrink for pointing out the problem on IRC.
    
    (cherry picked from commit 006f6525057970a74382132237b2131286ad147c with
     modifications.)

diff --git a/exa/exa_accel.c b/exa/exa_accel.c
index acc5dbe..aed4e42 100644
--- a/exa/exa_accel.c
+++ b/exa/exa_accel.c
@@ -1187,7 +1187,8 @@ exaFillRegionTiled (DrawablePtr	pDrawable,
 	    int dstY = pBox->y1;
 	    int tileY;
 
-	    tileY = (dstY - pDrawable->y - pPatOrg->y) % tileHeight;
+	    modulus(dstY - pDrawable->y - pPatOrg->y, tileHeight, tileY);
+
 	    while (height > 0) {
 		int width = pBox->x2 - pBox->x1;
 		int dstX = pBox->x1;
@@ -1198,7 +1199,8 @@ exaFillRegionTiled (DrawablePtr	pDrawable,
 		    h = height;
 		height -= h;
 
-		tileX = (dstX - pDrawable->x - pPatOrg->x) % tileWidth;
+		modulus(dstX - pDrawable->x - pPatOrg->x, tileWidth, tileX);
+
 		while (width > 0) {
 		    int w = tileWidth - tileX;
 		    if (w > width)
commit 732d586b0919e57ed836999f4117db3e776e2934
Author: Michel Dänzer <michel at tungstengraphics.com>
Date:   Thu Sep 27 13:08:40 2007 +0200

    EXA: Punt on fallback case not handled correctly in exaFillRegionTiled.
    
    Fixes http://bugs.freedesktop.org/show_bug.cgi?id=12520 .
    
    (From master commit c7d6d1f5, modified to suit.)

diff --git a/exa/exa_accel.c b/exa/exa_accel.c
index cc383cc..acc5dbe 100644
--- a/exa/exa_accel.c
+++ b/exa/exa_accel.c
@@ -1223,7 +1223,8 @@ exaFillRegionTiled (DrawablePtr	pDrawable,
     }
 
 fallback:
-    if (alu != GXcopy || planemask != FB_ALLONES)
+    if (alu != GXcopy || planemask != FB_ALLONES || pPatOrg->x != 0 ||
+	pPatOrg->y != 0)
 	return FALSE;
     EXA_FALLBACK(("from %p to %p (%c,%c)\n", pTile, pDrawable,
 		  exaDrawableLocation(&pTile->drawable),
commit a3aed33244914b64d08630e19100c71ab81e1a81
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Sat Nov 17 22:34:47 2007 +0100

    XKB: Don't ring the bell when we don't have a BellProc (bug #13246)
    (cherry picked from commit 55888552769ce6361174285b09dfb78ee22c170d)

diff --git a/xkb/xkbEvents.c b/xkb/xkbEvents.c
index e11b609..bf3e828 100644
--- a/xkb/xkbEvents.c
+++ b/xkb/xkbEvents.c
@@ -405,7 +405,8 @@ XID		winID = 0;
 
     if ((force||(xkbi->desc->ctrls->enabled_ctrls&XkbAudibleBellMask))&&
 							(!eventOnly)) {
-	(*kbd->kbdfeed->BellProc)(percent,kbd,(pointer)pCtrl,class);
+        if (kbd->kbdfeed->BellProc)
+            (*kbd->kbdfeed->BellProc)(percent,kbd,(pointer)pCtrl,class);
     }
     interest = kbd->xkb_interest;
     if ((!interest)||(force))


More information about the xorg-commit mailing list