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