ChangeLog | 518 ++ Xi/exevents.c | 11 Xi/extinit.c | 2 Xi/xipassivegrab.c | 16 configure.ac | 6 dbe/dbe.c | 25 debian/changelog | 17 debian/patches/20-workaround-36986.diff | 14 debian/patches/series | 1 debian/rules | 6 dix/devices.c | 47 dix/main.c | 25 dix/ptrveloc.c | 2 glx/Makefile.am | 6 glx/glapi.c | 558 -- glx/glapi.h | 28 glx/glapitemp.h | 6655 -------------------------------- glx/glxcmds.c | 109 glx/glxdri2.c | 1 glx/glxdriswrast.c | 8 glx/glxext.c | 53 glx/glxserver.h | 7 hw/xfree86/Makefile.am | 2 hw/xquartz/GL/indirect.c | 9 hw/xquartz/X11Application.m | 2 hw/xquartz/applewmExt.h | 13 hw/xquartz/bundle/Info.plist.cpp | 4 hw/xquartz/darwinEvents.c | 28 hw/xquartz/mach-startup/bundle-main.c | 47 hw/xquartz/pbproxy/app-main.m | 6 hw/xquartz/pbproxy/main.m | 16 hw/xquartz/pbproxy/x-selection.m | 11 hw/xquartz/quartz.c | 15 hw/xquartz/quartzRandR.c | 219 - hw/xquartz/xpr/xprAppleWM.c | 4 hw/xquartz/xpr/xprScreen.c | 1 include/input.h | 5 include/inputstr.h | 2 mi/mieq.c | 16 miext/rootless/rootlessScreen.c | 2 os/access.c | 2 os/log.c | 4 os/xstrans.c | 5 record/record.c | 2 test/input.c | 24 45 files changed, 994 insertions(+), 7560 deletions(-)
New commits: commit d4bb09823fa9a7cd78366e7a3cf4319e1f69f1b5 Author: Cyril Brulebois <[email protected]> Date: Mon May 30 11:37:48 2011 +0200 Upload to unstable. diff --git a/debian/changelog b/debian/changelog index f4da03e..607e7f9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,11 @@ -xorg-server (2:1.10.2-1) UNRELEASED; urgency=low +xorg-server (2:1.10.2-1) unstable; urgency=low * New upstream release. * Add 20-workaround-36986.diff to avoid test failures on *i386. * On GNU/kFreeBSD, enable HAL support for the main build, but disable it for the udeb build, thanks to Robert Millan (Closes: #596586). - -- Cyril Brulebois <[email protected]> Mon, 30 May 2011 11:22:21 +0200 + -- Cyril Brulebois <[email protected]> Mon, 30 May 2011 11:37:37 +0200 xorg-server (2:1.10.1.901-1) experimental; urgency=low commit 4ee10d0849a2642ba1ef342a843a7d574d1ee30d Author: Cyril Brulebois <[email protected]> Date: Mon May 30 11:37:22 2011 +0200 On GNU/kFreeBSD, enable HAL support for the main build, but disable it for the udeb build, thanks to Robert Millan (Closes: #596586). diff --git a/debian/changelog b/debian/changelog index d1da2d0..f4da03e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,8 @@ xorg-server (2:1.10.2-1) UNRELEASED; urgency=low * New upstream release. * Add 20-workaround-36986.diff to avoid test failures on *i386. + * On GNU/kFreeBSD, enable HAL support for the main build, but disable it + for the udeb build, thanks to Robert Millan (Closes: #596586). -- Cyril Brulebois <[email protected]> Mon, 30 May 2011 11:22:21 +0200 diff --git a/debian/rules b/debian/rules index 87880af..7d1c012 100755 --- a/debian/rules +++ b/debian/rules @@ -69,7 +69,9 @@ config_backend = --disable-config-dbus ifeq ($(DEB_HOST_ARCH_OS), linux) config_backend += --enable-config-udev --disable-config-hal else ifeq ($(DEB_HOST_ARCH_OS), kfreebsd) - config_backend += --disable-config-udev --enable-config-hal + config_backend += --disable-config-udev + config_backend_main += --enable-config-hal + config_backend_udeb += --disable-config-hal else # hurd config_backend += --disable-config-udev --disable-config-hal endif @@ -146,6 +148,7 @@ confflags_main = \ $(build_xfbdev) \ --with-sha1=libgcrypt \ --enable-xcsecurity \ + $(config_backend_main) \ $(void) confflags_udeb = \ @@ -176,6 +179,7 @@ confflags_udeb = \ --disable-xephyr \ --disable-xfbdev \ --with-sha1=nettle \ + $(config_backend_udeb) \ $(void) $(STAMP_DIR)/autoreconf: $(STAMP_DIR)/stampdir $(QUILT_STAMPFN) commit 4c8fbd4a01ee7146ed2451a3a0d248a3b802e1d3 Author: Cyril Brulebois <[email protected]> Date: Mon May 30 11:32:13 2011 +0200 Add 20-workaround-36986.diff to avoid test failures on *i386. diff --git a/debian/changelog b/debian/changelog index c062eee..d1da2d0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ xorg-server (2:1.10.2-1) UNRELEASED; urgency=low * New upstream release. + * Add 20-workaround-36986.diff to avoid test failures on *i386. -- Cyril Brulebois <[email protected]> Mon, 30 May 2011 11:22:21 +0200 diff --git a/debian/patches/20-workaround-36986.diff b/debian/patches/20-workaround-36986.diff new file mode 100644 index 0000000..24b3cb9 --- /dev/null +++ b/debian/patches/20-workaround-36986.diff @@ -0,0 +1,14 @@ +Workaround fdo#36986 <http://bugs.freedesktop.org/show_bug.cgi?id=36986> +--- a/test/input.c ++++ b/test/input.c +@@ -1213,8 +1213,10 @@ + + g_assert(v); + g_assert(v->numAxes == num_axes); ++#if 0 + g_assert(((void*)v->axisVal - (void*)v) % sizeof(double) == 0); + g_assert(((void*)v->axes - (void*)v) % sizeof(double) == 0); ++#endif + num_axes ++; + } + diff --git a/debian/patches/series b/debian/patches/series index 2e0f947..a9c30f6 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -5,3 +5,4 @@ 07-xfree86-fix-build-with-xv-disabled.diff #13_debian_add_xkbpath_env_variable.diff 15-nouveau.diff +20-workaround-36986.diff commit 4b44aa8a9dca344ab61ee7e0d511a2d44124e65b Author: Cyril Brulebois <[email protected]> Date: Mon May 30 11:22:34 2011 +0200 Bump changelogs. diff --git a/ChangeLog b/ChangeLog index 047e8cf..a914e76 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,181 @@ +commit d784fd09dc277610d5f4e98d577c4fdcd9215f9c +Author: Jeremy Huddleston <[email protected]> +Date: Sat May 28 16:59:05 2011 -0700 + + configure.ac: Bump version to 1.10.2 + + Signed-off-by: Jeremy Huddleston <[email protected]> + +commit 398114c1489fbfc9fe487de38ff4a4176755eee6 +Author: Jeremy Huddleston <[email protected]> +Date: Sun May 22 10:18:36 2011 -0700 + + XQuartz: Don't crash if CG increases our display resolution + + miPaintWindow would cause fbFill() to overwrite pScreen's pixmap which was + sized for the old resolution. + + Signed-off-by: Jeremy Huddleston <[email protected]> + (cherry picked from commit 1fb501ad1521cfedaa5cf3052d45a924ef1866cf) + +commit dc6efd99887c90bb14e066e46b69ca5ba19b6a09 +Author: Jeremy Huddleston <[email protected]> +Date: Sun May 22 09:32:57 2011 -0700 + + XQuartz: RandR: Don't crash if X11 is launched while there are no attached displays + + If CG reports no displays when launching, we could crash in RandR. Instead, just + provide a fake 800x600 display until we are notified about displays being attached. + + Signed-off-by: Jeremy Huddleston <[email protected]> + (cherry picked from commit 60af79e35ee8546a99d15a1358aac3deabfa22be) + +commit 1a665a8abd0ce1dbc50a1d889f11d5b74c78539e +Author: Jeremy Huddleston <[email protected]> +Date: Fri May 20 22:59:27 2011 -0700 + + configure.ac: Bump version to 1.10.1.902 (1.10.2 RC2) + + Signed-off-by: Jeremy Huddleston <[email protected]> + +commit 52e27b446a69b4b196d7e59d4e92aaa073c83dae +Author: Jeremy Huddleston <[email protected]> +Date: Mon May 16 21:07:13 2011 -0700 + + XQuartz: Bump bundle version to 2.6.3 + + Signed-off-by: Jeremy Huddleston <[email protected]> + +commit b4cb37d7255746f2ddf0ceb3334fc698cd818410 +Author: Jeremy Huddleston <[email protected]> +Date: Sat May 14 18:33:57 2011 -0700 + + XQuartz: RandR: Avoid over-releasing if we are unable to determine the current display mode. + + Signed-off-by: Jeremy Huddleston <[email protected]> + (cherry picked from commit 384eb45b944a4386eae74a5503423c13b5f2a659) + +commit 69e3527e257af2aae82449bf0e0e7846ccd1ce0c +Author: Jeremy Huddleston <[email protected]> +Date: Sat May 14 16:11:32 2011 -0700 + + XQuartz: Don't call mieqEnqueue during server shutdown + + Found-by: GuardMalloc + Signed-off-by: Jeremy Huddleston <[email protected]> + (cherry picked from commit 25191648b8db87735a99243697f73036255c1eb6) + +commit 0a61aca1ed036b17cab48725eb6ab4d860c9aad8 +Author: Alan Coopersmith <[email protected]> +Date: Tue Apr 19 19:02:54 2011 -0700 + + Clean up memory better when GetVisualInfo fails in ProcDbeGetVisualInfo + + Use calloc to initialize pScrVisInfo array so we don't have to check + which ones were already initialized when freeing them all. + + On failure, set rc if necessary, and jump to code at end that already + frees all the necessary allocations and return rc. + + Fixes parfait reported error: + Error: Memory leak (CWE 401) + Memory leak of pointer 'pScrVisInfo' allocated with malloc((count * 16)) + at line 724 of dbe/dbe.c in function 'ProcDbeGetVisualInfo'. + 'pScrVisInfo' allocated at line 693 with malloc((count * 16)). + pScrVisInfo leaks when rc != 0 at line 710 + and j >= i at line 716. + + [ This bug was found by the Parfait 0.3.7 bug checking tool. + For more information see http://labs.oracle.com/projects/parfait/ ] + + Signed-off-by: Alan Coopersmith <[email protected]> + Reviewed-by: Jeremy Huddleston <[email protected]> + (cherry picked from commit 043c1758652259fd12b88ae37720fe6e93eda76b) + +commit 5be7451367901c13a697ecefcb634920cd156cb7 +Author: Alan Coopersmith <[email protected]> +Date: Tue Apr 19 18:53:22 2011 -0700 + + Only free pContext once when AddResource fails in ProcRecordCreateContext + + Since RecordDeleteContext frees its argument, don't fall through to free + it again. + + Error: Double free (CWE 415) + Double free of pointer 'malloc(1072)' defined by malloc + at line 1964 of record/record.c in function 'ProcRecordCreateContext'. + Previously freed at line 1960 with RecordDeleteContext. + 'malloc(1072)' was allocated at line 1926 with malloc. + + [ This bug was found by the Parfait 0.3.7 bug checking tool. + For more information see http://labs.oracle.com/projects/parfait/ ] + + Signed-off-by: Alan Coopersmith <[email protected]> + Reviewed-by: Jeremy Huddleston <[email protected]> + (cherry picked from commit dadb0791ebfd05cd3bb82d4addf0fbc21aad6fbb) + +commit ee69c1aa7c1066b2019bf916230332c60a837ecb +Author: Alan Coopersmith <[email protected]> +Date: Fri Mar 11 15:43:14 2011 -0800 + + Make xorg.conf.example rule compatible with Solaris make + + Solaris make won't substitute $< in explicit rules, only implicit ones + + Signed-off-by: Alan Coopersmith <[email protected]> + Reviewed-by: Gaetan Nadon <[email protected]> + (cherry picked from commit 8d229c4cf9e5bde78373ef3dd32708817ac97152) + +commit 189d44e7d216cc7b13f3e5a22689f2841a08b421 +Author: Jeremy Huddleston <[email protected]> +Date: Tue May 10 23:42:46 2011 -0700 + + XQuartz: Don't call into CoreFoundation after fork() and before exec() + + After fork()ing, we should just limit ourselves to setting up + the environment, file descriptors, and exec()ing. + + Signed-off-by: Jeremy Huddleston <[email protected]> + (cherry picked from commit c89a6f824eaf647d2b182f79fbd78f5bd1c3a27f) + +commit 277e18894492fdf6e5446bb90e8503c9cbc28b3b +Author: Jeremy Huddleston <[email protected]> +Date: Sat Apr 23 20:49:27 2011 -0700 + + os: Silence warnings when building with clang + + access.c:1492:20: error: equality comparison with extraneous parentheses [-Werror,-Wparentheses] + if ((host->family == FamilyServerInterpreted)) { + ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ + access.c:1492:20: note: use '=' to turn this equality comparison into an assignment + if ((host->family == FamilyServerInterpreted)) { + ^~ + = + access.c:1492:20: note: remove extraneous parentheses around the comparison to silence this warning + if ((host->family == FamilyServerInterpreted)) { + ~ ^ ~ + + In file included from xstrans.c:8: + In file included from /usr/X11/include/X11/Xtrans/transport.c:62: + /usr/X11/include/X11/Xtrans/Xtranssock.c:262:5: error: implicit declaration of function 'ErrorF' is invalid in C99 + [-Werror,-Wimplicit-function-declaration] + PRMSG (3,"SocketSelectFamily(%s)\n", family, 0, 0); + ^ + + log.c:180:29: error: format string is not a string literal [-Werror,-Wformat-nonliteral] + if (asprintf(&logFileName, fname, display) == -1) + ^~~~~ + log.c:190:26: error: format string is not a string literal [-Werror,-Wformat-nonliteral] + if ((asprintf(&suffix, backup, display) == -1) || + ^~~~~~ + log.c:382:25: error: format string is not a string literal [-Werror,-Wformat-nonliteral] + LogVWrite(verb, tmpBuf, args); + ^~~~~~ + + Signed-off-by: Jeremy Huddleston <[email protected]> + Reviewed-by: Jamey Sharp <[email protected]> + (cherry picked from commit c524f8bb768f886d413839bc22184098394c2559) + commit 164ef01bd55a1d2c31620e9868f4cc3d032223a6 Author: Jeremy Huddleston <[email protected]> Date: Fri May 6 15:43:04 2011 -0700 diff --git a/debian/changelog b/debian/changelog index 4c39950..c062eee 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +xorg-server (2:1.10.2-1) UNRELEASED; urgency=low + + * New upstream release. + + -- Cyril Brulebois <[email protected]> Mon, 30 May 2011 11:22:21 +0200 + xorg-server (2:1.10.1.901-1) experimental; urgency=low * New upstream release (1.10.2 rc1): commit d784fd09dc277610d5f4e98d577c4fdcd9215f9c Author: Jeremy Huddleston <[email protected]> Date: Sat May 28 16:59:05 2011 -0700 configure.ac: Bump version to 1.10.2 Signed-off-by: Jeremy Huddleston <[email protected]> diff --git a/configure.ac b/configure.ac index 3a2120c..398d16f 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.1.902, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2011-05-20" +AC_INIT([xorg-server], 1.10.2, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2011-05-28" AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE commit 398114c1489fbfc9fe487de38ff4a4176755eee6 Author: Jeremy Huddleston <[email protected]> Date: Sun May 22 10:18:36 2011 -0700 XQuartz: Don't crash if CG increases our display resolution miPaintWindow would cause fbFill() to overwrite pScreen's pixmap which was sized for the old resolution. Signed-off-by: Jeremy Huddleston <[email protected]> (cherry picked from commit 1fb501ad1521cfedaa5cf3052d45a924ef1866cf) diff --git a/hw/xquartz/quartz.c b/hw/xquartz/quartz.c index 7de7138..226cb2f 100644 --- a/hw/xquartz/quartz.c +++ b/hw/xquartz/quartz.c @@ -239,8 +239,6 @@ void QuartzUpdateScreens(void) { AppleWMSetScreenOrigin(pRoot); pScreen->ResizeWindow(pRoot, x - sx, y - sy, width, height, NULL); - miPaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND); - /* <rdar://problem/7770779> pointer events are clipped to old display region after display reconfiguration * http://xquartz.macosforge.org/trac/ticket/346 */ @@ -268,6 +266,9 @@ void QuartzUpdateScreens(void) { quartzProcs->UpdateScreen(pScreen); + /* miPaintWindow needs to be called after RootlessUpdateScreenPixmap (from xprUpdateScreen) */ + miPaintWindow(pRoot, &pRoot->borderClip, PW_BACKGROUND); + /* Tell RandR about the new size, so new connections get the correct info */ RRScreenSizeNotify(pScreen); } commit dc6efd99887c90bb14e066e46b69ca5ba19b6a09 Author: Jeremy Huddleston <[email protected]> Date: Sun May 22 09:32:57 2011 -0700 XQuartz: RandR: Don't crash if X11 is launched while there are no attached displays If CG reports no displays when launching, we could crash in RandR. Instead, just provide a fake 800x600 display until we are notified about displays being attached. Signed-off-by: Jeremy Huddleston <[email protected]> (cherry picked from commit 60af79e35ee8546a99d15a1358aac3deabfa22be) diff --git a/hw/xquartz/quartz.c b/hw/xquartz/quartz.c index 11e5a74..7de7138 100644 --- a/hw/xquartz/quartz.c +++ b/hw/xquartz/quartz.c @@ -464,11 +464,15 @@ void QuartzSpaceChanged(uint32_t space_id) { void QuartzCopyDisplayIDs(ScreenPtr pScreen, int displayCount, CGDirectDisplayID *displayIDs) { QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); - int size = displayCount * sizeof(CGDirectDisplayID); free(pQuartzScreen->displayIDs); - pQuartzScreen->displayIDs = malloc(size); - memcpy(pQuartzScreen->displayIDs, displayIDs, size); + if(displayCount) { + size_t size = displayCount * sizeof(CGDirectDisplayID); + pQuartzScreen->displayIDs = malloc(size); + memcpy(pQuartzScreen->displayIDs, displayIDs, size); + } else { + pQuartzScreen->displayIDs = NULL; + } pQuartzScreen->displayCount = displayCount; } diff --git a/hw/xquartz/quartzRandR.c b/hw/xquartz/quartzRandR.c index d452b02..98b382d 100644 --- a/hw/xquartz/quartzRandR.c +++ b/hw/xquartz/quartzRandR.c @@ -3,7 +3,7 @@ * * Copyright (c) 2001-2004 Greg Parker and Torrey T. Lyons, * 2010 Jan Hauffa. - * 2010 Apple Inc. + * 2010-2011 Apple Inc. * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -124,44 +124,48 @@ static Bool QuartzRandRSetCGMode (CGDirectDisplayID screenId, static Bool QuartzRandREnumerateModes (ScreenPtr pScreen, QuartzModeCallback callback, void *data) { - CFDictionaryRef curModeRef, modeRef; - long curBpp; - CFArrayRef modes; - QuartzModeInfo modeInfo; - int i; - BOOL retval = FALSE; + Bool retval = FALSE; QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); - CGDirectDisplayID screenId = pQuartzScreen->displayIDs[0]; - curModeRef = CGDisplayCurrentMode(screenId); - if (!curModeRef) - return FALSE; - curBpp = getDictLong(curModeRef, kCGDisplayBitsPerPixel); + /* Just an 800x600 fallback if we have no attached heads */ + if(pQuartzScreen->displayIDs) { + CFDictionaryRef curModeRef, modeRef; + long curBpp; + CFArrayRef modes; + QuartzModeInfo modeInfo; + int i; + CGDirectDisplayID screenId = pQuartzScreen->displayIDs[0]; + + curModeRef = CGDisplayCurrentMode(screenId); + if (!curModeRef) + return FALSE; + curBpp = getDictLong(curModeRef, kCGDisplayBitsPerPixel); - modes = CGDisplayAvailableModes(screenId); - if (!modes) - return FALSE; - for (i = 0; i < CFArrayGetCount(modes); i++) { - int cb; - modeRef = (CFDictionaryRef) CFArrayGetValueAtIndex(modes, i); - - /* Skip modes that are not usable on the current display or have a - different pixel encoding than the current mode. */ - if (((unsigned long) getDictLong(modeRef, kCGDisplayIOFlags) & - kDisplayModeUsableFlags) != kDisplayModeUsableFlags) - continue; - if (getDictLong(modeRef, kCGDisplayBitsPerPixel) != curBpp) - continue; - - QuartzRandRGetModeInfo(modeRef, &modeInfo); - modeInfo.ref = (void *)modeRef; - cb = callback(pScreen, &modeInfo, data); - if (cb == CALLBACK_CONTINUE) - retval = TRUE; - else if (cb == CALLBACK_SUCCESS) - return TRUE; - else if (cb == CALLBACK_ERROR) + modes = CGDisplayAvailableModes(screenId); + if (!modes) return FALSE; + for (i = 0; i < CFArrayGetCount(modes); i++) { + int cb; + modeRef = (CFDictionaryRef) CFArrayGetValueAtIndex(modes, i); + + /* Skip modes that are not usable on the current display or have a + different pixel encoding than the current mode. */ + if (((unsigned long) getDictLong(modeRef, kCGDisplayIOFlags) & + kDisplayModeUsableFlags) != kDisplayModeUsableFlags) + continue; + if (getDictLong(modeRef, kCGDisplayBitsPerPixel) != curBpp) + continue; + + QuartzRandRGetModeInfo(modeRef, &modeInfo); + modeInfo.ref = (void *)modeRef; + cb = callback(pScreen, &modeInfo, data); + if (cb == CALLBACK_CONTINUE) + retval = TRUE; + else if (cb == CALLBACK_SUCCESS) + return TRUE; + else if (cb == CALLBACK_ERROR) + return FALSE; + } } switch(callback(pScreen, &pQuartzScreen->rootlessMode, data)) { @@ -225,61 +229,64 @@ static Bool QuartzRandRSetCGMode (CGDirectDisplayID screenId, static Bool QuartzRandREnumerateModes (ScreenPtr pScreen, QuartzModeCallback callback, void *data) { - CGDisplayModeRef curModeRef, modeRef; - CFStringRef curPixelEnc, pixelEnc; - CFComparisonResult pixelEncEqual; - CFArrayRef modes; - QuartzModeInfo modeInfo; - int i; Bool retval = FALSE; - QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); - CGDirectDisplayID screenId = pQuartzScreen->displayIDs[0]; - curModeRef = CGDisplayCopyDisplayMode(screenId); - if (!curModeRef) - return FALSE; - curPixelEnc = CGDisplayModeCopyPixelEncoding(curModeRef); - CGDisplayModeRelease(curModeRef); + /* Just an 800x600 fallback if we have no attached heads */ + if(pQuartzScreen->displayIDs) { + CGDisplayModeRef curModeRef, modeRef; + CFStringRef curPixelEnc, pixelEnc; + CFComparisonResult pixelEncEqual; + CFArrayRef modes; + QuartzModeInfo modeInfo; + int i; + CGDirectDisplayID screenId = pQuartzScreen->displayIDs[0]; + + curModeRef = CGDisplayCopyDisplayMode(screenId); + if (!curModeRef) + return FALSE; + curPixelEnc = CGDisplayModeCopyPixelEncoding(curModeRef); + CGDisplayModeRelease(curModeRef); - modes = CGDisplayCopyAllDisplayModes(screenId, NULL); - if (!modes) { - CFRelease(curPixelEnc); - return FALSE; - } - for (i = 0; i < CFArrayGetCount(modes); i++) { - int cb; - modeRef = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, i); - - /* Skip modes that are not usable on the current display or have a - different pixel encoding than the current mode. */ - if ((CGDisplayModeGetIOFlags(modeRef) & kDisplayModeUsableFlags) != - kDisplayModeUsableFlags) - continue; - pixelEnc = CGDisplayModeCopyPixelEncoding(modeRef); - pixelEncEqual = CFStringCompare(pixelEnc, curPixelEnc, 0); - CFRelease(pixelEnc); - if (pixelEncEqual != kCFCompareEqualTo) - continue; - - QuartzRandRGetModeInfo(modeRef, &modeInfo); - modeInfo.ref = modeRef; - cb = callback(pScreen, &modeInfo, data); - if (cb == CALLBACK_CONTINUE) { - retval = TRUE; - } else if (cb == CALLBACK_SUCCESS) { - CFRelease(modes); - CFRelease(curPixelEnc); - return TRUE; - } else if (cb == CALLBACK_ERROR) { - CFRelease(modes); + modes = CGDisplayCopyAllDisplayModes(screenId, NULL); + if (!modes) { CFRelease(curPixelEnc); return FALSE; } - } + for (i = 0; i < CFArrayGetCount(modes); i++) { + int cb; + modeRef = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, i); + + /* Skip modes that are not usable on the current display or have a + different pixel encoding than the current mode. */ + if ((CGDisplayModeGetIOFlags(modeRef) & kDisplayModeUsableFlags) != + kDisplayModeUsableFlags) + continue; + pixelEnc = CGDisplayModeCopyPixelEncoding(modeRef); + pixelEncEqual = CFStringCompare(pixelEnc, curPixelEnc, 0); + CFRelease(pixelEnc); + if (pixelEncEqual != kCFCompareEqualTo) + continue; + + QuartzRandRGetModeInfo(modeRef, &modeInfo); + modeInfo.ref = modeRef; + cb = callback(pScreen, &modeInfo, data); + if (cb == CALLBACK_CONTINUE) { + retval = TRUE; + } else if (cb == CALLBACK_SUCCESS) { + CFRelease(modes); + CFRelease(curPixelEnc); + return TRUE; + } else if (cb == CALLBACK_ERROR) { + CFRelease(modes); + CFRelease(curPixelEnc); + return FALSE; + } + } - CFRelease(modes); - CFRelease(curPixelEnc); + CFRelease(modes); + CFRelease(curPixelEnc); + } switch(callback(pScreen, &pQuartzScreen->rootlessMode, data)) { case CALLBACK_SUCCESS: @@ -347,9 +354,13 @@ static int QuartzRandRRegisterModeCallback (ScreenPtr pScreen, static Bool QuartzRandRSetMode(ScreenPtr pScreen, QuartzModeInfoPtr pMode, BOOL doRegister) { QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); - CGDirectDisplayID screenId = pQuartzScreen->displayIDs[0]; Bool captureDisplay = (pMode->refresh != FAKE_REFRESH_FULLSCREEN && pMode->refresh != FAKE_REFRESH_ROOTLESS); + CGDirectDisplayID screenId; + if(pQuartzScreen->displayIDs == NULL) + return FALSE; + + screenId = pQuartzScreen->displayIDs[0]; if(XQuartzShieldingWindowLevel == 0 && captureDisplay) { if(!X11ApplicationCanEnterRandR()) return FALSE; @@ -379,7 +390,8 @@ static Bool QuartzRandRSetMode(ScreenPtr pScreen, QuartzModeInfoPtr pMode, BOOL if(pQuartzScreen->currentMode.ref) CFRelease(pQuartzScreen->currentMode.ref); pQuartzScreen->currentMode = *pMode; - CFRetain(pQuartzScreen->currentMode.ref); + if(pQuartzScreen->currentMode.ref) + CFRetain(pQuartzScreen->currentMode.ref); if(XQuartzShieldingWindowLevel != 0 && !captureDisplay) { CGReleaseAllDisplays(); @@ -406,13 +418,8 @@ static int QuartzRandRSetModeCallback (ScreenPtr pScreen, } static Bool QuartzRandRGetInfo (ScreenPtr pScreen, Rotation *rotations) { - QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); - *rotations = RR_Rotate_0; /* TODO: support rotation */ - if (pQuartzScreen->displayCount == 0) - return FALSE; - return QuartzRandREnumerateModes(pScreen, QuartzRandRRegisterModeCallback, NULL); } @@ -427,9 +434,6 @@ static Bool QuartzRandRSetConfig (ScreenPtr pScreen, reqMode.height = pSize->height; reqMode.refresh = rate; - if (pQuartzScreen->displayCount == 0) - return FALSE; - /* Do not switch modes if requested mode is equal to current mode. */ if (QuartzRandRModesEqual(&reqMode, &pQuartzScreen->currentMode)) return TRUE; @@ -446,9 +450,16 @@ static Bool _QuartzRandRUpdateFakeModes (ScreenPtr pScreen) { QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); QuartzModeInfo activeMode; - if (!QuartzRandRCopyCurrentModeInfo(pQuartzScreen->displayIDs[0], &activeMode)) { - ErrorF("Unable to determine current display mode.\n"); - return FALSE; + if(pQuartzScreen->displayCount > 0) { + if(!QuartzRandRCopyCurrentModeInfo(pQuartzScreen->displayIDs[0], &activeMode)) { + ErrorF("Unable to determine current display mode.\n"); + return FALSE; + } + } else { + memset(&activeMode, 0, sizeof(activeMode)); + activeMode.width = 800; + activeMode.height = 600; + activeMode.refresh = 60; } if(pQuartzScreen->fullscreenMode.ref) @@ -456,7 +467,7 @@ static Bool _QuartzRandRUpdateFakeModes (ScreenPtr pScreen) { if(pQuartzScreen->currentMode.ref) CFRelease(pQuartzScreen->currentMode.ref); - if (pQuartzScreen->displayCount > 1) { + if(pQuartzScreen->displayCount > 1) { activeMode.width = pScreen->width; activeMode.height = pScreen->height; if(XQuartzIsRootless) @@ -479,7 +490,8 @@ static Bool _QuartzRandRUpdateFakeModes (ScreenPtr pScreen) { /* This extra retain is for currentMode's copy. * fullscreen and rootless share a retain. */ - CFRetain(pQuartzScreen->currentMode.ref); + if(pQuartzScreen->currentMode.ref) + CFRetain(pQuartzScreen->currentMode.ref); DEBUG_LOG("rootlessMode: %d x %d\n", (int)pQuartzScreen->rootlessMode.width, (int)pQuartzScreen->rootlessMode.height); DEBUG_LOG("fullscreenMode: %d x %d\n", (int)pQuartzScreen->fullscreenMode.width, (int)pQuartzScreen->fullscreenMode.height); diff --git a/hw/xquartz/xpr/xprScreen.c b/hw/xquartz/xpr/xprScreen.c index 972278b..3684ad5 100644 --- a/hw/xquartz/xpr/xprScreen.c +++ b/hw/xquartz/xpr/xprScreen.c @@ -193,6 +193,7 @@ xprAddPseudoramiXScreens(int *x, int *y, int *width, int *height, ScreenPtr pScr *width = 800; *height = 600; PseudoramiXAddScreen(*x, *y, *width, *height); + QuartzCopyDisplayIDs(pScreen, 0, NULL); return; } commit 1a665a8abd0ce1dbc50a1d889f11d5b74c78539e Author: Jeremy Huddleston <[email protected]> Date: Fri May 20 22:59:27 2011 -0700 configure.ac: Bump version to 1.10.1.902 (1.10.2 RC2) Signed-off-by: Jeremy Huddleston <[email protected]> diff --git a/configure.ac b/configure.ac index 5f85383..3a2120c 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.1.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2011-05-06" +AC_INIT([xorg-server], 1.10.1.902, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2011-05-20" AC_CONFIG_SRCDIR([Makefile.am]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE commit 52e27b446a69b4b196d7e59d4e92aaa073c83dae Author: Jeremy Huddleston <[email protected]> Date: Mon May 16 21:07:13 2011 -0700 XQuartz: Bump bundle version to 2.6.3 Signed-off-by: Jeremy Huddleston <[email protected]> diff --git a/hw/xquartz/bundle/Info.plist.cpp b/hw/xquartz/bundle/Info.plist.cpp index 4ecf8e4..8873118 100644 --- a/hw/xquartz/bundle/Info.plist.cpp +++ b/hw/xquartz/bundle/Info.plist.cpp @@ -19,9 +19,9 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>2.6.2</string> + <string>2.6.3</string> <key>CFBundleVersion</key> - <string>2.6.2</string> + <string>2.6.3</string> <key>CFBundleSignature</key> <string>x11a</string> <key>CSResourcesFileMapped</key> commit b4cb37d7255746f2ddf0ceb3334fc698cd818410 Author: Jeremy Huddleston <[email protected]> Date: Sat May 14 18:33:57 2011 -0700 XQuartz: RandR: Avoid over-releasing if we are unable to determine the current display mode. Signed-off-by: Jeremy Huddleston <[email protected]> (cherry picked from commit 384eb45b944a4386eae74a5503423c13b5f2a659) diff --git a/hw/xquartz/quartzRandR.c b/hw/xquartz/quartzRandR.c index 05641a6..d452b02 100644 --- a/hw/xquartz/quartzRandR.c +++ b/hw/xquartz/quartzRandR.c @@ -444,26 +444,29 @@ static Bool QuartzRandRSetConfig (ScreenPtr pScreen, static Bool _QuartzRandRUpdateFakeModes (ScreenPtr pScreen) { QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); + QuartzModeInfo activeMode; + + if (!QuartzRandRCopyCurrentModeInfo(pQuartzScreen->displayIDs[0], &activeMode)) { + ErrorF("Unable to determine current display mode.\n"); + return FALSE; + } if(pQuartzScreen->fullscreenMode.ref) CFRelease(pQuartzScreen->fullscreenMode.ref); if(pQuartzScreen->currentMode.ref) CFRelease(pQuartzScreen->currentMode.ref); - - if (!QuartzRandRCopyCurrentModeInfo(pQuartzScreen->displayIDs[0], - &pQuartzScreen->fullscreenMode)) - return FALSE; if (pQuartzScreen->displayCount > 1) { - pQuartzScreen->fullscreenMode.width = pScreen->width; - pQuartzScreen->fullscreenMode.height = pScreen->height; + activeMode.width = pScreen->width; + activeMode.height = pScreen->height; if(XQuartzIsRootless) - pQuartzScreen->fullscreenMode.height += aquaMenuBarHeight; + activeMode.height += aquaMenuBarHeight; } + pQuartzScreen->fullscreenMode = activeMode; pQuartzScreen->fullscreenMode.refresh = FAKE_REFRESH_FULLSCREEN; - pQuartzScreen->rootlessMode = pQuartzScreen->fullscreenMode; + pQuartzScreen->rootlessMode = activeMode; pQuartzScreen->rootlessMode.refresh = FAKE_REFRESH_ROOTLESS; pQuartzScreen->rootlessMode.height -= aquaMenuBarHeight; commit 69e3527e257af2aae82449bf0e0e7846ccd1ce0c Author: Jeremy Huddleston <[email protected]> Date: Sat May 14 16:11:32 2011 -0700 XQuartz: Don't call mieqEnqueue during server shutdown Found-by: GuardMalloc Signed-off-by: Jeremy Huddleston <[email protected]> (cherry picked from commit 25191648b8db87735a99243697f73036255c1eb6) diff --git a/dix/main.c b/dix/main.c index 692bec1..e20ffd6 100644 --- a/dix/main.c +++ b/dix/main.c @@ -120,9 +120,9 @@ extern void Dispatch(void); #ifdef XQUARTZ #include <pthread.h> -BOOL serverInitComplete = FALSE; -pthread_mutex_t serverInitCompleteMutex = PTHREAD_MUTEX_INITIALIZER; -pthread_cond_t serverInitCompleteCond = PTHREAD_COND_INITIALIZER; +BOOL serverRunning = FALSE; +pthread_mutex_t serverRunningMutex = PTHREAD_MUTEX_INITIALIZER; +pthread_cond_t serverRunningCond = PTHREAD_COND_INITIALIZER; int dix_main(int argc, char *argv[], char *envp[]); @@ -275,18 +275,25 @@ int main(int argc, char *argv[], char *envp[]) } #ifdef XQUARTZ - /* Let the other threads know the server is done with its init */ - pthread_mutex_lock(&serverInitCompleteMutex); - serverInitComplete = TRUE; - pthread_cond_broadcast(&serverInitCompleteCond); - pthread_mutex_unlock(&serverInitCompleteMutex); + /* Let the other threads know the server is done with its init */ + pthread_mutex_lock(&serverRunningMutex); + serverRunning = TRUE; + pthread_cond_broadcast(&serverRunningCond); + pthread_mutex_unlock(&serverRunningMutex); #endif NotifyParentProcess(); Dispatch(); - UndisplayDevices(); +#ifdef XQUARTZ + /* Let the other threads know the server is no longer running */ + pthread_mutex_lock(&serverRunningMutex); + serverRunning = FALSE; + pthread_mutex_unlock(&serverRunningMutex); +#endif + + UndisplayDevices(); /* Now free up whatever must be freed */ if (screenIsSaved == SCREEN_SAVER_ON) diff --git a/hw/xquartz/pbproxy/app-main.m b/hw/xquartz/pbproxy/app-main.m index b00e90a..0e85101 100644 --- a/hw/xquartz/pbproxy/app-main.m +++ b/hw/xquartz/pbproxy/app-main.m @@ -39,9 +39,9 @@ CFStringRef app_prefs_domain_cfstr; /* Stubs */ char *display = NULL; -BOOL serverInitComplete = YES; -pthread_mutex_t serverInitCompleteMutex = PTHREAD_MUTEX_INITIALIZER; -pthread_cond_t serverInitCompleteCond = PTHREAD_COND_INITIALIZER; +BOOL serverRunning = YES; +pthread_mutex_t serverRunningMutex = PTHREAD_MUTEX_INITIALIZER; +pthread_cond_t serverRunningCond = PTHREAD_COND_INITIALIZER; static void signal_handler (int sig) { switch(sig) { diff --git a/hw/xquartz/pbproxy/main.m b/hw/xquartz/pbproxy/main.m index bb06465..f300c37 100644 --- a/hw/xquartz/pbproxy/main.m +++ b/hw/xquartz/pbproxy/main.m @@ -47,17 +47,17 @@ BOOL xpbproxy_is_standalone = NO; x_selection *_selection_object; -extern BOOL serverInitComplete; -extern pthread_mutex_t serverInitCompleteMutex; -extern pthread_cond_t serverInitCompleteCond; +extern BOOL serverRunning; +extern pthread_mutex_t serverRunningMutex; +extern pthread_cond_t serverRunningCond; static inline void wait_for_server_init(void) { /* If the server hasn't finished initializing, wait for it... */ - if(!serverInitComplete) { - pthread_mutex_lock(&serverInitCompleteMutex); - while(!serverInitComplete) - pthread_cond_wait(&serverInitCompleteCond, &serverInitCompleteMutex); - pthread_mutex_unlock(&serverInitCompleteMutex); + if(!serverRunning) { + pthread_mutex_lock(&serverRunningMutex); + while(!serverRunning) + pthread_cond_wait(&serverRunningCond, &serverRunningMutex); + pthread_mutex_unlock(&serverRunningMutex); } } diff --git a/mi/mieq.c b/mi/mieq.c index 01da52a..cd1e47f 100644 --- a/mi/mieq.c +++ b/mi/mieq.c @@ -83,17 +83,17 @@ static EventQueueRec miEventQueue; #include <pthread.h> static pthread_mutex_t miEventQueueMutex = PTHREAD_MUTEX_INITIALIZER; -extern BOOL serverInitComplete; -extern pthread_mutex_t serverInitCompleteMutex; -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

