ChangeLog | 175 ++++++++++++++++++++++++++++++++++ configure.ac | 6 - debian/changelog | 10 + dix/main.c | 18 +-- fb/fbseg.c | 18 +-- glx/glxscreens.c | 3 hw/xfree86/common/xf86Module.h | 2 hw/xfree86/modes/xf86Crtc.c | 11 +- hw/xquartz/X11Controller.m | 62 +++++++++++- hw/xquartz/console_redirect.c | 28 +++-- hw/xquartz/mach-startup/bundle-main.c | 17 +++ hw/xquartz/quartz.c | 1 render/filter.c | 5 13 files changed, 313 insertions(+), 43 deletions(-)
New commits: commit e9663c06d28fb8f6e2aead126a0a35e6dffa6737 Author: Robert Hooker <sarv...@ubuntu.com> Date: Wed Aug 22 11:14:30 2012 -0400 Bump changelogs diff --git a/ChangeLog b/ChangeLog index 84f361b..8f15c51 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,178 @@ +commit 6619f5c0e1086b57888ff7146e8ed5897b50d440 +Author: Keith Packard <kei...@keithp.com> +Date: Tue Aug 21 13:46:34 2012 -0700 + + Relase 1.12.99.905 + + RC with updated ABI version numbers. + + Signed-off-by: Keith Packard <kei...@keithp.com> + +commit 3e091e1075dc29120e54ab2ef110b04ce7383ffd +Author: Aaron Plattner <aplatt...@nvidia.com> +Date: Fri Aug 17 11:26:05 2012 -0700 + + xfree86: Bump extension ABI to 7.0 + + Commit 9d457f9c55f12106ba44c1c9db59d14f978f0ae8 added an array of + DevPrivateSetRec structures in the middle of the ScreenRec, which throws off + extension modules trying to call things like pScreen->DestroyPixmap. + + Signed-off-by: Aaron Plattner <aplatt...@nvidia.com> + Signed-off-by: Keith Packard <kei...@keithp.com> + +commit ac616d8ed5a634c6b32775eb7b071a13c575fd97 +Author: Jeremy Huddleston Sequoia <jerem...@apple.com> +Date: Thu Aug 16 19:09:42 2012 -0700 + + XQuartz: Use asl_log_descriptor for children as well + + This change is #if'd out due to a bug in asl_log_descriptor, but + it is left here as reference to be enabled in the future. + + Signed-off-by: Jeremy Huddleston Sequoia <jerem...@apple.com> + +commit ad123071e54d890d36d1373f59b8a6eb4937e936 +Author: Jeremy Huddleston Sequoia <jerem...@apple.com> +Date: Thu Aug 16 13:02:28 2012 -0700 + + XQuartz: Use asl_log_descriptor on Mountain Lion + + Signed-off-by: Jeremy Huddleston Sequoia <jerem...@apple.com> + +commit 7c3d2e4828deb4e8ec38e8ef88d6f92b2d931033 +Author: Jeremy Huddleston Sequoia <jerem...@apple.com> +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 <jerem...@apple.com> + +commit a32e01802ff1c938c0afe0cc007a273b9ada8610 +Author: Jeremy Huddleston Sequoia <jerem...@apple.com> +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 <jerem...@apple.com> + +commit ad5fe2d9614959b68bf71e23abf7e5abac9c2734 +Merge: 16d8da5 99b94af +Author: Keith Packard <kei...@keithp.com> +Date: Wed Aug 15 13:29:17 2012 -0700 + + Merge remote-tracking branch 'jeremyhu/master' + +commit 16d8da5ca99211bd180f532d78d7c5943d38c8ad +Author: Paul Berry <stereotype...@gmail.com> +Date: Tue Jul 31 15:15:56 2012 -0700 + + glx: Skip multisampled configs when matching pre-existing X visuals. + + In __glXScreenInit() we generate the set of GLX visuals in two steps: + first we match each pre-existing X visual with a corresponding + FBConfig, then we generate a new X visual to correspond to all the + remaining FBConfigs. + + The first step is used for the two default 24-bit visuals (true color + and direct color) and for the 32-bit visual. If windowsystem + multisampling is enabled in Mesa, we need to ensure that none of these + three visuals gets matched to a multisampled config. + + Fixes a bug with windowsystem multisampling in gnome-shell. If the X + server happens to match up a multisampled FBConfig to the 32-bit + visual, gnome-shell will try to use it to read pixels from + alpha-blended windows (such as gnome-terminal), resulting in no window + appearing on screen. + + Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> + Reviewed-by: Chad Versace <chad.vers...@linux.intel.com> + Signed-off-by: Keith Packard <kei...@keithp.com> + +commit 99b94af1ffbef7047f88e7d6c594242d172bec02 +Author: Jeremy Huddleston <jerem...@apple.com> +Date: Wed Aug 15 10:28:16 2012 -0700 + + XQuartz: Fix build regression for GlxExtensionInit + + quartz.c:153:6: error: use of undeclared identifier 'GlxExtensionInit'; did you mean 'GEExtensionInit'? [Semantic Issue] + {GlxExtensionInit, "GLX", &noGlxExtension}, + + Regression-from: aad428b8e21c77397c623b78706eb64b1fea77c9 + Signed-off-by: Jeremy Huddleston <jerem...@apple.com> + +commit c0540b4c8db676d18a9a09828f1590b0b16f9ebc +Author: Keith Packard <kei...@keithp.com> +Date: Tue Aug 7 17:49:48 2012 -0700 + + Kludge -- Call RandR screen before cleaning up xf86 crtcs + + The core RandR screen cleanup now involves cleaning up any GPU screen + associations, and those call down into DDX to clean up the driver. If + the pointers from the xf86 structures back to the core randr + structures are set to NULL at that point, bad things happen. + + This patch "knows" that the core RandR close screen is underneath the + xf86 randr close screen function, and so makes sure it gets called + first. + + Signed-off-by: Keith Packard <kei...@keithp.com> + Reviewed-by: Dave Airlie <airl...@redhat.com> + +commit 288b87e42cbb5db34cda848143655e84af8455da +Author: Keith Packard <kei...@keithp.com> +Date: Tue Aug 7 17:49:47 2012 -0700 + + Close GPU screens before core screens + + This should make cleaning up the GPU screens easier as the core + screens they are associated with will still be around. + + Signed-off-by: Keith Packard <kei...@keithp.com> + Reviewed-by: Dave Airlie <airl...@redhat.com> + +commit 19772670e3041fe1c7f5bbf32fa039a6d8245ccb +Author: Keith Packard <kei...@keithp.com> +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 <kei...@keithp.com> + Reviewed-by: Dave Airlie <airl...@redhat.com> + +commit 863d528a9f76d0e8f122aebf19f8564a4c67a938 +Author: Simon Schubert <2...@0x2c.org> +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 <2...@0x2c.or> + Tested-by: Mitch Davis <mjd+freedesktop....@afork.com> + Signed-off-by: Matt Turner <matts...@gmail.com> + Signed-off-by: Keith Packard <kei...@keithp.com> + commit c22c936b35cee60609041ccb7ee52c00b0634d7b Author: Keith Packard <kei...@keithp.com> Date: Tue Aug 7 16:04:25 2012 -0700 diff --git a/debian/changelog b/debian/changelog index 7aa0dd8..237d1ba 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,13 @@ -xorg-server (2:1.12.99.904-1) UNRELEASED; urgency=low +xorg-server (2:1.12.99.905-1) UNRELEASED; urgency=low - * New upstream release snapshot (on the way to 1.13). + [ Maarten Lankhorst ] + * New upstream release snapshot (on the way to 1.13). (rc4) * Bump minimum required abi, randr, dri2 and gl protos. - -- Maarten Lankhorst <maarten.lankho...@canonical.com> Thu, 12 Jul 2012 13:54:50 +0200 + [ Robert Hooker ] + * New upstream release (rc5) + + -- Robert Hooker <sarv...@ubuntu.com> Wed, 22 Aug 2012 11:12:17 -0400 xorg-server (2:1.12.1.902-1) unstable; urgency=medium commit 6619f5c0e1086b57888ff7146e8ed5897b50d440 Author: Keith Packard <kei...@keithp.com> Date: Tue Aug 21 13:46:34 2012 -0700 Relase 1.12.99.905 RC with updated ABI version numbers. Signed-off-by: Keith Packard <kei...@keithp.com> diff --git a/configure.ac b/configure.ac index e126355..abfe727 100644 --- a/configure.ac +++ b/configure.ac @@ -26,9 +26,9 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ(2.60) -AC_INIT([xorg-server], 1.12.99.904, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2012-08-07" -RELEASE_NAME="Sweating Aardvark" +AC_INIT([xorg-server], 1.12.99.905, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2012-08-21" +RELEASE_NAME="Splashing Orca" AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE commit 3e091e1075dc29120e54ab2ef110b04ce7383ffd Author: Aaron Plattner <aplatt...@nvidia.com> Date: Fri Aug 17 11:26:05 2012 -0700 xfree86: Bump extension ABI to 7.0 Commit 9d457f9c55f12106ba44c1c9db59d14f978f0ae8 added an array of DevPrivateSetRec structures in the middle of the ScreenRec, which throws off extension modules trying to call things like pScreen->DestroyPixmap. Signed-off-by: Aaron Plattner <aplatt...@nvidia.com> Signed-off-by: Keith Packard <kei...@keithp.com> diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h index d93405e..83f9790 100644 --- a/hw/xfree86/common/xf86Module.h +++ b/hw/xfree86/common/xf86Module.h @@ -82,7 +82,7 @@ typedef enum { #define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 4) #define ABI_VIDEODRV_VERSION SET_ABI_VERSION(13, 0) #define ABI_XINPUT_VERSION SET_ABI_VERSION(18, 0) -#define ABI_EXTENSION_VERSION SET_ABI_VERSION(6, 0) +#define ABI_EXTENSION_VERSION SET_ABI_VERSION(7, 0) #define ABI_FONT_VERSION SET_ABI_VERSION(0, 6) #define MODINFOSTRING1 0xef23fdc5 commit ac616d8ed5a634c6b32775eb7b071a13c575fd97 Author: Jeremy Huddleston Sequoia <jerem...@apple.com> Date: Thu Aug 16 19:09:42 2012 -0700 XQuartz: Use asl_log_descriptor for children as well This change is #if'd out due to a bug in asl_log_descriptor, but it is left here as reference to be enabled in the future. Signed-off-by: Jeremy Huddleston Sequoia <jerem...@apple.com> diff --git a/hw/xquartz/X11Controller.m b/hw/xquartz/X11Controller.m index 393bc1a..737db42 100644 --- a/hw/xquartz/X11Controller.m +++ b/hw/xquartz/X11Controller.m @@ -53,6 +53,11 @@ #include <fcntl.h> #include <sys/types.h> #include <sys/wait.h> +#include <asl.h> +#include <stdlib.h> + +extern aslclient aslc; +extern char *bundle_id_prefix; @implementation X11Controller @@ -342,9 +347,12 @@ const char *newargv[4]; char buf[128]; char *s; +#if 0 && MAC_OS_X_VERSION_MAX_ALLOWED >= 1080 + int stdout_pipe[2]; + int stderr_pipe[2]; +#endif - newargv[0] = - [X11App prefs_get_string:@PREFS_LOGIN_SHELL default:"/bin/sh"]; + newargv[0] = [X11App prefs_get_string:@PREFS_LOGIN_SHELL default:"/bin/sh"]; newargv[1] = "-c"; newargv[2] = [filename UTF8String]; newargv[3] = NULL; @@ -355,6 +363,40 @@ setenv("DISPLAY", buf, TRUE); } +#if 0 && MAC_OS_X_VERSION_MAX_ALLOWED >= 1080 + if (asl_log_descriptor) { + char *asl_sender; + aslmsg amsg = asl_new(ASL_TYPE_MSG); + assert(amsg); + + asprintf(&asl_sender, "%s.%s", bundle_id_prefix, newargv[2]); + assert(asl_sender); + for(s = asl_sender + strlen(bundle_id_prefix) + 1; *s; s++) { + if(! ((*s >= 'a' && *s <= 'z') || + (*s >= 'A' && *s <= 'Z') || + (*s >= '0' && *s <= '9'))) { + *s = '_'; + } + } + + (void)asl_set(amsg, ASL_KEY_SENDER, asl_sender); + free(asl_sender); + + assert(0 == pipe(stdout_pipe)); + fcntl(stdout_pipe[0], F_SETFD, FD_CLOEXEC); + fcntl(stdout_pipe[0], F_SETFL, O_NONBLOCK); + + assert(0 == pipe(stderr_pipe)); + fcntl(stderr_pipe[0], F_SETFD, FD_CLOEXEC); + fcntl(stderr_pipe[0], F_SETFL, O_NONBLOCK); + + asl_log_descriptor(aslc, amsg, ASL_LEVEL_INFO, stdout_pipe[0], ASL_LOG_DESCRIPTOR_READ); + asl_log_descriptor(aslc, amsg, ASL_LEVEL_NOTICE, stderr_pipe[0], ASL_LOG_DESCRIPTOR_READ); + + asl_free(amsg); + } +#endif + /* Do the fork-twice trick to avoid having to reap zombies */ child1 = fork(); switch (child1) { @@ -371,6 +413,14 @@ _exit(1); case 0: /* child2 */ +#if 0 && MAC_OS_X_VERSION_MAX_ALLOWED >= 1080 + if (asl_log_descriptor) { + /* Replace our stdout/stderr */ + dup2(stdout_pipe[1], STDOUT_FILENO); + dup2(stderr_pipe[1], STDERR_FILENO); + } +#endif + /* close all open files except for standard streams */ max_files = sysconf(_SC_OPEN_MAX); for (i = 3; i < max_files; i++) @@ -391,6 +441,14 @@ default: /* parent */ waitpid(child1, &status, 0); } + +#if 0 && MAC_OS_X_VERSION_MAX_ALLOWED >= 1080 + if (asl_log_descriptor) { + /* Close the write ends of the pipe */ + close(stdout_pipe[1]); + close(stderr_pipe[1]); + } +#endif } - (void) app_selected:sender commit ad123071e54d890d36d1373f59b8a6eb4937e936 Author: Jeremy Huddleston Sequoia <jerem...@apple.com> Date: Thu Aug 16 13:02:28 2012 -0700 XQuartz: Use asl_log_descriptor on Mountain Lion Signed-off-by: Jeremy Huddleston Sequoia <jerem...@apple.com> diff --git a/hw/xquartz/mach-startup/bundle-main.c b/hw/xquartz/mach-startup/bundle-main.c index cabdf1e..b403662 100644 --- a/hw/xquartz/mach-startup/bundle-main.c +++ b/hw/xquartz/mach-startup/bundle-main.c @@ -563,8 +563,25 @@ setup_console_redirect(const char *bundle_id) free(asl_facility); asl_set_filter(aslc, ASL_FILTER_MASK_UPTO(ASL_LEVEL_WARNING)); + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080 +# if MAC_OS_X_VERSION_MIN_REQUIRED < 1080 + if (asl_log_descriptor) +# endif + { + asl_log_descriptor(aslc, NULL, ASL_LEVEL_INFO, STDOUT_FILENO, ASL_LOG_DESCRIPTOR_WRITE); + asl_log_descriptor(aslc, NULL, ASL_LEVEL_NOTICE, STDERR_FILENO, ASL_LOG_DESCRIPTOR_WRITE); + } +# if MAC_OS_X_VERSION_MIN_REQUIRED < 1080 + else { + xq_asl_capture_fd(aslc, NULL, ASL_LEVEL_INFO, STDOUT_FILENO); + xq_asl_capture_fd(aslc, NULL, ASL_LEVEL_NOTICE, STDERR_FILENO); + } +# endif +#else xq_asl_capture_fd(aslc, NULL, ASL_LEVEL_INFO, STDOUT_FILENO); xq_asl_capture_fd(aslc, NULL, ASL_LEVEL_NOTICE, STDERR_FILENO); +#endif } static void commit 7c3d2e4828deb4e8ec38e8ef88d6f92b2d931033 Author: Jeremy Huddleston Sequoia <jerem...@apple.com> 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 <jerem...@apple.com> 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 a32e01802ff1c938c0afe0cc007a273b9ada8610 Author: Jeremy Huddleston Sequoia <jerem...@apple.com> 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 <jerem...@apple.com> 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 16d8da5ca99211bd180f532d78d7c5943d38c8ad Author: Paul Berry <stereotype...@gmail.com> Date: Tue Jul 31 15:15:56 2012 -0700 glx: Skip multisampled configs when matching pre-existing X visuals. In __glXScreenInit() we generate the set of GLX visuals in two steps: first we match each pre-existing X visual with a corresponding FBConfig, then we generate a new X visual to correspond to all the remaining FBConfigs. The first step is used for the two default 24-bit visuals (true color and direct color) and for the 32-bit visual. If windowsystem multisampling is enabled in Mesa, we need to ensure that none of these three visuals gets matched to a multisampled config. Fixes a bug with windowsystem multisampling in gnome-shell. If the X server happens to match up a multisampled FBConfig to the 32-bit visual, gnome-shell will try to use it to read pixels from alpha-blended windows (such as gnome-terminal), resulting in no window appearing on screen. Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> Reviewed-by: Chad Versace <chad.vers...@linux.intel.com> Signed-off-by: Keith Packard <kei...@keithp.com> diff --git a/glx/glxscreens.c b/glx/glxscreens.c index 037b037..61d590c 100644 --- a/glx/glxscreens.c +++ b/glx/glxscreens.c @@ -288,6 +288,9 @@ pickFBConfig(__GLXscreen * pGlxScreen, VisualPtr visual) continue; if (config->visualRating != GLX_NONE) continue; + /* Ignore multisampled configs */ + if (config->sampleBuffers) + continue; if (glxConvertToXVisualType(config->visualType) != visual->class) continue; /* If it's the 32-bit RGBA visual, demand a 32-bit fbconfig. */ commit 99b94af1ffbef7047f88e7d6c594242d172bec02 Author: Jeremy Huddleston <jerem...@apple.com> Date: Wed Aug 15 10:28:16 2012 -0700 XQuartz: Fix build regression for GlxExtensionInit quartz.c:153:6: error: use of undeclared identifier 'GlxExtensionInit'; did you mean 'GEExtensionInit'? [Semantic Issue] {GlxExtensionInit, "GLX", &noGlxExtension}, Regression-from: aad428b8e21c77397c623b78706eb64b1fea77c9 Signed-off-by: Jeremy Huddleston <jerem...@apple.com> diff --git a/hw/xquartz/quartz.c b/hw/xquartz/quartz.c index d74fc64..31b0e61 100644 --- a/hw/xquartz/quartz.c +++ b/hw/xquartz/quartz.c @@ -43,6 +43,7 @@ #include "darwinEvents.h" #include "pseudoramiX.h" #include "extension.h" +#include "glx_extinit.h" #define _APPLEWM_SERVER_ #include "applewmExt.h" commit c0540b4c8db676d18a9a09828f1590b0b16f9ebc Author: Keith Packard <kei...@keithp.com> Date: Tue Aug 7 17:49:48 2012 -0700 Kludge -- Call RandR screen before cleaning up xf86 crtcs The core RandR screen cleanup now involves cleaning up any GPU screen associations, and those call down into DDX to clean up the driver. If the pointers from the xf86 structures back to the core randr structures are set to NULL at that point, bad things happen. This patch "knows" that the core RandR close screen is underneath the xf86 randr close screen function, and so makes sure it gets called first. Signed-off-by: Keith Packard <kei...@keithp.com> Reviewed-by: Dave Airlie <airl...@redhat.com> diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index 154f684..1947c5b 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -726,6 +726,12 @@ xf86CrtcCloseScreen(ScreenPtr screen) xf86RotateCloseScreen(screen); + xf86RandR12CloseScreen(screen); + + free(config->name); + + screen->CloseScreen(screen); + for (o = 0; o < config->num_output; o++) { xf86OutputPtr output = config->output[o]; @@ -749,10 +755,7 @@ xf86CrtcCloseScreen(ScreenPtr screen) else if (screen->current_master) DetachUnboundGPU(screen); } - xf86RandR12CloseScreen(screen); - - free(config->name); - return screen->CloseScreen(screen); + return TRUE; } /* commit 288b87e42cbb5db34cda848143655e84af8455da Author: Keith Packard <kei...@keithp.com> Date: Tue Aug 7 17:49:47 2012 -0700 Close GPU screens before core screens This should make cleaning up the GPU screens easier as the core screens they are associated with will still be around. Signed-off-by: Keith Packard <kei...@keithp.com> Reviewed-by: Dave Airlie <airl...@redhat.com> diff --git a/dix/main.c b/dix/main.c index 42f517d..fb935c9 100644 --- a/dix/main.c +++ b/dix/main.c @@ -331,6 +331,15 @@ main(int argc, char *argv[], char *envp[]) CloseDownEvents(); + for (i = screenInfo.numGPUScreens - 1; i >= 0; i--) { + ScreenPtr pScreen = screenInfo.gpuscreens[i]; + FreeScratchPixmapsForScreen(pScreen); + (*pScreen->CloseScreen) (pScreen); + dixFreePrivates(pScreen->devPrivates, PRIVATE_SCREEN); + free(pScreen); + screenInfo.numGPUScreens = i; + } + for (i = screenInfo.numScreens - 1; i >= 0; i--) { FreeScratchPixmapsForScreen(screenInfo.screens[i]); FreeGCperDepth(i); @@ -342,15 +351,6 @@ main(int argc, char *argv[], char *envp[]) screenInfo.numScreens = i; } - for (i = screenInfo.numGPUScreens - 1; i >= 0; i--) { - ScreenPtr pScreen = screenInfo.gpuscreens[i]; - FreeScratchPixmapsForScreen(pScreen); - (*pScreen->CloseScreen) (pScreen); - dixFreePrivates(pScreen->devPrivates, PRIVATE_SCREEN); - free(pScreen); - screenInfo.numGPUScreens = i; - } - ReleaseClientIds(serverClient); dixFreePrivates(serverClient->devPrivates, PRIVATE_CLIENT); serverClient->devPrivates = NULL; commit 19772670e3041fe1c7f5bbf32fa039a6d8245ccb Author: Keith Packard <kei...@keithp.com> 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 <kei...@keithp.com> Reviewed-by: Dave Airlie <airl...@redhat.com> 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 863d528a9f76d0e8f122aebf19f8564a4c67a938 Author: Simon Schubert <2...@0x2c.org> 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 <2...@0x2c.or> Tested-by: Mitch Davis <mjd+freedesktop....@afork.com> Signed-off-by: Matt Turner <matts...@gmail.com> Signed-off-by: Keith Packard <kei...@keithp.com> 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; } } -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1t4cot-0001qh...@vasks.debian.org