summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Cristau <jcristau@debian.org>2009-09-14 15:28:00 +0200
committerJulien Cristau <jcristau@debian.org>2009-09-14 15:29:02 +0200
commit31c620f190e8bf9afa44962999020356dcfde764 (patch)
tree534d67d2f651c509513e789d682bac72c6e3291f
parente97e3ba1b40223b0f60fdc019ada16f46052c29f (diff)
parent551d149f9a0d4c7e17a27f8c843d789f782a54e1 (diff)
Merge branch 'server-1.6-proposed' into debian-unstable
-rw-r--r--Xext/dpms.c17
-rw-r--r--debian/changelog5
-rw-r--r--exa/exa_accel.c1
-rw-r--r--hw/xfree86/dri2/dri2.c12
4 files changed, 20 insertions, 15 deletions
diff --git a/Xext/dpms.c b/Xext/dpms.c
index bad7aa64f..d3e0dde8b 100644
--- a/Xext/dpms.c
+++ b/Xext/dpms.c
@@ -219,19 +219,10 @@ ProcDPMSForceLevel(client)
if (!DPMSEnabled)
return BadMatch;
- if (stuff->level == DPMSModeOn) {
- lastDeviceEventTime.milliseconds =
- GetTimeInMillis();
- } else if (stuff->level == DPMSModeStandby) {
- lastDeviceEventTime.milliseconds =
- GetTimeInMillis() - DPMSStandbyTime;
- } else if (stuff->level == DPMSModeSuspend) {
- lastDeviceEventTime.milliseconds =
- GetTimeInMillis() - DPMSSuspendTime;
- } else if (stuff->level == DPMSModeOff) {
- lastDeviceEventTime.milliseconds =
- GetTimeInMillis() - DPMSOffTime;
- } else {
+ if (stuff->level != DPMSModeOn &&
+ stuff->level != DPMSModeStandby &&
+ stuff->level != DPMSModeSuspend &&
+ stuff->level != DPMSModeOff) {
client->errorValue = stuff->level;
return BadValue;
}
diff --git a/debian/changelog b/debian/changelog
index 27e075970..7a5c7da50 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -11,6 +11,11 @@ xorg-server (2:1.6.3.901-1) UNRELEASED; urgency=low
rather than whatever renderproto version the server built against.
* New upstream release.
+ idle counter computation fixes (closes: #542064)
+ * Cherry-pick three more patches nominated on
+ http://www.x.org/wiki/Server16Branch:
+ - Don't reset the lastDeviceEventTime when doing DPMS actions
+ - dri2: Don't crash if pPriv is NULL
+ - EXA: Only take special code path for 1x1 fill for pixmaps
[ David Nusinow ]
* Update xsfbs to 5693792171d885769e58dcccc053c08b11acd12a
diff --git a/exa/exa_accel.c b/exa/exa_accel.c
index dac6e6c79..22980d96a 100644
--- a/exa/exa_accel.c
+++ b/exa/exa_accel.c
@@ -966,6 +966,7 @@ exaFillRegionSolid (DrawablePtr pDrawable, RegionPtr pRegion, Pixel pixel,
exaMarkSync(pDrawable->pScreen);
if (!(pExaScr->info->flags & EXA_HANDLES_PIXMAPS) &&
+ pExaPixmap->sys_ptr && pDrawable->type == DRAWABLE_PIXMAP &&
pDrawable->width == 1 && pDrawable->height == 1 &&
pDrawable->bitsPerPixel != 24) {
ExaPixmapPriv(pPixmap);
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index 580383dbc..3e8a7d4a8 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -190,10 +190,18 @@ do_get_buffers(DrawablePtr pDraw, int *width, int *height,
int need_fake_front = 0;
int have_fake_front = 0;
int front_format = 0;
- const int dimensions_match = (pDraw->width == pPriv->width)
- && (pDraw->height == pPriv->height);
+ int dimensions_match;
int i;
+ if (!pPriv) {
+ *width = pDraw->width;
+ *height = pDraw->height;
+ *out_count = 0;
+ return NULL;
+ }
+
+ dimensions_match = (pDraw->width == pPriv->width)
+ && (pDraw->height == pPriv->height);
buffers = xalloc((count + 1) * sizeof(buffers[0]));