ChangeLog | 209 ++++++ Xext/sync.c | 24 Xi/extinit.c | 38 - Xi/xiproperty.c | 251 +++---- config/wscons.c | 6 configure.ac | 4 debian/changelog | 6 debian/patches/03_fix-panning.diff | 50 - dix/gc.c | 10 dix/getevents.c | 2 dix/tables.c | 955 +++++++++++++++++------------ fb/fbseg.c | 18 hw/kdrive/ephyr/ephyr.c | 80 +- hw/kdrive/ephyr/hostx.c | 36 - hw/kdrive/ephyr/hostx.h | 10 hw/kdrive/src/kdrive.c | 20 hw/kdrive/src/kinput.c | 2 hw/xfree86/loader/loader.c | 13 hw/xfree86/modes/xf86Crtc.c | 8 hw/xfree86/modes/xf86DisplayIDModes.c | 171 ++--- hw/xfree86/modes/xf86EdidModes.c | 122 +-- hw/xfree86/os-support/bsd/bsd_apm.c | 26 hw/xfree86/os-support/bsd/bsd_kqueue_apm.c | 26 hw/xfree86/os-support/bus/Sbus.c | 20 hw/xfree86/os-support/linux/lnx_apm.c | 31 hw/xfree86/os-support/solaris/sun_apm.c | 26 hw/xquartz/console_redirect.c | 28 render/filter.c | 5 28 files changed, 1311 insertions(+), 886 deletions(-)
New commits: commit 5da5a1ba44c2f70b5b8473c26557ac362bfe6b77 Author: Julien Cristau <[email protected]> Date: Wed Aug 22 10:53:49 2012 +0200 Upload to unstable diff --git a/debian/changelog b/debian/changelog index 10f2764..0043c70 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -xorg-server (2:1.12.3.902-1) UNRELEASED; urgency=low +xorg-server (2:1.12.3.902-1) unstable; urgency=low * New upstream release candidate + glx: Free DRI2 drawable reference to destroyed GLX drawable @@ -9,7 +9,7 @@ xorg-server (2:1.12.3.902-1) UNRELEASED; urgency=low (closes: #643693) * Video ABI bumped to 12.1, serverminver to 2:1.12.3.901. - -- Julien Cristau <[email protected]> Tue, 21 Aug 2012 19:50:31 +0200 + -- Julien Cristau <[email protected]> Tue, 21 Aug 2012 21:35:25 +0200 xorg-server (2:1.12.3-1) unstable; urgency=low commit 6c19948c45f794b0c54710c5bb349dbd3e46d41e Author: Julien Cristau <[email protected]> Date: Tue Aug 21 21:34:29 2012 +0200 Make the panning fix actually apply diff --git a/debian/patches/03_fix-panning.diff b/debian/patches/03_fix-panning.diff index d990948..236ab49 100644 --- a/debian/patches/03_fix-panning.diff +++ b/debian/patches/03_fix-panning.diff @@ -18,10 +18,10 @@ Signed-off-by: Rui Matos <[email protected]> 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 +Index: xorg-server/hw/xfree86/modes/xf86RandR12.c +=================================================================== +--- xorg-server.orig/hw/xfree86/modes/xf86RandR12.c ++++ xorg-server/hw/xfree86/modes/xf86RandR12.c @@ -60,6 +60,9 @@ typedef struct _xf86RandR12Info { * See https://bugs.freedesktop.org/show_bug.cgi?id=21554 */ @@ -43,7 +43,7 @@ index 4be0ea3..3530abf 100644 static Bool xf86RandR12ScreenSetSize(ScreenPtr pScreen, CARD16 width, -@@ -676,6 +683,7 @@ xf86RandR12ScreenSetSize(ScreenPtr pScreen, +@@ -676,6 +683,7 @@ xf86RandR12ScreenSetSize(ScreenPtr pScre WindowPtr pRoot = pScreen->root; PixmapPtr pScrnPix; Bool ret = FALSE; @@ -51,7 +51,7 @@ index 4be0ea3..3530abf 100644 int c; if (xf86RandR12Key) { -@@ -696,8 +704,7 @@ xf86RandR12ScreenSetSize(ScreenPtr pScreen, +@@ -696,8 +704,7 @@ xf86RandR12ScreenSetSize(ScreenPtr pScre for (c = 0; c < config->num_crtc; c++) { xf86CrtcPtr crtc = config->crtc[c]; @@ -61,7 +61,7 @@ index 4be0ea3..3530abf 100644 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, +@@ -708,6 +715,7 @@ xf86RandR12ScreenSetSize(ScreenPtr pScre crtc->panningTrackingArea.y2 += height - pScreen->height; xf86RandR13VerifyPanningArea(crtc, width, height); xf86RandR13Pan(crtc, randrp->pointerX, randrp->pointerY); @@ -69,15 +69,15 @@ index 4be0ea3..3530abf 100644 } } -@@ -903,6 +911,7 @@ xf86RandR12CloseScreen(ScreenPtr pScreen) +@@ -903,6 +911,7 @@ xf86RandR12CloseScreen(ScreenPtr pScreen randrp = XF86RANDRINFO(pScreen); #if RANDR_12_INTERFACE - xf86ScreenToScrn(pScreen)->EnterVT = randrp->orig_EnterVT; + xf86Screens[pScreen->myNum]->EnterVT = randrp->orig_EnterVT; + pScreen->ConstrainCursorHarder = randrp->orig_ConstrainCursorHarder; #endif free(randrp); -@@ -1216,6 +1225,7 @@ xf86RandR12CrtcSet(ScreenPtr pScreen, +@@ -1213,6 +1222,7 @@ xf86RandR12CrtcSet(ScreenPtr pScreen, } xf86RandR13VerifyPanningArea(crtc, pScreen->width, pScreen->height); xf86RandR13Pan(crtc, randrp->pointerX, randrp->pointerY); @@ -85,7 +85,7 @@ index 4be0ea3..3530abf 100644 /* * Save the last successful setting for EnterVT */ -@@ -1650,6 +1660,7 @@ xf86RandR13SetPanning(ScreenPtr pScreen, +@@ -1639,6 +1649,7 @@ xf86RandR13SetPanning(ScreenPtr pScreen, BoxRec oldTotalArea; BoxRec oldTrackingArea; INT16 oldBorder[4]; @@ -93,7 +93,7 @@ index 4be0ea3..3530abf 100644 if (crtc->version < 2) return FALSE; -@@ -1667,6 +1678,7 @@ xf86RandR13SetPanning(ScreenPtr pScreen, +@@ -1656,6 +1667,7 @@ xf86RandR13SetPanning(ScreenPtr pScreen, if (xf86RandR13VerifyPanningArea(crtc, pScreen->width, pScreen->height)) { xf86RandR13Pan(crtc, randrp->pointerX, randrp->pointerY); @@ -101,7 +101,7 @@ index 4be0ea3..3530abf 100644 return TRUE; } else { -@@ -1674,6 +1686,7 @@ xf86RandR13SetPanning(ScreenPtr pScreen, +@@ -1663,6 +1675,7 @@ xf86RandR13SetPanning(ScreenPtr pScreen, memcpy(&crtc->panningTotalArea, &oldTotalArea, sizeof(BoxRec)); memcpy(&crtc->panningTrackingArea, &oldTrackingArea, sizeof(BoxRec)); memcpy(crtc->panningBorder, oldBorder, 4 * sizeof(INT16)); @@ -109,17 +109,8 @@ index 4be0ea3..3530abf 100644 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); +@@ -1748,6 +1761,21 @@ xf86RandR12EnterVT(int screen_index, int + return RRGetInfo(pScreen, TRUE); /* force a re-probe of outputs and notify clients about changes */ } +static void @@ -140,7 +131,7 @@ index 4be0ea3..3530abf 100644 static Bool xf86RandR12Init12(ScreenPtr pScreen) { -@@ -1895,6 +1921,10 @@ xf86RandR12Init12(ScreenPtr pScreen) +@@ -1776,6 +1804,10 @@ xf86RandR12Init12(ScreenPtr pScreen) randrp->orig_EnterVT = pScrn->EnterVT; pScrn->EnterVT = xf86RandR12EnterVT; @@ -151,12 +142,3 @@ index 4be0ea3..3530abf 100644 if (!xf86RandR12CreateObjects12(pScreen)) return FALSE; --- -1.7.7.6 - -_______________________________________________ [email protected]: X.Org development -Archives: http://lists.x.org/archives/xorg-devel -Info: http://lists.x.org/mailman/listinfo/xorg-devel - - commit 245bb2478ce1175733f6b68c9d379dabfe1a8c3e Author: Julien Cristau <[email protected]> Date: Tue Aug 21 19:56:42 2012 +0200 Bump changelogs diff --git a/ChangeLog b/ChangeLog index 33c75c3..3fc89f8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,212 @@ +commit a6d7400507f220d6f98b853def7904586fb1eadd +Author: Jeremy Huddleston Sequoia <[email protected]> +Date: Sun Aug 19 09:07:33 2012 -0700 + + configure.ac: Version bump to 1.12.3.902 (1.12.4 RC2) + + Signed-off-by: Jeremy Huddleston Sequoia <[email protected]> + +commit 0754f74a538ca59e45a39fefa2d90b9d3bc822dd +Author: Jeremy Huddleston Sequoia <[email protected]> +Date: Thu Aug 16 19:42:54 2012 -0700 + + XQuartz: console_redirect: Properly zero-out the tail of the array on realloc() + + We forgot to multiply by sizeof(), so it wasn't fully zeroed out. + + Signed-off-by: Jeremy Huddleston Sequoia <[email protected]> + (cherry picked from commit 7c3d2e4828deb4e8ec38e8ef88d6f92b2d931033) + +commit 2141f21d51b0787c8d287bb50d01a6a81e61a634 +Author: Jeremy Huddleston Sequoia <[email protected]> +Date: Thu Aug 16 15:43:34 2012 -0700 + + XQuartz: console_redirect: Set the correct location for reading into the buffer + + Prior to this change, it was possible that a large message would have some + of its data prepended to subsequent messages due to our not incorrectly + setting the location to write into the buffer. + + Signed-off-by: Jeremy Huddleston Sequoia <[email protected]> + (cherry picked from commit a32e01802ff1c938c0afe0cc007a273b9ada8610) + +commit 73d62f1aaea4a862cc512048cb6ca59586f4cdb6 +Author: Keith Packard <[email protected]> +Date: Tue Aug 7 17:49:46 2012 -0700 + + Only free Render filter names on last screen close + + Hotplugging screens causes the render filter names to get freed while + still in use; wait for the last core screen to be closed before + freeing them. That only happens at server reset, when we want them to + be freed. + + Signed-off-by: Keith Packard <[email protected]> + Reviewed-by: Dave Airlie <[email protected]> + (cherry picked from commit 19772670e3041fe1c7f5bbf32fa039a6d8245ccb) + +commit 3e62f48edf47a59d923ac58b6d4262b02456a556 +Author: Simon Schubert <[email protected]> +Date: Sun Aug 12 09:40:16 2012 -0700 + + fb: reorder Bresenham error correction to avoid overshoot. + + When fbBresSolid draws a line, it can happen that after the last + pixel, the Bresenham error term overflows, and fbBresSolid paints + another pixel before adjusting the error term. + + However, if this happens on the last pixel (len=0), this extra pixel + might overshoot the boundary, and, in rare cases, lead to a segfault. + + Fix this issue by adjusting for the Bresenham error term before + drawing the main pixel, not after. + + Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=24274 + Signed-off-by: Simon Schubert <[email protected]> + Tested-by: Mitch Davis <[email protected]> + Signed-off-by: Matt Turner <[email protected]> + Signed-off-by: Keith Packard <[email protected]> + (cherry picked from commit 863d528a9f76d0e8f122aebf19f8564a4c67a938) + +commit f0823a057e4c80dbb18c16f066ad36e6459fcc85 +Author: Peter Hutterer <[email protected]> +Date: Tue Jul 31 16:09:38 2012 +1000 + + dix: make sure the mask is set for emulated scroll events (#52508) + + If a device has smooth scrolling axes, but submits scroll button events, we + convert those to motion events and update the valuators. For legacy button + events, the valuator mask is likely unset though, causing + add_to_scroll_valuator() to return early, leaving us with an empty mask. + That again skipped the rest of the code and no events were generated. + + Fix it by making sure that the scroll valuator in the mask is at least + initialized to 0. + + Broke evdev wheel emulation, introduced by + 54476b5e4461ff523e935961affabcf0de12c556. + + X.Org Bug 52508 <http://bugs.freedesktop.org/show_bug.cgi?id=52508> + + Signed-off-by: Peter Hutterer <[email protected]> + Reviewed-by: Chase Douglas <[email protected]> + (cherry picked from commit cb306a8f174bec9ded95191b91797f59250e6808) + +commit 1f8a958a12c1c7c684051e5679420fe3a02ce307 +Author: Adam Jackson <[email protected]> +Date: Mon Jul 23 16:34:28 2012 -0400 + + sync: Fix logic error from b55bf248581dc66321b24b29f199f6dc8d02db1b + + That commit adds two hunks, and I _think_ they're backwards. It adds + code to modify bracket_greater on NegativeTransition triggers, and + bracket_less on PositiveTransition triggers. That breaks symmetry with + the surrounding code; the code as of this commit could probably be + simplified further. + + I can't keep the sync trigger rules in my head for more than about five + minutes at a time, so I'm sending this on for more eyes. RHEL 6.3's + xserver is shipping with b55bf248 reverted: + + https://bugzilla.redhat.com/show_bug.cgi?id=748704#c33 + + And there appear to be some upstream reports of the same issue: + + https://bugzilla.gnome.org/show_bug.cgi?id=658955 + + So I'd like to get this sorted out. + + Signed-off-by: Adam Jackson <[email protected]> + Reviewed-by: Peter Hutterer <[email protected]> + Signed-off-by: Keith Packard <[email protected]> + (cherry picked from commit 4a6f42dda00ba3b5616f8a86f0d4c9a652c7d9d4) + +commit 83cba78a0c858df4d5405783f3a1fb4bab128129 +Author: Alan Coopersmith <[email protected]> +Date: Mon Jul 16 21:12:06 2012 -0700 + + Make indentation of dix/tables.c much more consistent and readable + + Signed-off-by: Alan Coopersmith <[email protected]> + Acked-by: Daniel Stone <[email protected]> + (cherry picked from commit c37c65052f674cd58894ad0b9ec22928a62c624e) + +commit b6be94d89cab650ed73c5f3ca65f3a08bb79ebae +Author: Alan Coopersmith <[email protected]> +Date: Mon Jul 16 20:53:00 2012 -0700 + + Fix up formatting of initializers for arrays of structs + + The indenter seems to have gotten confused by initializing arrays of + structs with the struct defined inline - for predefined structs it did + a better job, so match that. + + Signed-off-by: Alan Coopersmith <[email protected]> + (cherry picked from commit 9f7ef7f7f0566f6319d8328ce0a1e6d0fa866720) + +commit afe8ef9043a0bc3b9322448c004b3f4ce203160a +Author: Adam Jackson <[email protected]> +Date: Mon Jul 30 14:32:11 2012 -0400 + + randr: Fix up yet another corner case in preferred mode selection + + Let's say - purely for the sake of argument, mind you - that you had a + server GPU with anemic memory bandwidth, and you walked up to it and + plugged in a monitor that was 1920x1080 because that's what happened to + be on the crash cart. Say the memory bandwidth is such that anything + larger than 1280x1024 gets filtered away. Now you're in trouble, + because the established timings section includes a 720x400 mode because + that's what DOS 80x25 is, and that happens to just about match the + physical aspect ratio. + + Instead let's reuse the logic from the existing aspect-match path: pick + the larger mode of either the physical aspect ratio or 4:3. + + Reviewed-by: Julien Cristau <[email protected]> + Signed-off-by: Adam Jackson <[email protected]> + Reviewed-by: Alex Deucher <[email protected]> + Signed-off-by: Keith Packard <[email protected]> + (cherry picked from commit ff56f88616aa63797384c2c484b2bd0f194df96a) + +commit af8ffefc070be8cb449812100b86501db17e8fd8 +Author: Dave Airlie <[email protected]> +Date: Mon Jul 30 14:32:10 2012 -0400 + + kinput: allocate enough space for null character. + + This code wasn't allocating enough space and was assigning the NULL + one past the end. + + Pointed out by coverity. + + Reviewed-by: Jeremy Huddleston <[email protected]> + Reviewed-by: Adam Jackson <[email protected]> + Signed-off-by: Dave Airlie <[email protected]> + Signed-off-by: Keith Packard <[email protected]> + (cherry picked from commit 531785dd746d64ef7f473a83ca73bb20e74b6fca) + +commit 3a2b67577cdf0d4e3aae28883e65cf782673198a +Author: Vic Lee <[email protected]> +Date: Mon Jul 30 14:32:09 2012 -0400 + + ephyr: Resize screen automatically when parent window is resized + + Bugzilla: https://bugs.freedesktop.org/25804 + Reviewed-by: Adam Jackson <[email protected]> + Signed-off-by: Vic Lee <[email protected]> + Signed-off-by: Keith Packard <[email protected]> + (cherry picked from commit 8843aed82e7d69422e7763a35832a2be8f26723f) + +commit 7749c58134022bc6718150c3bb81f18b07687674 +Author: Adam Jackson <[email protected]> +Date: Mon Jul 30 14:32:08 2012 -0400 + + ephyr: Fix up some bizarre formatting + + Signed-off-by: Adam Jackson <[email protected]> + Signed-off-by: Keith Packard <[email protected]> + (cherry picked from commit b46bbafae6d0a8b3f2f7853d5c1475fc223b1ed6) + commit ab46bdec65b4b1150ffa0aa4d9f3142e7e89cef9 Author: Jeremy Huddleston Sequoia <[email protected]> Date: Fri Aug 3 10:21:11 2012 -0700 diff --git a/debian/changelog b/debian/changelog index 6d8cba6..10f2764 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,13 +1,15 @@ -xorg-server (2:1.12.3.901-1) UNRELEASED; urgency=low +xorg-server (2:1.12.3.902-1) UNRELEASED; urgency=low * New upstream release candidate + glx: Free DRI2 drawable reference to destroyed GLX drawable (closes: #681265, #674668) + + dix: make sure the mask is set for emulated scroll events + (closes: #684051) * 03_fix-panning.diff: disable cursor confinement when panning is enabled (closes: #643693) * Video ABI bumped to 12.1, serverminver to 2:1.12.3.901. - -- Julien Cristau <[email protected]> Fri, 03 Aug 2012 20:17:43 +0200 + -- Julien Cristau <[email protected]> Tue, 21 Aug 2012 19:50:31 +0200 xorg-server (2:1.12.3-1) unstable; urgency=low commit a6d7400507f220d6f98b853def7904586fb1eadd Author: Jeremy Huddleston Sequoia <[email protected]> Date: Sun Aug 19 09:07:33 2012 -0700 configure.ac: Version bump to 1.12.3.902 (1.12.4 RC2) Signed-off-by: Jeremy Huddleston Sequoia <[email protected]> diff --git a/configure.ac b/configure.ac index aece819..28c9cf8 100644 --- a/configure.ac +++ b/configure.ac @@ -26,8 +26,8 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ(2.60) -AC_INIT([xorg-server], 1.12.3.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2012-08-03" +AC_INIT([xorg-server], 1.12.3.902, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2012-08-19" AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE commit 0754f74a538ca59e45a39fefa2d90b9d3bc822dd Author: Jeremy Huddleston Sequoia <[email protected]> Date: Thu Aug 16 19:42:54 2012 -0700 XQuartz: console_redirect: Properly zero-out the tail of the array on realloc() We forgot to multiply by sizeof(), so it wasn't fully zeroed out. Signed-off-by: Jeremy Huddleston Sequoia <[email protected]> (cherry picked from commit 7c3d2e4828deb4e8ec38e8ef88d6f92b2d931033) diff --git a/hw/xquartz/console_redirect.c b/hw/xquartz/console_redirect.c index 30e397a..8fdce46 100644 --- a/hw/xquartz/console_redirect.c +++ b/hw/xquartz/console_redirect.c @@ -365,8 +365,8 @@ xq_asl_log_fd(aslclient asl, aslmsg msg, int level, int fd) BLOCK_DONE; } redirect_fds = new_array; - memset(redirect_fds + n_redirect_fds, 0, new_n - - n_redirect_fds); + memset(redirect_fds + n_redirect_fds, 0, (new_n - + n_redirect_fds) * sizeof(*redirect_fds)); n_redirect_fds = new_n; } commit 2141f21d51b0787c8d287bb50d01a6a81e61a634 Author: Jeremy Huddleston Sequoia <[email protected]> Date: Thu Aug 16 15:43:34 2012 -0700 XQuartz: console_redirect: Set the correct location for reading into the buffer Prior to this change, it was possible that a large message would have some of its data prepended to subsequent messages due to our not incorrectly setting the location to write into the buffer. Signed-off-by: Jeremy Huddleston Sequoia <[email protected]> (cherry picked from commit a32e01802ff1c938c0afe0cc007a273b9ada8610) diff --git a/hw/xquartz/console_redirect.c b/hw/xquartz/console_redirect.c index 91d693b..30e397a 100644 --- a/hw/xquartz/console_redirect.c +++ b/hw/xquartz/console_redirect.c @@ -110,27 +110,33 @@ _read_redirect(int fd, int flush) /* Increment our returned number read */ total_read += nbytes; - nbytes += (aslr->w - aslr->buf); - aslr->buf[nbytes] = '\0'; + /* Increment our write location */ + aslr->w += nbytes; + aslr->w[0] = '\0'; /* One line at a time */ - for (p = aslr->buf; *p && (p - aslr->buf) < nbytes; p = s + 1) { + for (p = aslr->buf; p < aslr->w; p = s + 1) { // Find null or \n for (s = p; *s && *s != '\n'; s++) ; if (*s == '\n') { *s = '\0'; + } + + if (s < aslr->w || aslr->buf == p) { + /* Either the first of multiple messages or one message which is larger than our buffer */ asl_log(aslr->asl, aslr->msg, aslr->level, "%s", p); } - else if (aslr->buf != p) { + else { + /* We reached the end of the buffer, move this chunk to the start. */ memmove(aslr->buf, p, BUF_SIZE - (p - aslr->buf)); aslr->w = aslr->buf + (s - p); break; } - else if (nbytes == BUF_SIZE - 1) { - asl_log(aslr->asl, aslr->msg, aslr->level, "%s", p); - aslr->w = aslr->buf; - break; - } + } + + if (p == aslr->w) { + /* Start writing at the beginning in the case where we flushed */ + aslr->w = aslr->buf; } } commit 73d62f1aaea4a862cc512048cb6ca59586f4cdb6 Author: Keith Packard <[email protected]> Date: Tue Aug 7 17:49:46 2012 -0700 Only free Render filter names on last screen close Hotplugging screens causes the render filter names to get freed while still in use; wait for the last core screen to be closed before freeing them. That only happens at server reset, when we want them to be freed. Signed-off-by: Keith Packard <[email protected]> Reviewed-by: Dave Airlie <[email protected]> (cherry picked from commit 19772670e3041fe1c7f5bbf32fa039a6d8245ccb) diff --git a/render/filter.c b/render/filter.c index 8c401ee..019ea7f 100644 --- a/render/filter.c +++ b/render/filter.c @@ -273,7 +273,10 @@ PictureResetFilters(ScreenPtr pScreen) free(ps->filters); free(ps->filterAliases); - PictureFreeFilterIds(); + + /* Free the filters when the last screen is closed */ + if (pScreen->myNum == 0) + PictureFreeFilterIds(); } int commit 3e62f48edf47a59d923ac58b6d4262b02456a556 Author: Simon Schubert <[email protected]> Date: Sun Aug 12 09:40:16 2012 -0700 fb: reorder Bresenham error correction to avoid overshoot. When fbBresSolid draws a line, it can happen that after the last pixel, the Bresenham error term overflows, and fbBresSolid paints another pixel before adjusting the error term. However, if this happens on the last pixel (len=0), this extra pixel might overshoot the boundary, and, in rare cases, lead to a segfault. Fix this issue by adjusting for the Bresenham error term before drawing the main pixel, not after. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=24274 Signed-off-by: Simon Schubert <[email protected]> Tested-by: Mitch Davis <[email protected]> Signed-off-by: Matt Turner <[email protected]> Signed-off-by: Keith Packard <[email protected]> (cherry picked from commit 863d528a9f76d0e8f122aebf19f8564a4c67a938) diff --git a/fb/fbseg.c b/fb/fbseg.c index 0e4e0a9..1848387 100644 --- a/fb/fbseg.c +++ b/fb/fbseg.c @@ -65,6 +65,12 @@ fbBresSolid(DrawablePtr pDrawable, if (axis == X_AXIS) { bits = 0; while (len--) { + if (e >= 0) { + WRITE(dst, FbDoMaskRRop (READ(dst), and, xor, bits)); + bits = 0; + dst += dstStride; + e += e3; + } bits |= mask; mask = fbBresShiftMask(mask, signdx, dstBpp); if (!mask) { @@ -74,21 +80,12 @@ fbBresSolid(DrawablePtr pDrawable, mask = mask0; } e += e1; - if (e >= 0) { - WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, bits)); - bits = 0; - dst += dstStride; - e += e3; - } } if (bits) WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, bits)); } else { while (len--) { - WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, mask)); - dst += dstStride; - e += e1; if (e >= 0) { e += e3; mask = fbBresShiftMask(mask, signdx, dstBpp); @@ -97,6 +94,9 @@ fbBresSolid(DrawablePtr pDrawable, mask = mask0; } } + WRITE(dst, FbDoMaskRRop(READ(dst), and, xor, mask)); + dst += dstStride; + e += e1; } } commit f0823a057e4c80dbb18c16f066ad36e6459fcc85 Author: Peter Hutterer <[email protected]> Date: Tue Jul 31 16:09:38 2012 +1000 dix: make sure the mask is set for emulated scroll events (#52508) If a device has smooth scrolling axes, but submits scroll button events, we convert those to motion events and update the valuators. For legacy button events, the valuator mask is likely unset though, causing add_to_scroll_valuator() to return early, leaving us with an empty mask. That again skipped the rest of the code and no events were generated. Fix it by making sure that the scroll valuator in the mask is at least initialized to 0. Broke evdev wheel emulation, introduced by 54476b5e4461ff523e935961affabcf0de12c556. X.Org Bug 52508 <http://bugs.freedesktop.org/show_bug.cgi?id=52508> Signed-off-by: Peter Hutterer <[email protected]> Reviewed-by: Chase Douglas <[email protected]> (cherry picked from commit cb306a8f174bec9ded95191b91797f59250e6808) diff --git a/dix/getevents.c b/dix/getevents.c index b78d5ce..fade40c 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -1601,6 +1601,8 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, if (adj != 0.0 && axis != -1) { adj *= pDev->valuator->axes[axis].scroll.increment; + if (!valuator_mask_isset(&mask, axis)) + valuator_mask_set(&mask, axis, 0); add_to_scroll_valuator(pDev, &mask, axis, adj); type = MotionNotify; buttons = 0; commit 1f8a958a12c1c7c684051e5679420fe3a02ce307 Author: Adam Jackson <[email protected]> Date: Mon Jul 23 16:34:28 2012 -0400 sync: Fix logic error from b55bf248581dc66321b24b29f199f6dc8d02db1b That commit adds two hunks, and I _think_ they're backwards. It adds code to modify bracket_greater on NegativeTransition triggers, and bracket_less on PositiveTransition triggers. That breaks symmetry with the surrounding code; the code as of this commit could probably be simplified further. I can't keep the sync trigger rules in my head for more than about five minutes at a time, so I'm sending this on for more eyes. RHEL 6.3's xserver is shipping with b55bf248 reverted: https://bugzilla.redhat.com/show_bug.cgi?id=748704#c33 And there appear to be some upstream reports of the same issue: https://bugzilla.gnome.org/show_bug.cgi?id=658955 So I'd like to get this sorted out. Signed-off-by: Adam Jackson <[email protected]> Reviewed-by: Peter Hutterer <[email protected]> Signed-off-by: Keith Packard <[email protected]> (cherry picked from commit 4a6f42dda00ba3b5616f8a86f0d4c9a652c7d9d4) diff --git a/Xext/sync.c b/Xext/sync.c index 532cb64..c9162ee 100644 --- a/Xext/sync.c +++ b/Xext/sync.c @@ -1033,15 +1033,15 @@ SyncComputeBracketValues(SyncCounter * pCounter) pnewltval = &psci->bracket_less; } else if (XSyncValueEqual(pCounter->value, pTrigger->test_value) && - XSyncValueLessThan(pTrigger->test_value, - psci->bracket_greater)) { + XSyncValueGreaterThan(pTrigger->test_value, + psci->bracket_less)) { /* * The value is exactly equal to our threshold. We want one - * more event in the positive direction to ensure we pick up - * when the value *exceeds* this threshold. + * more event in the negative direction to ensure we pick up + * when the value is less than this threshold. */ - psci->bracket_greater = pTrigger->test_value; - pnewgtval = &psci->bracket_greater; + psci->bracket_less = pTrigger->test_value; + pnewltval = &psci->bracket_less; } } else if (pTrigger->test_type == XSyncPositiveTransition && @@ -1053,15 +1053,15 @@ SyncComputeBracketValues(SyncCounter * pCounter) pnewgtval = &psci->bracket_greater; } else if (XSyncValueEqual(pCounter->value, pTrigger->test_value) && - XSyncValueGreaterThan(pTrigger->test_value, - psci->bracket_less)) { + XSyncValueLessThan(pTrigger->test_value, + psci->bracket_greater)) { /* * The value is exactly equal to our threshold. We want one - * more event in the negative direction to ensure we pick up - * when the value is less than this threshold. + * more event in the positive direction to ensure we pick up + * when the value *exceeds* this threshold. */ - psci->bracket_less = pTrigger->test_value; - pnewltval = &psci->bracket_less; + psci->bracket_greater = pTrigger->test_value; + pnewgtval = &psci->bracket_greater; } } } /* end for each trigger */ commit 83cba78a0c858df4d5405783f3a1fb4bab128129 Author: Alan Coopersmith <[email protected]> Date: Mon Jul 16 21:12:06 2012 -0700 Make indentation of dix/tables.c much more consistent and readable Signed-off-by: Alan Coopersmith <[email protected]> Acked-by: Daniel Stone <[email protected]> (cherry picked from commit c37c65052f674cd58894ad0b9ec22928a62c624e) diff --git a/dix/tables.c b/dix/tables.c index 705ef0d..686cddd 100644 --- a/dix/tables.c +++ b/dix/tables.c @@ -58,364 +58,529 @@ SOFTWARE. #include "swaprep.h" #include "swapreq.h" -int (*InitialVector[3]) (ClientPtr /* client */ - ) = { -0, ProcInitialConnection, ProcEstablishConnection}; +int (*InitialVector[3]) (ClientPtr /* client */) = { + 0, + ProcInitialConnection, + ProcEstablishConnection +}; -int (*ProcVector[256]) (ClientPtr /* client */ - ) = { - ProcBadRequest, ProcCreateWindow, ProcChangeWindowAttributes, ProcGetWindowAttributes, ProcDestroyWindow, ProcDestroySubwindows, /* 5 */ - ProcChangeSaveSet, ProcReparentWindow, ProcMapWindow, ProcMapSubwindows, ProcUnmapWindow, /* 10 */ - ProcUnmapSubwindows, ProcConfigureWindow, ProcCirculateWindow, ProcGetGeometry, ProcQueryTree, /* 15 */ - ProcInternAtom, ProcGetAtomName, ProcChangeProperty, ProcDeleteProperty, ProcGetProperty, /* 20 */ - ProcListProperties, ProcSetSelectionOwner, ProcGetSelectionOwner, ProcConvertSelection, ProcSendEvent, /* 25 */ - ProcGrabPointer, ProcUngrabPointer, ProcGrabButton, ProcUngrabButton, ProcChangeActivePointerGrab, /* 30 */ - ProcGrabKeyboard, ProcUngrabKeyboard, ProcGrabKey, ProcUngrabKey, ProcAllowEvents, /* 35 */ - ProcGrabServer, ProcUngrabServer, ProcQueryPointer, ProcGetMotionEvents, ProcTranslateCoords, /* 40 */ - ProcWarpPointer, ProcSetInputFocus, ProcGetInputFocus, ProcQueryKeymap, ProcOpenFont, /* 45 */ - ProcCloseFont, ProcQueryFont, ProcQueryTextExtents, ProcListFonts, ProcListFontsWithInfo, /* 50 */ - ProcSetFontPath, ProcGetFontPath, ProcCreatePixmap, ProcFreePixmap, ProcCreateGC, /* 55 */ - ProcChangeGC, ProcCopyGC, ProcSetDashes, ProcSetClipRectangles, ProcFreeGC, /* 60 */ - ProcClearToBackground, ProcCopyArea, ProcCopyPlane, ProcPolyPoint, ProcPolyLine, /* 65 */ - ProcPolySegment, ProcPolyRectangle, ProcPolyArc, ProcFillPoly, ProcPolyFillRectangle, /* 70 */ - ProcPolyFillArc, ProcPutImage, ProcGetImage, ProcPolyText, ProcPolyText, /* 75 */ - ProcImageText8, ProcImageText16, ProcCreateColormap, ProcFreeColormap, ProcCopyColormapAndFree, /* 80 */ - ProcInstallColormap, ProcUninstallColormap, ProcListInstalledColormaps, ProcAllocColor, ProcAllocNamedColor, /* 85 */ - ProcAllocColorCells, ProcAllocColorPlanes, ProcFreeColors, ProcStoreColors, ProcStoreNamedColor, /* 90 */ - ProcQueryColors, ProcLookupColor, ProcCreateCursor, ProcCreateGlyphCursor, ProcFreeCursor, /* 95 */ - ProcRecolorCursor, ProcQueryBestSize, ProcQueryExtension, ProcListExtensions, ProcChangeKeyboardMapping, /* 100 */ - ProcGetKeyboardMapping, ProcChangeKeyboardControl, ProcGetKeyboardControl, ProcBell, ProcChangePointerControl, /* 105 */ - ProcGetPointerControl, ProcSetScreenSaver, ProcGetScreenSaver, ProcChangeHosts, ProcListHosts, /* 110 */ - ProcChangeAccessControl, ProcChangeCloseDownMode, ProcKillClient, ProcRotateProperties, ProcForceScreenSaver, /* 115 */ - ProcSetPointerMapping, ProcGetPointerMapping, ProcSetModifierMapping, ProcGetModifierMapping, ProcBadRequest, /* 120 */ - ProcBadRequest, ProcBadRequest, ProcBadRequest, ProcBadRequest, ProcBadRequest, /* 125 */ -ProcBadRequest, - ProcNoOperation, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, - ProcBadRequest, ProcBadRequest, ProcBadRequest, ProcBadRequest}; +int (*ProcVector[256]) (ClientPtr /* client */) = { + ProcBadRequest, + ProcCreateWindow, + ProcChangeWindowAttributes, + ProcGetWindowAttributes, + ProcDestroyWindow, + ProcDestroySubwindows, /* 5 */ + ProcChangeSaveSet, + ProcReparentWindow, + ProcMapWindow, + ProcMapSubwindows, + ProcUnmapWindow, /* 10 */ + ProcUnmapSubwindows, + ProcConfigureWindow, + ProcCirculateWindow, + ProcGetGeometry, + ProcQueryTree, /* 15 */ + ProcInternAtom, + ProcGetAtomName, + ProcChangeProperty, + ProcDeleteProperty, + ProcGetProperty, /* 20 */ + ProcListProperties, + ProcSetSelectionOwner, + ProcGetSelectionOwner, + ProcConvertSelection, + ProcSendEvent, /* 25 */ + ProcGrabPointer, + ProcUngrabPointer, + ProcGrabButton, + ProcUngrabButton, + ProcChangeActivePointerGrab, /* 30 */ + ProcGrabKeyboard, + ProcUngrabKeyboard, + ProcGrabKey, + ProcUngrabKey, + ProcAllowEvents, /* 35 */ + ProcGrabServer, + ProcUngrabServer, + ProcQueryPointer, + ProcGetMotionEvents, + ProcTranslateCoords, /* 40 */ -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

