[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xorg-server: Changes to 'debian-experimental'



 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 <sarvatt@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 <keithp@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 <keithp@keithp.com>
+
+commit 3e091e1075dc29120e54ab2ef110b04ce7383ffd
+Author: Aaron Plattner <aplattner@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 <aplattner@nvidia.com>
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit ac616d8ed5a634c6b32775eb7b071a13c575fd97
+Author: Jeremy Huddleston Sequoia <jeremyhu@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 <jeremyhu@apple.com>
+
+commit ad123071e54d890d36d1373f59b8a6eb4937e936
+Author: Jeremy Huddleston Sequoia <jeremyhu@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 <jeremyhu@apple.com>
+
+commit 7c3d2e4828deb4e8ec38e8ef88d6f92b2d931033
+Author: Jeremy Huddleston Sequoia <jeremyhu@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 <jeremyhu@apple.com>
+
+commit a32e01802ff1c938c0afe0cc007a273b9ada8610
+Author: Jeremy Huddleston Sequoia <jeremyhu@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 <jeremyhu@apple.com>
+
+commit ad5fe2d9614959b68bf71e23abf7e5abac9c2734
+Merge: 16d8da5 99b94af
+Author: Keith Packard <keithp@keithp.com>
+Date:   Wed Aug 15 13:29:17 2012 -0700
+
+    Merge remote-tracking branch 'jeremyhu/master'
+
+commit 16d8da5ca99211bd180f532d78d7c5943d38c8ad
+Author: Paul Berry <stereotype441@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.romanick@intel.com>
+    Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 99b94af1ffbef7047f88e7d6c594242d172bec02
+Author: Jeremy Huddleston <jeremyhu@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 <jeremyhu@apple.com>
+
+commit c0540b4c8db676d18a9a09828f1590b0b16f9ebc
+Author: Keith Packard <keithp@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 <keithp@keithp.com>
+    Reviewed-by: Dave Airlie <airlied@redhat.com>
+
+commit 288b87e42cbb5db34cda848143655e84af8455da
+Author: Keith Packard <keithp@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 <keithp@keithp.com>
+    Reviewed-by: Dave Airlie <airlied@redhat.com>
+
+commit 19772670e3041fe1c7f5bbf32fa039a6d8245ccb
+Author: Keith Packard <keithp@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 <keithp@keithp.com>
+    Reviewed-by: Dave Airlie <airlied@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.org@afork.com>
+    Signed-off-by: Matt Turner <mattst88@gmail.com>
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+
 commit c22c936b35cee60609041ccb7ee52c00b0634d7b
 Author: Keith Packard <keithp@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.lankhorst@canonical.com>  Thu, 12 Jul 2012 13:54:50 +0200
+  [ Robert Hooker ]
+  * New upstream release (rc5)
+
+ -- Robert Hooker <sarvatt@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 <keithp@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 <keithp@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 <aplattner@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 <aplattner@nvidia.com>
    Signed-off-by: Keith Packard <keithp@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 <jeremyhu@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 <jeremyhu@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 <jeremyhu@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 <jeremyhu@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 <jeremyhu@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 <jeremyhu@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 <jeremyhu@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 <jeremyhu@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 <stereotype441@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.romanick@intel.com>
    Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
    Signed-off-by: Keith Packard <keithp@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 <jeremyhu@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 <jeremyhu@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 <keithp@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 <keithp@keithp.com>
    Reviewed-by: Dave Airlie <airlied@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 <keithp@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 <keithp@keithp.com>
    Reviewed-by: Dave Airlie <airlied@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 <keithp@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 <keithp@keithp.com>
    Reviewed-by: Dave Airlie <airlied@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.org@afork.com>
    Signed-off-by: Matt Turner <mattst88@gmail.com>
    Signed-off-by: Keith Packard <keithp@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;
         }
     }
 


Reply to: