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

xorg-server: Changes to 'upstream-unstable'



Rebased ref, commits from common ancestor:
commit aabd25bd0bd5f30e4ebbf1d48ef800b3ed2abcbe
Author: Jeremy Huddleston <jeremyhu@apple.com>
Date:   Sat Sep 24 00:06:32 2011 -0700

    configure.ac: Version bumped to 1.11.1
    
    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>

diff --git a/configure.ac b/configure.ac
index 2ac1f2e..51d01e4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,8 +26,8 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.57)
-AC_INIT([xorg-server], 1.11.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2011-08-26"
+AC_INIT([xorg-server], 1.11.1, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2011-09-24"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AM_MAINTAINER_MODE

commit 89881051664209b5b2e2c4a7c2dd25f085581d43
Author: Aaron Plattner <aplattner@nvidia.com>
Date:   Wed Sep 14 15:25:06 2011 -0700

    fb: Rename wfbTriangles and wfbTrapezoids
    
    These symbols were not renamed when they were added to libfb:
    
     # nm -D libwfb.so | grep ' fb'
     0000000000028d00 T fbTrapezoids
     0000000000028d60 T fbTriangles
    
    This causes corruption and/or crashes on wfb-ful drivers like nvidia:
    
     Program received signal SIGABRT, Aborted.
     0x00007fd67f3a0405 in *__GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
     64      ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
         in ../nptl/sysdeps/unix/sysv/linux/raise.c
     (gdb) bt
     #0  0x00007fd67f3a0405 in *__GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
     #1  0x00007fd67f3a3680 in *__GI_abort () at abort.c:92
     #2  0x00007fd67f3995b1 in *__GI___assert_fail (assertion=0x7fd679ecb804 "key->initialized", file=<optimized out>, line=116, function=0x7fd679ecbbc0 "dixGetPrivateAddr")
         at assert.c:81
     #3  0x00007fd679ec55b6 in ?? () from /usr/lib/xorg/modules/libfb.so
     #4  0x00007fd679eca9ef in ?? () from /usr/lib/xorg/modules/libfb.so
     #5  0x00007fd679ecae20 in fbTriangles () from /usr/lib/xorg/modules/libfb.so
     #6  0x00007fd67a58fc55 in ?? () from /usr/lib/xorg/modules/drivers/nvidia_drv.so
     #7  0x00000000004f38d1 in ?? ()
     #8  0x0000000000437ae9 in ?? ()
     #9  0x0000000000426eaa in ?? ()
     #10 0x00007fd67f38cead in __libc_start_main (main=<optimized out>, argc=<optimized out>, ubp_av=<optimized out>, init=<optimized out>, fini=<optimized out>,
         rtld_fini=<optimized out>, stack_end=0x7fff99860d78) at libc-start.c:228
     #11 0x000000000042719d in _start ()
    
    Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
    Signed-off-by: Keith Packard <keithp@keithp.com>
    (cherry picked from commit 03d032991da21bf866ca30dcbb6b7f9f99df441a)

diff --git a/fb/wfbrename.h b/fb/wfbrename.h
index e855edd..8b896eb 100644
--- a/fb/wfbrename.h
+++ b/fb/wfbrename.h
@@ -160,6 +160,8 @@
 #define fbStippleTable wfbStippleTable
 #define fbTile wfbTile
 #define fbTransparentSpan wfbTransparentSpan
+#define fbTrapezoids wfbTrapezoids
+#define fbTriangles wfbTriangles
 #define fbUninstallColormap wfbUninstallColormap
 #define fbUnmapWindow wfbUnmapWindow
 #define fbUnrealizeFont wfbUnrealizeFont

commit 4ad271d06c5aa42721c0e2e01e17e34a39825c65
Author: Aaron Plattner <aplattner@nvidia.com>
Date:   Mon Aug 29 20:44:18 2011 -0700

    xfree86: Bump extension ABI version to 6.0
    
    The video driver ABI was bumped to 11.0 in commit
    0de7cec90738a7a5020150309866bb0e23b6f479 because of a change to the
    size of ATOM in commit 51f353d0a0d116af16d7d9590cadef6c56328746.  This
    also affects extension modules, so the extension ABI version should
    have been bumped too.
    
    Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
index 2a5c805..3038c04 100644
--- a/hw/xfree86/common/xf86Module.h
+++ b/hw/xfree86/common/xf86Module.h
@@ -84,7 +84,7 @@ typedef enum {
 #define ABI_ANSIC_VERSION	SET_ABI_VERSION(0, 4)
 #define ABI_VIDEODRV_VERSION	SET_ABI_VERSION(11, 0)
 #define ABI_XINPUT_VERSION	SET_ABI_VERSION(13, 0)
-#define ABI_EXTENSION_VERSION	SET_ABI_VERSION(5, 0)
+#define ABI_EXTENSION_VERSION	SET_ABI_VERSION(6, 0)
 #define ABI_FONT_VERSION	SET_ABI_VERSION(0, 6)
 
 #define MODINFOSTRING1	0xef23fdc5

commit 0caeef6146bee5fb1827ab25db191685dde9d4b4
Author: Keith Packard <keithp@keithp.com>
Date:   Fri Aug 26 16:46:13 2011 -0700

    Version bumped to 1.11
    
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/configure.ac b/configure.ac
index 4f4bcf2..2ac1f2e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,8 +26,8 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.57)
-AC_INIT([xorg-server], 1.10.99.902, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2011-08-03"
+AC_INIT([xorg-server], 1.11.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2011-08-26"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AM_MAINTAINER_MODE

commit e32cc0b4c85c78cd8743a6e1680dcc79054b57ce
Author: Adam Jackson <ajax@redhat.com>
Date:   Thu Apr 21 16:37:11 2011 -0400

    fb: Fix memcpy abuse
    
    The memcpy fast path implicitly assumes that the copy walks
    left-to-right.  That's not something memcpy guarantees, and newer glibc
    on some processors will indeed break that assumption.  Since we walk a
    line at a time, check the source and destination against the width of
    the blit to determine whether we can be sloppy enough to allow memcpy.
    (Having done this, we can remove the check for !reverse as well.)
    
    On an Intel Core i7-2630QM with an NVIDIA GeForce GTX 460M running in
    NoAccel, the broken code and various fixes for -copywinwin{10,100,500}
    gives (edited to fit in 80 columns):
    
    1: Disable the fastpath entirely
    2: Replace memcpy with memmove
    3: This fix
    4: The code before this fix
    
      1            2                 3                 4           Operation
    ------   ---------------   ---------------   ---------------   ------------
    258000   269000 (  1.04)   544000 (  2.11)   552000 (  2.14)   Copy 10x10
     21300    23000 (  1.08)    43700 (  2.05)    47100 (  2.21)   Copy 100x100
       960      962 (  1.00)     1990 (  2.09)     1990 (  2.07)   Copy 500x500
    
    So it's a modest performance hit, but correctness demands it, and it's
    probably worth keeping the 2x speedup from having the fast path in the
    first place.
    
    Signed-off-by: Adam Jackson <ajax@redhat.com>
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/fb/fbblt.c b/fb/fbblt.c
index a040298..6809404 100644
--- a/fb/fbblt.c
+++ b/fb/fbblt.c
@@ -65,6 +65,7 @@ fbBlt (FbBits   *srcLine,
     int	    n, nmiddle;
     Bool    destInvarient;
     int	    startbyte, endbyte;
+    int     careful;
     FbDeclareMergeRop ();
 
     if (bpp == 24 && !FbCheck24Pix (pm))
@@ -74,12 +75,16 @@ fbBlt (FbBits   *srcLine,
 	return;
     }
 
-    if (alu == GXcopy && pm == FB_ALLONES && !reverse &&
+    careful = !((srcLine < dstLine && srcLine + width * (bpp>>3) > dstLine) ||
+                (dstLine < srcLine && dstLine + width * (bpp>>3) > srcLine)) ||
+              (bpp & 7);
+
+    if (alu == GXcopy && pm == FB_ALLONES && !careful &&
             !(srcX & 7) && !(dstX & 7) && !(width & 7)) {
         int i;
         CARD8 *src = (CARD8 *) srcLine;
         CARD8 *dst = (CARD8 *) dstLine;
-        
+
         srcStride *= sizeof(FbBits);
         dstStride *= sizeof(FbBits);
         width >>= 3;

commit ac2c307f4716ebd3e955c004ceec9f4c029401a0
Author: Pelle Johansson <pelle@morth.org>
Date:   Sun Aug 14 17:44:40 2011 -0700

    XQuartz: Initialize darwin pointer valuators
    
    This fixes a regression introduced by: 633b81e8ba09cc6a1ea8b43f323874fda2cf0bde
    
    http://xquartz.macosforge.org/trac/ticket/498
    
    Signed-off-by: Pelle Johansson <pelle@morth.org>
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>

diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c
index f19d7bf..b483000 100644
--- a/hw/xquartz/darwin.c
+++ b/hw/xquartz/darwin.c
@@ -322,8 +322,8 @@ static int DarwinMouseProc(DeviceIntPtr pPointer, int what) {
                                     (PtrCtrlProcPtr)NoopDDA,
                                     GetMotionHistorySize(), NAXES,
                                     axes_labels);
-//            InitValuatorAxisStruct(pPointer, 0, 0, XQUARTZ_VALUATOR_LIMIT, 1, 0, 1, Absolute);
-//            InitValuatorAxisStruct(pPointer, 1, 0, XQUARTZ_VALUATOR_LIMIT, 1, 0, 1, Absolute);
+            InitValuatorAxisStruct(pPointer, 0, axes_labels[0], NO_AXIS_LIMITS, NO_AXIS_LIMITS, 0, 0, 0, Absolute);
+            InitValuatorAxisStruct(pPointer, 1, axes_labels[1], NO_AXIS_LIMITS, NO_AXIS_LIMITS, 0, 0, 0, Absolute);
             break;
         case DEVICE_ON:
             pPointer->public.on = TRUE;

commit 4020cab88f5cf3164fc83cf912f94f288aa5a45d
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Wed Aug 10 11:36:16 2011 +0200

    EXA/mixed: Update sys_pitch in MPH even when there's no system memory copy.
    
    Otherwise sys_pitch will be stale when a system memory copy is allocated.
    
    Fixes https://bugs.freedesktop.org/show_bug.cgi?id=38322 and a crash when
    unlocking the screen with xscreensaver, reported by Janne Huttunen.
    
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Tested-by: Janne Huttunen <jahuttun@gmail.com>
    Tested-by: Jan Kriho <Erbureth@gmail.com>
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/exa/exa_mixed.c b/exa/exa_mixed.c
index 58645ae..0b1a4a4 100644
--- a/exa/exa_mixed.c
+++ b/exa/exa_mixed.c
@@ -186,17 +186,20 @@ exaModifyPixmapHeader_mixed(PixmapPtr pPixmap, int width, int height, int depth,
         }
 
 	/* Need to re-create system copy if there's also a GPU copy */
-	if (has_gpu_copy && pExaPixmap->sys_ptr) {
-	    free(pExaPixmap->sys_ptr);
-	    pExaPixmap->sys_ptr = NULL;
-	    pExaPixmap->sys_pitch = PixmapBytePad(width, depth);
-	    DamageUnregister(&pPixmap->drawable, pExaPixmap->pDamage);
-	    DamageDestroy(pExaPixmap->pDamage);
-	    pExaPixmap->pDamage = NULL;
-	    RegionEmpty(&pExaPixmap->validSys);
+	if (has_gpu_copy) {
+	    if (pExaPixmap->sys_ptr) {
+		free(pExaPixmap->sys_ptr);
+		pExaPixmap->sys_ptr = NULL;
+		DamageUnregister(&pPixmap->drawable, pExaPixmap->pDamage);
+		DamageDestroy(pExaPixmap->pDamage);
+		pExaPixmap->pDamage = NULL;
+		RegionEmpty(&pExaPixmap->validSys);
 
-	    if (pExaScr->deferred_mixed_pixmap == pPixmap)
-		pExaScr->deferred_mixed_pixmap = NULL;
+		if (pExaScr->deferred_mixed_pixmap == pPixmap)
+		    pExaScr->deferred_mixed_pixmap = NULL;
+	    }
+
+	    pExaPixmap->sys_pitch = PixmapBytePad(width, depth);
 	}
     }
 

commit a1dec7cd6adabaf8770dc3b21b0df30ce2f0bc8d
Author: Julien Cristau <jcristau@debian.org>
Date:   Thu Jul 7 19:18:03 2011 +0200

    Xephyr/dri: register screen and window privates on init
    
    Fixes assertion failure when calling dixSetPrivate
    Debian bug#632549 <http://bugs.debian.org/632549>
    
    Reported-and-tested-by: Mohammed Sameer <msameer@foolab.org>
    Signed-off-by: Julien Cristau <jcristau@debian.org>
    Reviewed-by: Daniel Stone <daniel@fooishbar.org>
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/hw/kdrive/ephyr/ephyrdriext.c b/hw/kdrive/ephyr/ephyrdriext.c
index 6945f5b..0bd51b2 100644
--- a/hw/kdrive/ephyr/ephyrdriext.c
+++ b/hw/kdrive/ephyr/ephyrdriext.c
@@ -1394,6 +1394,10 @@ ephyrDRIExtensionInit (ScreenPtr a_screen)
         EPHYR_LOG_ERROR ("failed to register DRI extension\n") ;
         goto out ;
     }
+    if (!dixRegisterPrivateKey(&ephyrDRIScreenKeyRec, PRIVATE_SCREEN, 0))
+        goto out ;
+    if (!dixRegisterPrivateKey(&ephyrDRIWindowKeyRec, PRIVATE_WINDOW, 0))
+        goto out ;
     screen_priv = calloc(1, sizeof (EphyrDRIScreenPrivRec)) ;
     if (!screen_priv) {
         EPHYR_LOG_ERROR ("failed to allocate screen_priv\n") ;

commit 39bc81b60ddc9e495ff3b9bb3c3a6c39e547b43a
Author: Keith Packard <keithp@keithp.com>
Date:   Wed Aug 3 20:57:03 2011 -0700

    Version bumped to 1.10.99.902 (1.11 RC2)
    
    At the close of the 1.11 non-critical fixes window.
    
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/configure.ac b/configure.ac
index 2438825..4f4bcf2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,8 +26,8 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.57)
-AC_INIT([xorg-server], 1.10.99.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2011-06-01"
+AC_INIT([xorg-server], 1.10.99.902, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2011-08-03"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AM_MAINTAINER_MODE

commit 9504caf1c3243e3ab2eb7126bc2bb876a8f89918
Author: Ville Syrjälä <ville.syrjala@nokia.com>
Date:   Fri May 6 18:19:34 2011 +0300

    composite: Inhibit window background paint with manual subwindow redirection
    
    The composite extension spec says that window background painting
    should be inhibited when the subwindow redirection mode is set to
    manual.
    
    This eliminates the ugly flashing effect when compiz unredirects a
    fullscreen window.
    
    Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com>
    Reviewed-by: Owen Taylor <otaylor@fishsoup.net>
    Reviewed-by: Keith Packard <keithp@keithp.com>
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/composite/compalloc.c b/composite/compalloc.c
index 841b2dc..f00bf4e 100644
--- a/composite/compalloc.c
+++ b/composite/compalloc.c
@@ -434,6 +434,7 @@ compRedirectSubwindows (ClientPtr pClient, WindowPtr pWin, int update)
 	 * critical output
 	 */
 	DamageExtSetCritical (pClient, TRUE);
+	pWin->inhibitBGPaint = TRUE;
     }
     return Success;
 }
@@ -466,6 +467,7 @@ compFreeClientSubwindows (WindowPtr pWin, XID id)
 		 */
 		DamageExtSetCritical (pClient, FALSE);
 		csw->update = CompositeRedirectAutomatic;
+		pWin->inhibitBGPaint = FALSE;
 		if (pWin->mapped)
 		    (*pWin->drawable.pScreen->ClearToBackground)(pWin, 0, 0, 0, 0, TRUE);
 	    }
diff --git a/include/windowstr.h b/include/windowstr.h
index 4a7a0f4..222de31 100644
--- a/include/windowstr.h
+++ b/include/windowstr.h
@@ -169,6 +169,7 @@ typedef struct _Window {
 #endif
 #ifdef COMPOSITE
     unsigned		damagedDescendants:1;	/* some descendants are damaged */
+    unsigned		inhibitBGPaint:1;	/* paint the background? */
 #endif
 } WindowRec;
 
diff --git a/mi/miexpose.c b/mi/miexpose.c
index 94258b8..0f1ebe5 100644
--- a/mi/miexpose.c
+++ b/mi/miexpose.c
@@ -575,6 +575,10 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
 	tile_x_off = pWin->drawable.x - draw_x_off;
 	tile_y_off = pWin->drawable.y - draw_y_off;
 	fill = pWin->background;
+#ifdef COMPOSITE
+	if (pWin->inhibitBGPaint)
+	    return;
+#endif
 	switch (pWin->backgroundState) {
 	case None:
 	    return;

commit f1d75f3b742231c4c09f13d7a22ed920014cb5ef
Author: Pierre-Loup A. Griffais <pgriffais@nvidia.com>
Date:   Thu Jul 28 15:17:59 2011 -0700

    Revert "composite: Don't backfill non-MapWindow allocations"
    
    This reverts commit db8840600e8e21356241eb87395031388d9b54d2.
    
    It was an optimization for the resize case, but 193ecc8b453b22 made
    it so that no backfilling takes place on resize if left in.
    
    Signed-off-by: Pierre-Loup A. Griffais <pgriffais@nvidia.com>
    Reviewed-by: Adam Jackson <ajax@redhat.com>
    
    Conflicts:
    
    	composite/compalloc.c
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/composite/compalloc.c b/composite/compalloc.c
index 5c27631..841b2dc 100644
--- a/composite/compalloc.c
+++ b/composite/compalloc.c
@@ -557,7 +557,7 @@ compUnredirectOneSubwindow (WindowPtr pParent, WindowPtr pWin)
 }
 
 static PixmapPtr
-compNewPixmap (WindowPtr pWin, int x, int y, int w, int h, Bool map)
+compNewPixmap (WindowPtr pWin, int x, int y, int w, int h)
 {
     ScreenPtr	    pScreen = pWin->drawable.pScreen;
     WindowPtr	    pParent = pWin->parent;
@@ -572,10 +572,6 @@ compNewPixmap (WindowPtr pWin, int x, int y, int w, int h, Bool map)
     pPixmap->screen_x = x;
     pPixmap->screen_y = y;
 
-    /* resize allocations will update later in compCopyWindow, not here */
-    if (!map)
-	return pPixmap;
-
     if (pParent->drawable.depth == pWin->drawable.depth)
     {
 	GCPtr	pGC = GetScratchGC (pWin->drawable.depth, pScreen);
@@ -641,7 +637,7 @@ compAllocPixmap (WindowPtr pWin)
     int		    y = pWin->drawable.y - bw;
     int		    w = pWin->drawable.width + (bw << 1);
     int		    h = pWin->drawable.height + (bw << 1);
-    PixmapPtr	    pPixmap = compNewPixmap (pWin, x, y, w, h, TRUE);
+    PixmapPtr	    pPixmap = compNewPixmap (pWin, x, y, w, h);
     CompWindowPtr   cw = GetCompWindow (pWin);
 
     if (!pPixmap)
@@ -713,7 +709,7 @@ compReallocPixmap (WindowPtr pWin, int draw_x, int draw_y,
     pix_h = h + (bw << 1);
     if (pix_w != pOld->drawable.width || pix_h != pOld->drawable.height)
     {
-	pNew = compNewPixmap (pWin, pix_x, pix_y, pix_w, pix_h, FALSE);
+	pNew = compNewPixmap (pWin, pix_x, pix_y, pix_w, pix_h);
 	if (!pNew)
 	    return FALSE;
 	cw->pOldPixmap = pOld;

commit e87adcc9e024982fdad974de2876b00cf974dab8
Author: Julien Cristau <jcristau@debian.org>
Date:   Sun Jul 31 21:14:59 2011 +0200

    Xquartz: include new localization files in the tarball
    
    Signed-off-by: Julien Cristau <jcristau@debian.org>
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>

diff --git a/hw/xquartz/bundle/Makefile.am b/hw/xquartz/bundle/Makefile.am
index 6deecae..6e83a42 100644
--- a/hw/xquartz/bundle/Makefile.am
+++ b/hw/xquartz/bundle/Makefile.am
@@ -40,6 +40,9 @@ EXTRA_DIST = \
 	Resources/Dutch.lproj/InfoPlist.strings \
 	Resources/Dutch.lproj/Localizable.strings \
 	Resources/Dutch.lproj/main.nib/keyedobjects.nib \
+	Resources/el.lproj/InfoPlist.strings \
+	Resources/el.lproj/Localizable.strings \
+	Resources/el.lproj/main.nib/keyedobjects.nib \
 	Resources/English.lproj/InfoPlist.strings \
 	Resources/English.lproj/Localizable.strings \
 	Resources/English.lproj/main.nib/designable.nib \
@@ -53,6 +56,9 @@ EXTRA_DIST = \
 	Resources/German.lproj/InfoPlist.strings \
 	Resources/German.lproj/Localizable.strings \
 	Resources/German.lproj/main.nib/keyedobjects.nib \
+	Resources/he.lproj/InfoPlist.strings \
+	Resources/he.lproj/Localizable.strings \
+	Resources/he.lproj/main.nib/keyedobjects.nib \
 	Resources/Italian.lproj/InfoPlist.strings \
 	Resources/Italian.lproj/Localizable.strings \
 	Resources/Italian.lproj/main.nib/keyedobjects.nib \
@@ -77,6 +83,9 @@ EXTRA_DIST = \
 	Resources/ru.lproj/InfoPlist.strings \
 	Resources/ru.lproj/Localizable.strings \
 	Resources/ru.lproj/main.nib/keyedobjects.nib \
+	Resources/sk.lproj/InfoPlist.strings \
+	Resources/sk.lproj/Localizable.strings \
+	Resources/sk.lproj/main.nib/keyedobjects.nib \
 	Resources/Spanish.lproj/InfoPlist.strings \
 	Resources/Spanish.lproj/Localizable.strings \
 	Resources/Spanish.lproj/main.nib/keyedobjects.nib \

commit a1bb5062c72667b2f10b56925c61888acc89e3e4
Author: Jeremy Huddleston <jeremyhu@apple.com>
Date:   Thu Jul 21 10:33:58 2011 -0700

    XQuartz: xpr: Don't FatalError if xp_unlock_window fails
    
    We added the FatalError in 5d1d9d9ae39fab2ee2ac085f9776f82768828dc8 but
    it caused a regression http://xquartz.macosforge.org/trac/ticket/482
    
    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>

diff --git a/hw/xquartz/xpr/xprFrame.c b/hw/xquartz/xpr/xprFrame.c
index 4818653..98f1cc3 100644
--- a/hw/xquartz/xpr/xprFrame.c
+++ b/hw/xquartz/xpr/xprFrame.c
@@ -223,7 +223,7 @@ xprDestroyFrame(RootlessFrameID wid)
 
     err = xp_destroy_window(x_cvt_vptr_to_uint(wid));
     if (err != Success)
-        FatalError("Could not destroy window %i.", (int)x_cvt_vptr_to_uint(wid));
+        FatalError("Could not destroy window %d (%d).", (int)x_cvt_vptr_to_uint(wid), (int)err);
 }
 
 
@@ -364,7 +364,7 @@ xprStartDrawing(RootlessFrameID wid, char **pixelData, int *bytesPerRow)
 
     err = xp_lock_window(x_cvt_vptr_to_uint(wid), NULL, NULL, data, rowbytes, NULL);
     if (err != Success)
-        FatalError("Could not lock window %i for drawing.", (int)x_cvt_vptr_to_uint(wid));
+        FatalError("Could not lock window %d for drawing (%d).", (int)x_cvt_vptr_to_uint(wid), (int)err);
 
     *pixelData = data[0];
     *bytesPerRow = rowbytes[0];
@@ -380,8 +380,11 @@ xprStopDrawing(RootlessFrameID wid, Bool flush)
     xp_error err;
 
     err = xp_unlock_window(x_cvt_vptr_to_uint(wid), flush);
+    /* This should be a FatalError, but we started tripping over it.  Make it a
+     * FatalError after http://xquartz.macosforge.org/trac/ticket/482 is fixed.
+     */
     if(err != Success)
-        FatalError("Could not unlock window %i after drawing.", (int)x_cvt_vptr_to_uint(wid));
+        ErrorF("Could not unlock window %d after drawing (%d).", (int)x_cvt_vptr_to_uint(wid), (int)err);
 }
 
 

commit c319f7b5b3ee651636cdfd165588f0dc972a22a4
Author: Jeremy Huddleston <jeremyhu@apple.com>
Date:   Wed Jul 20 00:16:42 2011 -0700

    XQuartz: Use CFSTR to avoid implicit cast warning of NSString * to CFStringRef
    
    Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>

diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m
index 8a03fbe..7fd7dab 100644
--- a/hw/xquartz/X11Application.m
+++ b/hw/xquartz/X11Application.m
@@ -1014,7 +1014,7 @@ void X11ApplicationMain (int argc, char **argv, char **envp) {
 
     if (app_prefs_domain_cfstr == NULL) {
         ErrorF("X11ApplicationMain: Unable to determine bundle identifier.  Your installation of XQuartz may be broken.\n");
-        app_prefs_domain_cfstr = @BUNDLE_ID_PREFIX".X11";
+        app_prefs_domain_cfstr = CFSTR(BUNDLE_ID_PREFIX".X11");
     }
 
     [NSApp read_defaults];

commit 08dfff92e8d0c2b1726634392c147f6634d1706d
Author: Aaron Plattner <aplattner@nvidia.com>
Date:   Fri Jul 29 16:12:06 2011 -0700

    randr: Compare all the bytes in RRPostPendingProperties
    
    RRPostPendingProperties tries to compare the pending and current
    property values to decide whether they're actually changing.  However,
    it does this using a memcmp that passes in pending_value->size as the
    number of bytes.  This is actually the number of elements, where each
    element is (pending_value->format / 8) bytes long.  This causes the
    pending value to not be propagated if the first pending_value->size
    bytes are the same and only the end of it is changing.
    
    Fix this by computing the total number of bytes to compare in the
    memcmp.
    
    Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
    Reviewed-by: Keith Packard <keithp@keithp.com>
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/randr/rrproperty.c b/randr/rrproperty.c
index ba04c16..61e7bb4 100644
--- a/randr/rrproperty.c
+++ b/randr/rrproperty.c
@@ -283,7 +283,7 @@ RRPostPendingProperties (RROutputPtr output)
 	    pending_value->format == current_value->format &&
 	    pending_value->size == current_value->size &&
 	    !memcmp (pending_value->data, current_value->data,
-		     pending_value->size))
+		     pending_value->size * (pending_value->format / 8)))
 	    continue;
 
 	if (RRChangeOutputProperty (output, property->propertyName,

commit f51e42f583073bde0bc8131887cb7220636c8855
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Wed Jul 20 13:09:05 2011 +1000

    Terminate the log with one last message.
    
    Instead of just closing the log when everything is done, put one more
    message in stating that we're actually terminating. Users or scripts that
    look at the Xorg.log will then know that a) the server has terminated
    properly and b) why the server terminated (to some degree, given that most
    real-world errors will be caused by AbortServer()).
    
    Acked-by: Gaetan Nadon <memsize@videotron.ca>
    Reviewed-by: Daniel Stone <daniel@fooishbar.org>
    Tested-by: Jeremy Huddleston <jeremyhu@apple.com>
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
    Tested-by: Jon TURNEY <jon.turney@dronecode.org.uk>
    Reviewed-by: Jon TURNEY <jon.turney@dronecode.org.uk>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/dix/main.c b/dix/main.c
index 955b7ea..16575ce 100644
--- a/dix/main.c
+++ b/dix/main.c
@@ -347,7 +347,7 @@ int main(int argc, char *argv[], char *envp[])
 
 	if (dispatchException & DE_TERMINATE)
 	{
-	    ddxGiveUp();
+	    ddxGiveUp(EXIT_NO_ERROR);
 	    break;
 	}
 
diff --git a/doc/Xserver-spec.xml b/doc/Xserver-spec.xml
index 7d7f915..b14e489 100644
--- a/doc/Xserver-spec.xml
+++ b/doc/Xserver-spec.xml
@@ -4680,8 +4680,8 @@ An Example implementation is miPushPixels() in Xserver/mi/mipushpxl.c.</para>
   <title>Shutdown Procedures</title>
 <para>
 <blockquote><programlisting>
-	void AbortDDX()
-	void ddxGiveUp()
+	void AbortDDX(enum ExitCode error)
+	void ddxGiveUp(enum ExitCode error)
 </programlisting></blockquote>
 Some hardware may require special work to be done before the server
 exits so that it is not left in an intermediate state.  As explained
diff --git a/hw/dmx/dmxinit.c b/hw/dmx/dmxinit.c
index 74b3582..bc1509b 100644
--- a/hw/dmx/dmxinit.c
+++ b/hw/dmx/dmxinit.c
@@ -821,7 +821,7 @@ static void dmxSetDefaultFontPath(char *fp)
 /** This function is called in Xserver/os/utils.c from \a AbortServer().
  * We must ensure that backend and console state is restored in the
  * event the server shutdown wasn't clean. */
-void AbortDDX(void)
+void AbortDDX(enum ExitCode error)
 {
     int i;
 
@@ -842,9 +842,9 @@ void ddxBeforeReset(void)
 /** This function is called in Xserver/dix/main.c from \a main() when
  * dispatchException & DE_TERMINATE (which is the only way to exit the
  * main loop without an interruption. */
-void ddxGiveUp(void)
+void ddxGiveUp(enum ExitCode error)
 {
-    AbortDDX();
+    AbortDDX(error);
 }
 
 /** This function is called in Xserver/os/osinit.c from \a OsInit(). */
diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c
index f034ce4..8dd039e 100644
--- a/hw/kdrive/src/kdrive.c
+++ b/hw/kdrive/src/kdrive.c
@@ -232,7 +232,7 @@ KdProcessSwitch (void)
 }
 
 void
-AbortDDX(void)
+AbortDDX(enum ExitCode error)
 {
     KdDisableScreens ();
     if (kdOsFuncs)
@@ -249,9 +249,9 @@ AbortDDX(void)
 }
 
 void
-ddxGiveUp (void)
+ddxGiveUp (enum ExitCode error)
 {
-    AbortDDX ();
+    AbortDDX (error);
 }
 
 Bool	kdDumbDriver;
diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c
index 53f82f9..31ed505 100644
--- a/hw/vfb/InitOutput.c
+++ b/hw/vfb/InitOutput.c
@@ -150,7 +150,7 @@ vfbBitsPerPixel(int depth)
 }
 
 void
-ddxGiveUp(void)
+ddxGiveUp(enum ExitCode error)
 {
     int i;
 
@@ -201,9 +201,9 @@ ddxGiveUp(void)
 }
 
 void
-AbortDDX(void)
+AbortDDX(enum ExitCode error)
 {
-    ddxGiveUp();
+    ddxGiveUp(error);
 }
 
 #ifdef __APPLE__
diff --git a/hw/xfree86/common/xf86Configure.c b/hw/xfree86/common/xf86Configure.c
index 9752669..ab07515 100644
--- a/hw/xfree86/common/xf86Configure.c
+++ b/hw/xfree86/common/xf86Configure.c
@@ -749,7 +749,7 @@ DoConfigure(void)
 
 bail:
     OsCleanup(TRUE);
-    AbortDDX();
+    AbortDDX(EXIT_ERR_CONFIGURE);
     fflush(stderr);
     exit(0);
 }
diff --git a/hw/xfree86/common/xf86Helper.c b/hw/xfree86/common/xf86Helper.c
index 3cdffdb..f8e6c8b 100644
--- a/hw/xfree86/common/xf86Helper.c
+++ b/hw/xfree86/common/xf86Helper.c
@@ -1198,9 +1198,9 @@ xf86LogInit(void)
 }
 
 void
-xf86CloseLog(void)
+xf86CloseLog(enum ExitCode error)
 {
-    LogClose();
+    LogClose(error);
 }
 
 
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index 5347bbf..71926f8 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -902,7 +902,7 @@ OsVendorInit(void)
  */
 
 void
-ddxGiveUp(void)
+ddxGiveUp(enum ExitCode error)
 {
     int i;
 
@@ -929,7 +929,7 @@ ddxGiveUp(void)
     if (xorgHWOpenConsole)
 	xf86CloseConsole();
 
-    xf86CloseLog();
+    xf86CloseLog(error);
 
     /* If an unexpected signal was caught, dump a core for debugging */
     if (xf86Info.caughtSignal)
@@ -946,7 +946,7 @@ ddxGiveUp(void)
  */
 
 void
-AbortDDX(void)
+AbortDDX(enum ExitCode error)
 {
   int i;
 
@@ -979,7 +979,7 @@ AbortDDX(void)
    * This is needed for an abnormal server exit, since the normal exit stuff
    * MUST also be performed (i.e. the vt must be left in a defined state)
    */
-  ddxGiveUp();
+  ddxGiveUp(error);
 }
 
 void
diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h
index 5d91ab3..1fe3d7e 100644
--- a/hw/xfree86/common/xf86Priv.h
+++ b/hw/xfree86/common/xf86Priv.h
@@ -140,7 +140,7 @@ extern _X_EXPORT pmWait (*xf86PMConfirmEventToOs)(int fd,pmEvent event);
 
 /* xf86Helper.c */
 extern _X_EXPORT void xf86LogInit(void);
-extern _X_EXPORT void xf86CloseLog(void);
+extern _X_EXPORT void xf86CloseLog(enum ExitCode error);
 
 /* xf86Init.c */
 extern _X_EXPORT Bool xf86LoadModules(char **list, pointer *optlist);
diff --git a/hw/xfree86/common/xf86ShowOpts.c b/hw/xfree86/common/xf86ShowOpts.c
index c0fa80a..a805916 100644
--- a/hw/xfree86/common/xf86ShowOpts.c
+++ b/hw/xfree86/common/xf86ShowOpts.c
@@ -124,7 +124,7 @@ void DoShowOptions (void) {
 	}
 	bail:
 	OsCleanup (TRUE);                             
-	AbortDDX ();                                                           
+	AbortDDX (EXIT_ERR_DRIVERS);
 	fflush (stderr);                        
 	exit (0);
 }
diff --git a/hw/xnest/Init.c b/hw/xnest/Init.c
index ea0669a..af57518 100644
--- a/hw/xnest/Init.c
+++ b/hw/xnest/Init.c
@@ -114,16 +114,16 @@ CloseInput(void)
 /*
  * DDX - specific abort routine.  Called by AbortServer().
  */
-void AbortDDX(void)
+void AbortDDX(enum ExitCode error)
 {
   xnestDoFullGeneration = True;
   xnestCloseDisplay();
 }
 
 /* Called by GiveUp(). */
-void ddxGiveUp(void)
+void ddxGiveUp(enum ExitCode error)
 {
-  AbortDDX();
+  AbortDDX(error);
 }
 
 #ifdef __APPLE__
diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c
index 73685b0..f19d7bf 100644
--- a/hw/xquartz/darwin.c
+++ b/hw/xquartz/darwin.c
@@ -766,9 +766,9 @@ void ddxUseMsg( void )
  * ddxGiveUp --
  *      Device dependent cleanup. Called by dix before normal server death.
  */
-void ddxGiveUp( void )
+void ddxGiveUp( enum ExitCode error )
 {
-    ErrorF( "Quitting Xquartz\n" );
+    LogClose(error);
 }
 
 
@@ -779,7 +779,7 @@ void ddxGiveUp( void )
  *      are closed.
  */
 _X_NORETURN
-void AbortDDX( void ) {
+void AbortDDX( enum ExitCode error ) {
     ErrorF( "   AbortDDX\n" );
     OsAbort();
 }
diff --git a/hw/xwin/InitOutput.c b/hw/xwin/InitOutput.c
index 22ef8da..4fe5053 100644
--- a/hw/xwin/InitOutput.c
+++ b/hw/xwin/InitOutput.c
@@ -191,7 +191,7 @@ ddxBeforeReset (void)
 
 /* See Porting Layer Definition - p. 57 */
 void
-ddxGiveUp (void)
+ddxGiveUp (enum ExitCode error)
 {
   int		i;
 
@@ -228,7 +228,7 @@ ddxGiveUp (void)
     g_pszLogFile = LogInit (g_pszLogFile, NULL);
     g_fLogInited = TRUE;
   }  
-  LogClose ();
+  LogClose (error);
 
   /*
    * At this point we aren't creating any new screens, so
@@ -258,12 +258,12 @@ ddxGiveUp (void)
 
 /* See Porting Layer Definition - p. 57 */
 void
-AbortDDX (void)
+AbortDDX (enum ExitCode error)
 {
 #if CYGDEBUG
   winDebug ("AbortDDX\n");
 #endif
-  ddxGiveUp ();
+  ddxGiveUp (error);
 }
 
 #ifdef __CYGWIN__
@@ -901,7 +901,7 @@ ddxUseMsg(void)
     g_pszLogFile = LogInit (g_pszLogFile, NULL);
     g_fLogInited = TRUE;
   }  
-  LogClose ();
+  LogClose (EXIT_NO_ERROR);
 
   /* Notify user where UseMsg text can be found.*/
   if (!g_fNoHelpMessageBox)
diff --git a/hw/xwin/winerror.c b/hw/xwin/winerror.c
index 5e32d09..0440d13 100644
--- a/hw/xwin/winerror.c
+++ b/hw/xwin/winerror.c
@@ -81,7 +81,7 @@ OsVendorFatalError (void)
     g_fLogInited = TRUE;
     g_pszLogFile = LogInit (g_pszLogFile, NULL);
   }
-  LogClose ();
+  LogClose (EXIT_ERR_ABORT);
 
   winMessageBoxF (
           "A fatal error has occurred and " PROJECT_NAME " will now exit.\n" \
diff --git a/include/os.h b/include/os.h
index 506dc5d..a553f57 100644
--- a/include/os.h
+++ b/include/os.h
@@ -459,8 +459,15 @@ typedef struct {
 /* stuff for FlushCallback */
 extern _X_EXPORT CallbackListPtr FlushCallback;
 
-extern _X_EXPORT void AbortDDX(void);
-extern _X_EXPORT void ddxGiveUp(void);
+enum ExitCode {
+    EXIT_NO_ERROR	= 0,
+    EXIT_ERR_ABORT	= 1,
+    EXIT_ERR_CONFIGURE	= 2,
+    EXIT_ERR_DRIVERS	= 3,
+};
+
+extern _X_EXPORT void AbortDDX(enum ExitCode error);
+extern _X_EXPORT void ddxGiveUp(enum ExitCode error);
 extern _X_EXPORT int TimeSinceLastInputEvent(void);
 
 /* strcasecmp.c */
@@ -508,7 +515,7 @@ typedef enum {
 } MessageType;
 
 extern _X_EXPORT const char *LogInit(const char *fname, const char *backup);
-extern _X_EXPORT void LogClose(void);
+extern _X_EXPORT void LogClose(enum ExitCode error);
 extern _X_EXPORT Bool LogSetParameter(LogParameter param, int value);
 extern _X_EXPORT void LogVWrite(int verb, const char *f, va_list args) _X_ATTRIBUTE_PRINTF(2,0);
 extern _X_EXPORT void LogWrite(int verb, const char *f, ...) _X_ATTRIBUTE_PRINTF(2,3);
diff --git a/os/log.c b/os/log.c
index 4a310e6..f519762 100644
--- a/os/log.c
+++ b/os/log.c
@@ -231,9 +231,11 @@ LogInit(const char *fname, const char *backup)
 }
 
 void
-LogClose(void)
+LogClose(enum ExitCode error)
 {
     if (logFile) {
+	ErrorF("Server terminated %s (%d). Closing log file.\n",
+		(error == EXIT_NO_ERROR) ? "successfully" : "with error", error);
 	fclose(logFile);
 	logFile = NULL;
     }
@@ -411,7 +413,7 @@ AbortServer(void)
     CloseWellKnownConnections();
     OsCleanup(TRUE);
     CloseDownDevices();
-    AbortDDX();
+    AbortDDX(EXIT_ERR_ABORT);
     fflush(stderr);
     if (CoreDump)
 	OsAbort();

commit 01de08c7d2c00eef238adba6665896ea3cd7d511
Author: Julien Cristau <jcristau@debian.org>
Date:   Tue Jul 26 20:40:38 2011 +0200


Reply to: