diff --git a/packages/x11/xserver/xorg-server/build b/packages/x11/xserver/xorg-server/build index 0268b3aab0..6a9635034d 100755 --- a/packages/x11/xserver/xorg-server/build +++ b/packages/x11/xserver/xorg-server/build @@ -21,15 +21,16 @@ $SCRIPTS/build libX11 $SCRIPTS/build libXfont $SCRIPTS/build libxkbfile $SCRIPTS/build libXv -$SCRIPTS/build $LIBDRM -$SCRIPTS/build $MESA +$SCRIPTS/build libdrm +$SCRIPTS/build Mesa $SCRIPTS/build openssl $SCRIPTS/build freetype $SCRIPTS/build libfontenc $SCRIPTS/build pixman $SCRIPTS/build fontsproto $SCRIPTS/build xf86bigfontproto -$SCRIPTS/build udev +$SCRIPTS/build dbus +$SCRIPTS/build hal if [ "$XINERAMA_SUPPORT" = "yes" ]; then $SCRIPTS/build libXinerama @@ -39,6 +40,7 @@ else fi cd $PKG_BUILD +autoconf ./configure --host=$TARGET_NAME \ --build=$HOST_NAME \ --prefix=/usr \ @@ -59,6 +61,7 @@ cd $PKG_BUILD --enable-registry \ --disable-composite \ $XORG_XINERAMA \ + --enable-null-root-cursor \ --enable-mitshm \ --disable-xres \ --disable-record \ @@ -80,9 +83,8 @@ cd $PKG_BUILD --enable-dbe \ --disable-xf86bigfont \ --enable-dpms \ - --enable-config-udev \ - --disable-config-dbus \ - --disable-config-hal \ + --enable-config-dbus \ + --enable-config-hal \ --enable-xfree86-utils \ --enable-xorg \ --disable-dmx \ @@ -93,23 +95,22 @@ cd $PKG_BUILD --disable-xwin \ --disable-kdrive \ --disable-xephyr \ + --disable-xsdl \ --disable-xfake \ - --disable-xfbdev \ + --enable-xfbdev \ --disable-install-setuid \ --disable-secure-rpc \ --with-int10=x86emu \ --disable-ipv6 \ --with-gnu-ld \ - --with-sha1=libcrypto \ --with-os-vendor="OpenELEC" \ --with-module-dir=$XORG_PATH_MODULES \ --with-xkb-path=$XORG_PATH_XKB \ --with-xkb-output=/var/cache/xkb \ --with-log-dir=/var/log \ --with-dri-driver-path=$XORG_PATH_DRI \ - --with-fontrootdir=$XORG_PATH_FONTS \ - --with-default-font-path="$XORG_PATH_FONTS/misc,built-ins" \ - $XORG_CONFIG \ + --with-fontdir=$XORG_PATH_FONTS \ + --with-default-font-path="$XORG_PATH_FONTS/liberation,$XORG_PATH_FONTS/misc,built-ins" \ make diff --git a/packages/x11/xserver/xorg-server/config/10-quirks.conf b/packages/x11/xserver/xorg-server/config/10-quirks.conf deleted file mode 100644 index 7afad22dc6..0000000000 --- a/packages/x11/xserver/xorg-server/config/10-quirks.conf +++ /dev/null @@ -1,10 +0,0 @@ -# Collection of quirks and blacklist/whitelists for specific devices. - - -# Accelerometer device, posts data through ABS_X/ABS_Y, making X unusable -# http://bugs.freedesktop.org/show_bug.cgi?id=22442 -Section "InputClass" - Identifier "ThinkPad HDAPS accelerometer blacklist" - MatchProduct "ThinkPad HDAPS accelerometer data" - Option "Ignore" "on" -EndSection diff --git a/packages/x11/xserver/xorg-server/init.d/60_xorg b/packages/x11/xserver/xorg-server/init.d/60_xorg index 5dd0d31718..de8f1fcd26 100644 --- a/packages/x11/xserver/xorg-server/init.d/60_xorg +++ b/packages/x11/xserver/xorg-server/init.d/60_xorg @@ -3,7 +3,7 @@ # runlevels: openelec XORG_NVIDIA_CONF="/etc/X11/xorg-nvidia.conf" -XORG_ARGS="-s 0 -nr -noreset -allowMouseOpenFail -nocursor -nolisten tcp" +XORG_ARGS="-s 0 -noreset -allowMouseOpenFail -nocursor -nolisten tcp" #------------------------------------------------------------------------------- # do not change anything below @@ -13,7 +13,6 @@ XORG_ARGS="-s 0 -nr -noreset -allowMouseOpenFail -nocursor -nolisten tcp" if lspci -n | grep 0300 | grep -q 10de; then - XORG_ARGS="$XORG_ARGS -ignoreABI" [ -f $XORG_NVIDIA_CONF ] && XORG_ARGS="$XORG_ARGS -config $XORG_NVIDIA_CONF" progress "Found nVidia card, enabling NVIDIA GLX as requested" diff --git a/packages/x11/xserver/xorg-server/install b/packages/x11/xserver/xorg-server/install index 7a8dab605c..a510cb56b4 100755 --- a/packages/x11/xserver/xorg-server/install +++ b/packages/x11/xserver/xorg-server/install @@ -10,10 +10,11 @@ $SCRIPTS/install openssl $SCRIPTS/install libX11 $SCRIPTS/install libXfont $SCRIPTS/install libXv -$SCRIPTS/install $LIBDRM -$SCRIPTS/install $MESA +$SCRIPTS/install libdrm +$SCRIPTS/install Mesa $SCRIPTS/install pixman -$SCRIPTS/install udev +$SCRIPTS/install dbus +$SCRIPTS/install hal [ "$XINERAMA_SUPPORT" = "yes" ] && $SCRIPTS/install libXinerama @@ -53,8 +54,11 @@ mkdir -p $XORG_DST/multimedia mkdir -p $INSTALL/usr/lib/xorg cp $PKG_BUILD/dix/protocol.txt $INSTALL/usr/lib/xorg -mkdir -p $INSTALL/etc/X11/xorg.conf.d - cp -PR $PKG_DIR/config/*.conf $INSTALL/etc/X11/xorg.conf.d +mkdir -p $INSTALL/etc/dbus-1/system.d + cp $PKG_BUILD/config/xorg-server.conf $INSTALL/etc/dbus-1/system.d + +mkdir -p $INSTALL/usr/share/hal/fdi/policy/10osvendor/ + cp $PKG_BUILD/config/x11-input.fdi $INSTALL/usr/share/hal/fdi/policy/10osvendor/10-x11-input.fdi #Fonts $SCRIPTS/install encodings @@ -72,9 +76,11 @@ mkdir -p $INSTALL/etc/X11/xorg.conf.d $SCRIPTS/install xf86-input-synaptics $SCRIPTS/install xf86-input-wacom +get_graphicdrivers + for drv in $XORG_DRIVERS; do $SCRIPTS/install xf86-video-$drv done -# Tools +#Tools $SCRIPTS/install pciutils diff --git a/packages/x11/xserver/xorg-server/patches/01_cache-xkbcomp-output-for-fast-start-up-v5.3.diff b/packages/x11/xserver/xorg-server/patches/01_cache-xkbcomp-output-for-fast-start-up-v5.3.diff new file mode 100644 index 0000000000..0312982178 --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/01_cache-xkbcomp-output-for-fast-start-up-v5.3.diff @@ -0,0 +1,336 @@ +diff -Naur xorg-server-1.7.99.1/configure xorg-server-1.7.99.1.patch/configure +diff -Naur xorg-server-1.7.99.1/configure.ac xorg-server-1.7.99.1.patch/configure.ac +--- xorg-server-1.7.99.1/configure.ac 2009-10-21 18:06:54.000000000 +0200 ++++ xorg-server-1.7.99.1.patch/configure.ac 2009-10-24 10:51:17.074488205 +0200 +@@ -501,9 +501,9 @@ + AC_ARG_WITH(xkb-path, AS_HELP_STRING([--with-xkb-path=PATH], [Path to XKB base dir (default: ${datadir}/X11/xkb)]), + [ XKBPATH="$withval" ], + [ XKBPATH="${datadir}/X11/xkb" ]) +-AC_ARG_WITH(xkb-output, AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${datadir}/X11/xkb/compiled)]), ++AC_ARG_WITH(xkb-output, AS_HELP_STRING([--with-xkb-output=PATH], [Path to XKB output dir (default: ${localstatedir}/cache/xkb)]), + [ XKBOUTPUT="$withval" ], +- [ XKBOUTPUT="compiled" ]) ++ [ XKBOUTPUT="${localstatedir}/cache/xkb" ]) + AC_ARG_WITH(default-xkb-rules, AS_HELP_STRING([--with-default-xkb-rules=RULES], + [Keyboard ruleset (default: base/evdev)]), + [ XKB_DFLT_RULES="$withval" ], +@@ -1099,7 +1099,7 @@ + dnl Make sure XKM_OUTPUT_DIR is an absolute path + XKBOUTPUT_FIRSTCHAR=`echo $XKBOUTPUT | cut -b 1` + if [[ x$XKBOUTPUT_FIRSTCHAR != x/ -a x$XKBOUTPUT_FIRSTCHAR != 'x$' ]] ; then +- XKBOUTPUT="$XKB_BASE_DIRECTORY/$XKBOUTPUT" ++ AC_MSG_ERROR([xkb-output must be an absolute path.]) + fi + + dnl XKM_OUTPUT_DIR (used in code) must end in / or file names get hosed +diff -Naur xorg-server-1.7.99.1/xkb/ddxLoad.c xorg-server-1.7.99.1.patch/xkb/ddxLoad.c +--- xorg-server-1.7.99.1/xkb/ddxLoad.c 2009-10-21 15:46:53.000000000 +0200 ++++ xorg-server-1.7.99.1.patch/xkb/ddxLoad.c 2009-10-24 10:50:23.303364966 +0200 +@@ -30,6 +30,13 @@ + + #include + ++#ifdef HAVE_SHA1_IN_LIBMD /* Use libmd for SHA1 */ ++# include ++#else /* Use OpenSSL's libcrypto */ ++# include /* buggy openssl/sha.h wants size_t */ ++# include ++#endif ++ + #include + #include + #include +@@ -43,24 +50,13 @@ + #define XKBSRV_NEED_FILE_FUNCS + #include + #include ++#include + #include "xkb.h" + + #if defined(CSRG_BASED) || defined(linux) || defined(__GNU__) + #include + #endif + +- /* +- * If XKM_OUTPUT_DIR specifies a path without a leading slash, it is +- * relative to the top-level XKB configuration directory. +- * Making the server write to a subdirectory of that directory +- * requires some work in the general case (install procedure +- * has to create links to /var or somesuch on many machines), +- * so we just compile into /usr/tmp for now. +- */ +-#ifndef XKM_OUTPUT_DIR +-#define XKM_OUTPUT_DIR "compiled/" +-#endif +- + #define PRE_ERROR_MSG "\"The XKEYBOARD keymap compiler (xkbcomp) reports:\"" + #define ERROR_PREFIX "\"> \"" + #define POST_ERROR_MSG1 "\"Errors from xkbcomp are not fatal to the X server\"" +@@ -175,6 +171,45 @@ + } + + static Bool ++Sha1Asc(char sha1Asc[SHA_DIGEST_LENGTH*2+1], const char * input) ++{ ++ int i; ++ unsigned char sha1[SHA_DIGEST_LENGTH]; ++ ++#ifdef HAVE_SHA1_IN_LIBMD /* Use libmd for SHA1 */ ++ SHA1_CTX ctx; ++ ++ SHA1Init (&ctx); ++ SHA1Update (&ctx, input, strlen(input)); ++ SHA1Final (sha1, &ctx); ++#else /* Use OpenSSL's libcrypto */ ++ SHA_CTX ctx; ++ int success; ++ ++ success = SHA1_Init (&ctx); ++ if (! success) ++ return BadAlloc; ++ ++ success = SHA1_Update (&ctx, input, strlen(input)); ++ if (! success) ++ return BadAlloc; ++ ++ success = SHA1_Final (sha1, &ctx); ++ if (! success) ++ return BadAlloc; ++#endif ++ ++ /* convert sha1 to sha1_asc */ ++ for(i=0; i nameRtrnLen) && nameRtrn) { ++ ErrorF("[xkb] nameRtrn too small to hold xkmfile name\n"); ++ return False; ++ } ++ strncpy(nameRtrn, xkmfile, nameRtrnLen); ++ ++ /* if the xkm file already exists, reuse it */ ++ canonicalXkmFileName = Xprintf("%s%s.xkm", xkm_output_dir, xkmfile); ++ if (access(canonicalXkmFileName, R_OK) == 0) { ++ /* yes, we can reuse the old xkm file */ ++ LogMessage(X_INFO, "XKB: reuse xkmfile %s\n", canonicalXkmFileName); ++ result = True; ++ goto _ret; ++ } ++ LogMessage(X_INFO, "XKB: generating xkmfile %s\n", canonicalXkmFileName); ++ ++ /* continue to call xkbcomp to compile the keymap. to avoid race ++ condition, we compile it to a tmpfile then rename it to ++ xkmfile */ ++ + #ifdef WIN32 + strcpy(tmpname, Win32TempDir()); + strcat(tmpname, "\\xkb_XXXXXX"); +@@ -225,19 +318,30 @@ + } + } + ++ if ( (tmpXkmFile = tempnam(xkm_output_dir, NULL)) == NULL ) { ++ ErrorF("[xkb] Can't generate temp xkm file name"); ++ result = False; ++ goto _ret; ++ } ++ + buf = Xprintf("\"%s%sxkbcomp\" -w %d %s -xkm \"%s\" " +- "-em1 %s -emp %s -eml %s \"%s%s.xkm\"", ++ "-em1 %s -emp %s -eml %s \"%s\"", + xkbbindir, xkbbindirsep, + ( (xkbDebugFlags < 2) ? 1 : + ((xkbDebugFlags > 10) ? 10 : (int)xkbDebugFlags) ), +- xkbbasedirflag, xkmfile, ++ xkbbasedirflag, xkbfile, + PRE_ERROR_MSG, ERROR_PREFIX, POST_ERROR_MSG1, +- xkm_output_dir, keymap); ++ tmpXkmFile); + + if (xkbbasedirflag != emptystring) { + xfree(xkbbasedirflag); + } + ++ /* there's a potential race condition between calling tempnam() ++ and invoking xkbcomp to write the result file (potential temp ++ file name conflicts), but since xkbcomp is a standalone ++ program, we have to live with this */ ++ + #ifndef WIN32 + out= Popen(buf,"w"); + #else +@@ -245,31 +349,43 @@ + #endif + + if (out!=NULL) { +-#ifdef DEBUG +- if (xkbDebugFlags) { +- ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n"); +- XkbWriteXKBKeymapForNames(stderr,names,xkb,want,need); ++ /* write XKBKeyMapBuf to xkbcomp */ ++ if (EOF==fputs(xkbKeyMapBuf, out)) ++ { ++ ErrorF("[xkb] Sending keymap to xkbcomp failed\n"); ++ result = False; ++ goto _ret; + } +-#endif +- XkbWriteXKBKeymapForNames(out,names,xkb,want,need); + #ifndef WIN32 + if (Pclose(out)==0) + #else + if (fclose(out)==0 && System(buf) >= 0) + #endif + { ++ /* xkbcomp success */ + if (xkbDebugFlags) + DebugF("[xkb] xkb executes: %s\n",buf); +- if (nameRtrn) { +- strncpy(nameRtrn,keymap,nameRtrnLen); +- nameRtrn[nameRtrnLen-1]= '\0'; ++ ++ /* if canonicalXkmFileName already exists now, we simply ++ overwrite it, this is OK */ ++ ret = rename(tmpXkmFile, canonicalXkmFileName); ++ if (0 != ret) { ++ ErrorF("[xkb] Can't rename %s to %s, error: %s\n", ++ tmpXkmFile, canonicalXkmFileName, ++ strerror(errno)); ++ ++ /* in case of error, don't unlink tmpXkmFile, leave it ++ for debugging */ ++ ++ result = False; ++ goto _ret; + } +- if (buf != NULL) +- xfree (buf); +- return True; ++ ++ result = True; ++ goto _ret; + } + else +- LogMessage(X_ERROR, "Error compiling keymap (%s)\n", keymap); ++ LogMessage(X_ERROR, "Error compiling keymap (%s)\n", xkbfile); + #ifdef WIN32 + /* remove the temporary file */ + unlink(tmpname); +@@ -284,9 +400,17 @@ + } + if (nameRtrn) + nameRtrn[0]= '\0'; ++ result = False; ++ ++_ret: ++ if (tmpXkmFile) ++ free(tmpXkmFile); ++ if (canonicalXkmFileName) ++ xfree(canonicalXkmFileName); + if (buf != NULL) + xfree (buf); +- return False; ++ ++ return result; + } + + static FILE * +@@ -370,7 +494,6 @@ + DebugF("Loaded XKB keymap %s, defined=0x%x\n",fileName,(*xkbRtrn)->defined); + } + fclose(file); +- (void) unlink (fileName); + return (need|want)&(~missing); + } + +diff -Naur xorg-server-1.7.99.1/xkb/README.compiled xorg-server-1.7.99.1.patch/xkb/README.compiled +--- xorg-server-1.7.99.1/xkb/README.compiled 2008-10-13 01:19:06.000000000 +0200 ++++ xorg-server-1.7.99.1.patch/xkb/README.compiled 2009-10-24 10:50:28.069400854 +0200 +@@ -4,10 +4,10 @@ + or some other tool might destroy or replace the files in this directory, + so it is not a safe place to store compiled keymaps for long periods of + time. The default keymap for any server is usually stored in: +- X-default.xkm +-where is the display number of the server in question, which makes +-it possible for several servers *on the same host* to share the same +-directory. ++ server-.xkm ++ ++where is the SHA1 hash of keymap source, so that compiled ++keymap of different keymap sources are stored in different files. + + Unless the X server is modified, sharing this directory between servers on + different hosts could cause problems. diff --git a/packages/x11/xserver/xorg-server/patches/100_xserver_exa_force_greedy.diff b/packages/x11/xserver/xorg-server/patches/100_xserver_exa_force_greedy.diff new file mode 100644 index 0000000000..24dd77017a --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/100_xserver_exa_force_greedy.diff @@ -0,0 +1,30 @@ +--- xorg-server.orig/exa/exa.c 2008-10-14 23:24:44.000000000 +0200 ++++ xorg-server/exa/exa.c 2008-10-14 23:25:52.000000000 +0200 +@@ -882,6 +882,11 @@ + dixSetPrivate(&pScreen->devPrivates, exaScreenPrivateKey, pExaScr); + + pExaScr->migration = ExaMigrationAlways; ++ if (pScreenInfo->flags & EXA_MIGRATION_GREEDY) { ++ pExaScr->migration = ExaMigrationGreedy; ++ LogMessage(X_INFO, "EXA(%d): Forcing greedy migration option\n", ++ pScreen->myNum); ++ } + + exaDDXDriverInit(pScreen); + +--- xorg-server.orig/exa/exa.h 2008-10-14 23:24:44.000000000 +0200 ++++ xorg-server/exa/exa.h 2008-10-14 23:25:52.000000000 +0200 +@@ -737,6 +737,13 @@ + #define EXA_TWO_BITBLT_DIRECTIONS (1 << 2) + + /** ++ * EXA_MIGRATION_GREEDY indicates to EXA that the driver prefers to ++ * use the "greedy" migration heuristic. This is to work around ++ * issues with EXA on the Intel 965 chipset. (LP: #177492) ++ */ ++#define EXA_MIGRATION_GREEDY (1 << 3) ++ ++/** + * EXA_HANDLES_PIXMAPS indicates to EXA that the driver can handle + * all pixmap addressing and migration. + */ diff --git a/packages/x11/xserver/xorg-server/patches/110_fedora_no_move_damage.diff b/packages/x11/xserver/xorg-server/patches/110_fedora_no_move_damage.diff new file mode 100644 index 0000000000..a1d676677a --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/110_fedora_no_move_damage.diff @@ -0,0 +1,35 @@ +Disable damage notifications on move for manually redirected windows. +The automatic compositor needs damage notification on move, but a +compositing manager doesn't. + +Index: xorg-server/composite/compwindow.c +=================================================================== +--- xorg-server.orig/composite/compwindow.c 2008-06-18 10:28:16.000000000 +0300 ++++ xorg-server/composite/compwindow.c 2008-06-18 12:06:20.000000000 +0300 +@@ -580,12 +580,15 @@ + } + else + { ++ CompWindowPtr cw = GetCompWindow (pWin); ++ + ptOldOrg.x -= dx; + ptOldOrg.y -= dy; + REGION_TRANSLATE (prgnSrc, prgnSrc, + pWin->drawable.x - ptOldOrg.x, + pWin->drawable.y - ptOldOrg.y); +- DamageRegionAppend(&pWin->drawable, prgnSrc); ++ if (pWin->redirectDraw && cw->update == CompositeRedirectAutomatic) ++ DamageRegionAppend(&pWin->drawable, prgnSrc); + } + cs->CopyWindow = pScreen->CopyWindow; + pScreen->CopyWindow = compCopyWindow; +@@ -664,7 +667,8 @@ + /* + * Report that as damaged so it will be redrawn + */ +- DamageRegionAppend(&pWin->drawable, &damage); ++ if (cw->update == CompositeRedirectAutomatic) ++ DamageRegionAppend(&pWin->drawable, &damage); + REGION_UNINIT (pScreen, &damage); + /* + * Save the new border clip region diff --git a/packages/x11/xserver/xorg-server/patches/156_exevents_copykeyclass_nullptrcheck.diff b/packages/x11/xserver/xorg-server/patches/156_exevents_copykeyclass_nullptrcheck.diff new file mode 100644 index 0000000000..d16c2f0384 --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/156_exevents_copykeyclass_nullptrcheck.diff @@ -0,0 +1,22 @@ +diff -Naur xorg-server-1.6.99.902.orig/Xi/exevents.c xorg-server-1.6.99.902/Xi/exevents.c +--- xorg-server-1.6.99.902.orig/Xi/exevents.c 2009-09-26 14:12:03.000000000 +0200 ++++ xorg-server-1.6.99.902/Xi/exevents.c 2009-09-26 18:55:30.000000000 +0200 +@@ -195,11 +195,15 @@ + static void + CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master) + { +- KeyClassPtr mk = master->key; +- KeyClassPtr dk = device->key; ++ KeyClassPtr mk, dk; + int i; + +- if (device == master) ++ if (device == master || device == NULL || master == NULL) ++ return; ++ ++ mk = master->key; ++ dk = device->key; ++ if (dk == NULL || mk == NULL) + return; + + mk->sourceid = device->id; diff --git a/packages/x11/xserver/xorg-server/patches/157_check_null_modes.diff b/packages/x11/xserver/xorg-server/patches/157_check_null_modes.diff new file mode 100644 index 0000000000..7bdcb8b5da --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/157_check_null_modes.diff @@ -0,0 +1,14 @@ +diff --git a/hw/xfree86/common/xf86VidMode.c b/hw/xfree86/common/xf86VidMode.c +index d855bd1..2af8c00 100644 +--- a/hw/xfree86/common/xf86VidMode.c ++++ b/hw/xfree86/common/xf86VidMode.c +@@ -226,6 +226,9 @@ VidModeGetFirstModeline(int scrnIndex, pointer *mode, int *dotClock) + + pScrn = xf86Screens[scrnIndex]; + pVidMode = VMPTR(pScrn->pScreen); ++ if (pScrn->modes == NULL) ++ return FALSE; ++ + pVidMode->First = pScrn->modes; + pVidMode->Next = pVidMode->First->next; + diff --git a/packages/x11/xserver/xorg-server/patches/158_raise_maxclients.diff b/packages/x11/xserver/xorg-server/patches/158_raise_maxclients.diff new file mode 100644 index 0000000000..cc30d58b4e --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/158_raise_maxclients.diff @@ -0,0 +1,12 @@ +diff -Nurp patched/include/misc.h working/include/misc.h +--- patched/include/misc.h 2009-02-05 01:09:03.000000000 -0800 ++++ working/include/misc.h 2009-02-05 02:12:57.000000000 -0800 +@@ -86,7 +86,7 @@ extern unsigned long serverGeneration; + #ifndef MAXSCREENS + #define MAXSCREENS 16 + #endif +-#define MAXCLIENTS 256 ++#define MAXCLIENTS 512 + #define MAXEXTENSIONS 128 + #define MAXFORMATS 8 + #define MAXDEVICES 20 /* input devices */ diff --git a/packages/x11/xserver/xorg-server/patches/162_null_crtc_in_rotation.diff b/packages/x11/xserver/xorg-server/patches/162_null_crtc_in_rotation.diff new file mode 100644 index 0000000000..2e4a9450d8 --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/162_null_crtc_in_rotation.diff @@ -0,0 +1,13 @@ +diff -Nurp patched/hw/xfree86/modes/xf86RandR12.c working/hw/xfree86/modes/xf86RandR12.c +--- patched/hw/xfree86/modes/xf86RandR12.c 2009-03-02 22:57:18.000000000 -0800 ++++ working/hw/xfree86/modes/xf86RandR12.c 2009-03-02 22:57:24.000000000 -0800 +@@ -944,7 +944,8 @@ xf86RandR12SetRotations (ScreenPtr pScre + for (c = 0; c < config->num_crtc; c++) { + xf86CrtcPtr crtc = config->crtc[c]; + +- RRCrtcSetRotations (crtc->randr_crtc, rotations); ++ if (crtc != NULL) ++ RRCrtcSetRotations (crtc->randr_crtc, rotations); + } + #endif + randrp->supported_rotations = rotations; diff --git a/packages/x11/xserver/xorg-server/patches/164_trap-aspect-ratios.diff b/packages/x11/xserver/xorg-server/patches/164_trap-aspect-ratios.diff new file mode 100644 index 0000000000..aa6d5c2f6b --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/164_trap-aspect-ratios.diff @@ -0,0 +1,61 @@ +diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c +index c0e3df9..32288f7 100644 +--- a/hw/xfree86/ddc/interpret_edid.c ++++ b/hw/xfree86/ddc/interpret_edid.c +@@ -51,6 +51,15 @@ static void get_whitepoint_section(Uchar *, struct whitePoints *); + static void get_detailed_timing_section(Uchar*, struct detailed_timings *); + static Bool validate_version(int scrnIndex, struct edid_version *); + ++static Bool ++is_standard_aspect_ratio(int x, int y) ++{ ++ return ((x == 16 && y == 9) || ++ (x == 16 && y == 10) || ++ (x == 4 && y == 3) || ++ (x == 5 && y == 4)); ++} ++ + static void + handle_edid_quirks(xf86MonPtr m) + { +@@ -91,10 +100,7 @@ handle_edid_quirks(xf86MonPtr m) + * try to find the largest detailed timing that matches that aspect + * ratio and use that to fill in the feature section. + */ +- if ((m->features.hsize == 16 && m->features.vsize == 9) || +- (m->features.hsize == 16 && m->features.vsize == 10) || +- (m->features.hsize == 4 && m->features.vsize == 3) || +- (m->features.hsize == 5 && m->features.vsize == 4)) { ++ if (is_standard_aspect_ratio(m->features.hsize, m->features.vsize)) { + int real_hsize = 0, real_vsize = 0; + float target_aspect, timing_aspect; + +@@ -130,6 +136,28 @@ handle_edid_quirks(xf86MonPtr m) + xf86Msg(X_INFO, "Quirked EDID physical size to %dx%d cm\n", + m->features.hsize, m->features.vsize); + } ++ ++ /* ++ * Some monitors do the reverse, putting real size in the global block ++ * and aspect ratios in the detailed timings. Check, but only if we ++ * think we've got a real physical size. ++ */ ++ if (m->features.hsize && m->features.vsize) { ++ for (i = 0; i < 4; i++) { ++ if (m->det_mon[i].type == DT) { ++ struct detailed_timings *timing; ++ timing = &m->det_mon[i].section.d_timings; ++ ++ if (is_standard_aspect_ratio(timing->h_size, timing->v_size)) { ++ timing->h_size = m->features.hsize * 10; ++ timing->v_size = m->features.vsize * 10; ++ xf86Msg(X_INFO, "Quirked timing size to %dx%d mm\n", ++ timing->h_size, timing->v_size); ++ ++ } ++ } ++ } ++ } + } + + xf86MonPtr diff --git a/packages/x11/xserver/xorg-server/patches/166_nullptr_xinerama_keyrepeat.diff b/packages/x11/xserver/xorg-server/patches/166_nullptr_xinerama_keyrepeat.diff new file mode 100644 index 0000000000..75dbf5d458 --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/166_nullptr_xinerama_keyrepeat.diff @@ -0,0 +1,30 @@ +From f0ef98d8d54f5dfa3081b62ff672e0fe992b0a01 Mon Sep 17 00:00:00 2001 +From: Bryce Harrington +Date: Wed, 18 Mar 2009 23:28:51 -0700 +Subject: [PATCH] Check for null pointer dereference to prevent crash + on non-primary Xinerama screens when key repeating. + (LP: #324465) + +Signed-off-by: Bryce Harrington +--- + mi/mipointer.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/mi/mipointer.c b/mi/mipointer.c +index e37316e..fe5947f 100644 +--- a/mi/mipointer.c ++++ b/mi/mipointer.c +@@ -306,6 +306,10 @@ miPointerWarpCursor (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y) + pPointer = MIPOINTER(pDev); + SetupScreen (pScreen); + ++ /* Null pointer causes crash on keyrepeat with Xinerama LP: (#324465) */ ++ if (pPointer == NULL) ++ return; ++ + if (pPointer->pScreen != pScreen) + { + (*pScreenPriv->screenFuncs->NewEventScreen) (pDev, pScreen, TRUE); +-- +1.6.0.4 + diff --git a/packages/x11/xserver/xorg-server/patches/167_nullptr_xisbread.diff b/packages/x11/xserver/xorg-server/patches/167_nullptr_xisbread.diff new file mode 100644 index 0000000000..38921dd4bf --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/167_nullptr_xisbread.diff @@ -0,0 +1,13 @@ +diff -Nurp patched/hw/xfree86/common/xisb.c working/hw/xfree86/common/xisb.c +--- patched/hw/xfree86/common/xisb.c 2009-02-02 21:53:58.000000000 +0100 ++++ working/hw/xfree86/common/xisb.c 2009-02-02 21:55:09.000000000 +0100 +@@ -98,6 +98,9 @@ XisbRead (XISBuffer *b) + { + int ret; + ++ if (b == NULL) ++ return -2; ++ + if (b->current >= b->end) + { + if (b->block_duration >= 0) diff --git a/packages/x11/xserver/xorg-server/patches/169_mipointer_nullptr_checks.diff b/packages/x11/xserver/xorg-server/patches/169_mipointer_nullptr_checks.diff new file mode 100644 index 0000000000..6484fe0152 --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/169_mipointer_nullptr_checks.diff @@ -0,0 +1,107 @@ +From 179cec1d2f919d8d8096d6030b0ad9b6285dfd4d Mon Sep 17 00:00:00 2001 +From: Bryce Harrington +Date: Mon, 23 Mar 2009 14:25:18 -0700 +Subject: [PATCH] Check null pointers to not crash on keyrepeat with Xinerama LP: (#324465) + +With -nvidia, when using Xinerama, holding down a key in a text field +on a non-primary screen can cause an X crash. This is caused because +the MIPOINTER(pDev) can return a NULL pointer for a non-null pDev in +some cases, and the mipointer.c code lacks checks for this condition. + +MIPOINTER() is a macro #defined locally to mipointer.c, which calls into +dixLookupPrivate(), a routine which returns NULL in at least some +circumstances - such as if the memory could not be xcalloc'd for +whatever reason. Hopefully upstream can provide a better fix for this, +but for now it seems reasonable to check the return values of this macro +for NULL before usage, as a minimum. + +diff -Naur xorg-server-1.6.99.902.orig/mi/mipointer.c xorg-server-1.6.99.902/mi/mipointer.c +--- xorg-server-1.6.99.902.orig/mi/mipointer.c 2009-09-26 14:12:02.000000000 +0200 ++++ xorg-server-1.6.99.902/mi/mipointer.c 2009-09-26 19:02:00.000000000 +0200 +@@ -139,6 +139,10 @@ + if (DevHasCursor(pDev)) + { + pPointer = MIPOINTER(pDev); ++ if (pPointer == NULL) { ++ ErrorF("miPointerCloseScreen: Invalid input device pointer\n"); ++ return FALSE; ++ } + + if (pScreen == pPointer->pScreen) + pPointer->pScreen = 0; +@@ -191,6 +195,10 @@ + return FALSE; + + pPointer = MIPOINTER(pDev); ++ if (pPointer == NULL) { ++ ErrorF("miPointerDisplayCursor: Invalid input device pointer\n"); ++ return FALSE; ++ } + + pPointer->pCursor = pCursor; + pPointer->pScreen = pScreen; +@@ -204,6 +212,10 @@ + miPointerPtr pPointer; + + pPointer = MIPOINTER(pDev); ++ if (pPointer == NULL) { ++ ErrorF("miPointerConstrainCursor: Invalid input device pointer\n"); ++ return FALSE; ++ } + + pPointer->limits = *pBox; + pPointer->confined = PointerConfinedToScreen(pDev); +@@ -305,6 +317,10 @@ + + SetupScreen (pScreen); + pPointer = MIPOINTER(pDev); ++ if (pPointer == NULL) { ++ ErrorF("miPointerWarpCursor: Invalid input device pointer\n"); ++ return; ++ } + + if (pPointer->pScreen != pScreen) + { +@@ -436,13 +452,17 @@ + ScreenPtr pScreen; + miPointerPtr pPointer; + +- pPointer = MIPOINTER(pDev); +- + pScreen = screenInfo.screens[screen_no]; + pScreenPriv = GetScreenPrivate (pScreen); + (*pScreenPriv->screenFuncs->NewEventScreen) (pDev, pScreen, FALSE); + NewCurrentScreen (pDev, pScreen, x, y); + ++ pPointer = MIPOINTER(pDev); ++ if (pPointer == NULL) { ++ ErrorF("miPointerSetScreen: Invalid input device pointer\n"); ++ return; ++ } ++ + pPointer->limits.x2 = pScreen->width; + pPointer->limits.y2 = pScreen->height; + } +@@ -469,6 +489,10 @@ + SetupScreen(pScreen); + + pPointer = MIPOINTER(pDev); ++ if (pPointer == NULL) { ++ ErrorF("miPointerMoved: Invalid input device pointer\n"); ++ return; ++ } + + /* Hack: We mustn't call into ->MoveCursor for anything but the + * VCP, as this may cause a non-HW rendered cursor to be rendered during +@@ -498,6 +522,11 @@ + miPointerPtr pPointer; + + pPointer = MIPOINTER(pDev); ++ if (pPointer == NULL) { ++ ErrorF("miPointerSetPosition: Invalid input device pointer\n"); ++ return; ++ } ++ + pScreen = pPointer->pScreen; + if (!pScreen) + return; /* called before ready */ diff --git a/packages/x11/xserver/xorg-server/patches/172_cwgetbackingpicture_nullptr_check.diff b/packages/x11/xserver/xorg-server/patches/172_cwgetbackingpicture_nullptr_check.diff new file mode 100644 index 0000000000..9a91113aea --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/172_cwgetbackingpicture_nullptr_check.diff @@ -0,0 +1,39 @@ +From 7813adf66be31d8b0e8df21821e786e688f7fe78 Mon Sep 17 00:00:00 2001 +From: Bryce Harrington +Date: Fri, 27 Mar 2009 19:01:32 -0700 +Subject: [PATCH] cwGetBackingPicture can segfault when minimizing/maximizing firefox with + a flash video playing. This appears to be a race condition in which the + backing picture's data is not always fully defined. + +Signed-off-by: Bryce Harrington +--- + miext/cw/cw_render.c | 13 +++++++++---- + 1 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/miext/cw/cw_render.c b/miext/cw/cw_render.c +index 6e0c727..fe8cba7 100644 +--- a/miext/cw/cw_render.c ++++ b/miext/cw/cw_render.c +@@ -125,10 +125,15 @@ cwGetBackingPicture (PicturePtr pPicture, int *x_off, int *y_off) + WindowPtr pWindow = (WindowPtr) pDrawable; + PixmapPtr pPixmap = getCwPixmap (pWindow); + +- *x_off = pDrawable->x - pPixmap->screen_x; +- *y_off = pDrawable->y - pPixmap->screen_y; +- +- return pPicturePrivate->pBackingPicture; ++ if (pDrawable && pPixmap) { ++ *x_off = pDrawable->x - pPixmap->screen_x; ++ *y_off = pDrawable->y - pPixmap->screen_y; ++ ++ return pPicturePrivate->pBackingPicture; ++ } else { ++ *x_off = *y_off = 0; ++ return pPicture; ++ } + } + else + { +-- +1.6.0.4 + diff --git a/packages/x11/xserver/xorg-server/patches/173_edid_quirk_philips_lcd.diff b/packages/x11/xserver/xorg-server/patches/173_edid_quirk_philips_lcd.diff new file mode 100644 index 0000000000..ba735bd0bb --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/173_edid_quirk_philips_lcd.diff @@ -0,0 +1,21 @@ +# +# Ubuntu: https://bugs.launchpad.net/bugs/353074 +# Upstream: http://bugs.freedesktop.org/show_bug.cgi?id=21000 +# + +Index: xorg-server-1.6.0/hw/xfree86/modes/xf86EdidModes.c +=================================================================== +--- xorg-server-1.6.0.orig/hw/xfree86/modes/xf86EdidModes.c 2009-04-01 19:45:23.000000000 +0200 ++++ xorg-server-1.6.0/hw/xfree86/modes/xf86EdidModes.c 2009-04-01 19:45:32.000000000 +0200 +@@ -155,6 +155,11 @@ + DDC->vendor.prod_id == 13600) + return TRUE; + ++ /* Bug #21000: LGPhilipsLCD LP154W01-TLAJ */ ++ if (memcmp (DDC->vendor.name, "LPL", 4) == 0 && ++ DDC->vendor.prod_id == 47360) ++ return TRUE; ++ + return FALSE; + } + diff --git a/packages/x11/xserver/xorg-server/patches/180_fedora_no_synaptics_mouse_synthesis.diff b/packages/x11/xserver/xorg-server/patches/180_fedora_no_synaptics_mouse_synthesis.diff new file mode 100644 index 0000000000..ddf3961196 --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/180_fedora_no_synaptics_mouse_synthesis.diff @@ -0,0 +1,16 @@ +From 8663524ce398b56af596ab1e7e96b62ca45b79e9 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Mon, 13 Apr 2009 17:49:00 +1000 +Subject: [PATCH] xfree86: don't synthesise a mouse section if synaptics devices are found. + +diff -Naur xorg-server-1.6.99.902.orig/hw/xfree86/common/xf86Config.c xorg-server-1.6.99.902/hw/xfree86/common/xf86Config.c +--- xorg-server-1.6.99.902.orig/hw/xfree86/common/xf86Config.c 2009-09-26 14:12:03.000000000 +0200 ++++ xorg-server-1.6.99.902/hw/xfree86/common/xf86Config.c 2009-09-26 19:05:52.000000000 +0200 +@@ -2406,6 +2406,7 @@ + { + if (strcmp((*dev)->driver, "kbd") == 0 || + strcmp((*dev)->driver, "mouse") == 0 || ++ strcmp((*dev)->driver, "synaptics") == 0 || + strcmp((*dev)->driver, "vmmouse") == 0) + { + IDevPtr *current; diff --git a/packages/x11/xserver/xorg-server/patches/201_fedora-pci-primary.diff b/packages/x11/xserver/xorg-server/patches/201_fedora-pci-primary.diff new file mode 100644 index 0000000000..61ba6db30b --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/201_fedora-pci-primary.diff @@ -0,0 +1,91 @@ +diff -Naur xorg-server-1.6.99.902.orig/hw/xfree86/common/xf86pciBus.c xorg-server-1.6.99.902/hw/xfree86/common/xf86pciBus.c +--- xorg-server-1.6.99.902.orig/hw/xfree86/common/xf86pciBus.c 2009-09-26 14:12:03.000000000 +0200 ++++ xorg-server-1.6.99.902/hw/xfree86/common/xf86pciBus.c 2009-09-26 19:11:42.000000000 +0200 +@@ -52,13 +52,7 @@ + /* Bus-specific globals */ + Bool pciSlotClaimed = FALSE; + +-#define PCIINFOCLASSES(c) \ +- ( (((c) & 0x00ff0000) == (PCI_CLASS_PREHISTORIC << 16)) \ +- || (((c) & 0x00ff0000) == (PCI_CLASS_DISPLAY << 16)) \ +- || ((((c) & 0x00ffff00) \ +- == ((PCI_CLASS_MULTIMEDIA << 16) | (PCI_SUBCLASS_MULTIMEDIA_VIDEO << 8)))) \ +- || ((((c) & 0x00ffff00) \ +- == ((PCI_CLASS_PROCESSOR << 16) | (PCI_SUBCLASS_PROCESSOR_COPROC << 8)))) ) ++#define PCIINFOCLASSES(c) (((c) & 0x00ffff00) == (PCI_CLASS_DISPLAY << 16)) + + /* + * PCI classes that have messages printed always. The others are only +@@ -85,6 +79,40 @@ + sprintf(buffer, "%d@%d", busnum & 0x00ff, busnum >> 8); + } + ++/* oh god what have i done */ ++static Bool ++looks_like_bios_primary(struct pci_device *info) ++{ ++ unsigned char *bios; ++ unsigned short vendor, device; ++ int offset; ++ Bool ret = FALSE; ++ ++ bios = xf86MapVidMem(-1, VIDMEM_MMIO, 0xc0000, 0x10000); ++ if (!bios) ++ return FALSE; ++ ++ if (bios[0] != 0x55 || bios[1] != 0xAA) ++ goto out; ++ ++ offset = (bios[0x19] << 8) + bios[0x18]; ++ ++ if (bios[offset] != 'P' || ++ bios[offset+1] != 'C' || ++ bios[offset+2] != 'I' || ++ bios[offset+3] != 'R') ++ goto out; ++ ++ vendor = (bios[offset+5] << 8) + bios[offset+4]; ++ device = (bios[offset+7] << 8) + bios[offset+6]; ++ ++ ret = (info->vendor_id == vendor) && (info->device_id == device); ++ ++out: ++ xf86UnMapVidMem(-1, bios, 0x10000); ++ return ret; ++} ++ + /* + * xf86Bus.c interface + */ +@@ -132,17 +160,25 @@ + uint16_t command; + + info = xf86PciVideoInfo[i]; ++ if (!IS_VGA(info->device_class)) ++ continue; ++ + pci_device_cfg_read_u16(info, & command, 4); + +- if ((command & PCI_CMD_MEM_ENABLE) +- && ((num == 1) || IS_VGA(info->device_class))) { +- if (primaryBus.type == BUS_NONE) { ++ if ((command & PCI_CMD_MEM_ENABLE)) { ++ if (num == 1) { + primaryBus.type = BUS_PCI; + primaryBus.id.pci = info; +- } else { +- xf86Msg(X_NOTICE, ++ break; ++ } else if (looks_like_bios_primary(info)) { ++ if (primaryBus.type == BUS_NONE) { ++ primaryBus.type = BUS_PCI; ++ primaryBus.id.pci = info; ++ } else { ++ xf86Msg(X_NOTICE, + "More than one possible primary device found\n"); +- primaryBus.type ^= (BusType)(-1); ++ primaryBus.type ^= (BusType)(-1); ++ } + } + } + } diff --git a/packages/x11/xserver/xorg-server/patches/30_typedef-apm-2.6.24.diff b/packages/x11/xserver/xorg-server/patches/30_typedef-apm-2.6.24.diff new file mode 100644 index 0000000000..96adefd18b --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/30_typedef-apm-2.6.24.diff @@ -0,0 +1,12 @@ +diff -Naur xorg-server-1.4.0.90/hw/xfree86/os-support/linux/lnx_apm.c xorg-server-1.4.0.90.edit/hw/xfree86/os-support/linux/lnx_apm.c +--- xorg-server-1.4.0.90/hw/xfree86/os-support/linux/lnx_apm.c 2007-12-14 00:38:23.000000000 +0100 ++++ xorg-server-1.4.0.90.edit/hw/xfree86/os-support/linux/lnx_apm.c 2007-12-14 00:38:18.000000000 +0100 +@@ -35,6 +35,8 @@ + # define APM_SUSPEND_FAILED 0xf001 + #endif + ++typedef unsigned short apm_event_t; ++ + static PMClose lnxAPMOpen(void); + static void lnxCloseAPM(void); + static pointer APMihPtr = NULL; diff --git a/packages/x11/xserver/xorg-server/patches/60_use-proc-instead-of-sysfs-for-pci-domains.diff b/packages/x11/xserver/xorg-server/patches/60_use-proc-instead-of-sysfs-for-pci-domains.diff new file mode 100644 index 0000000000..ddc8ece453 --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/60_use-proc-instead-of-sysfs-for-pci-domains.diff @@ -0,0 +1,32 @@ +/* Upstream commit 56f21bda1ce95741c88c423b60bd709eef26eb12 was supposed to + * only avoid multiple scans of the PCI devices, but it actually also added + * an "optimization" based on using sysfs files instead of /proc. However, + * this code is broken, for instance because there are no ioctl handler on + * /sys/bus/pci/devices/*/config files while there some on /proc/bus/pci/* + * + * It breaks the Xserver on architectures that require such ioctls to scan + * the PCI devices and/or deal with PCI domains: + * #422077: xserver-xorg: Fatal server error on sparc: xf86MapPciMem failed + * #422095: xserver-xorg-core: fails to start on powerpc, no devices detected + * + * The following patch forces the server to behave as if we were running on + * a 2.4 kernel while scanning PCI devices, so that the sysfs code is disabled. + * + * Upstream doesn't apply this patch since they want to fix the sysfs-code. + * See https://bugs.freedesktop.org/show_bug.cgi?id=7248 + * + * Thanks to Jim Watson for testing! + */ + +diff -Naur xorg-server-1.5.1.orig/hw/xfree86/os-support/bus/linuxPci.c xorg-server-1.5.1/hw/xfree86/os-support/bus/linuxPci.c +--- xorg-server-1.5.1.orig/hw/xfree86/os-support/bus/linuxPci.c 2008-10-04 18:50:24.000000000 +0200 ++++ xorg-server-1.5.1/hw/xfree86/os-support/bus/linuxPci.c 2008-10-04 18:52:08.000000000 +0200 +@@ -131,7 +131,7 @@ + static int fd = -1,is_write = 0; + char file[64]; + struct stat ignored; +- static int is26 = -1; ++ static int is26 = 0; + + if (dev == NULL) { + return -1; diff --git a/packages/x11/xserver/xorg-server/patches/66_only-switch-vt-when-active.diff b/packages/x11/xserver/xorg-server/patches/66_only-switch-vt-when-active.diff new file mode 100644 index 0000000000..d066e6dc29 --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/66_only-switch-vt-when-active.diff @@ -0,0 +1,32 @@ +Index: xorg-server/hw/xfree86/os-support/linux/lnx_init.c +=================================================================== +--- xorg-server.orig/hw/xfree86/os-support/linux/lnx_init.c 2008-06-18 12:06:06.000000000 +0300 ++++ xorg-server/hw/xfree86/os-support/linux/lnx_init.c 2008-06-18 12:06:25.000000000 +0300 +@@ -344,10 +344,25 @@ + + if (VTSwitch) + { ++ struct vt_stat vts; ++ + /* +- * Perform a switch back to the active VT when we were started ++ * Perform a switch back to the active VT when we were started. ++ * We cannot rely on vtSema to determine if the server was the ++ * active VT at the time of shutdown since it has already been ++ * released. Instead, we manually check the current VT and ++ * compare it with the VT we were running on. + */ +- if (activeVT >= 0) { ++ if (ioctl(xf86Info.consoleFd, VT_GETSTATE, &vts) < 0) ++ { ++ /* If this failed, fall back to old behaviour ++ * of always switching. */ ++ xf86Msg(X_WARNING,"xf86OpenConsole: VT_GETSTATE failed: %s\n", ++ strerror(errno)); ++ vts.v_active = xf86Info.vtno; ++ } ++ ++ if (activeVT >= 0 && vts.v_active == xf86Info.vtno) { + if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, activeVT) < 0) + xf86Msg(X_WARNING, "xf86CloseConsole: VT_ACTIVATE failed: %s\n", + strerror(errno)); diff --git a/packages/x11/xserver/xorg-server/patches/use-sloppy-heuristic-first-for-initial-mode.diff b/packages/x11/xserver/xorg-server/patches/use-sloppy-heuristic-first-for-initial-mode.diff deleted file mode 100644 index 4960634cd1..0000000000 --- a/packages/x11/xserver/xorg-server/patches/use-sloppy-heuristic-first-for-initial-mode.diff +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 84d3cac..673612f 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -2248,10 +2248,10 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) - xf86DrvMsg(i, X_INFO, "Using user preference for initial modes\n"); - else if (xf86TargetPreferred(scrn, config, modes, enabled, width, height)) - xf86DrvMsg(i, X_INFO, "Using exact sizes for initial modes\n"); -- else if (xf86TargetAspect(scrn, config, modes, enabled, width, height)) -- xf86DrvMsg(i, X_INFO, "Using fuzzy aspect match for initial modes\n"); - else if (xf86TargetFallback(scrn, config, modes, enabled, width, height)) - xf86DrvMsg(i, X_INFO, "Using sloppy heuristic for initial modes\n"); -+ else if (xf86TargetAspect(scrn, config, modes, enabled, width, height)) -+ xf86DrvMsg(i, X_INFO, "Using fuzzy aspect match for initial modes\n"); - else - xf86DrvMsg(i, X_WARNING, "Unable to find initial modes\n"); - diff --git a/packages/x11/xserver/xorg-server/patches/xorg-x11-nonroot-vesa.diff b/packages/x11/xserver/xorg-server/patches/xorg-x11-nonroot-vesa.diff deleted file mode 100644 index 76c0a38aa4..0000000000 --- a/packages/x11/xserver/xorg-server/patches/xorg-x11-nonroot-vesa.diff +++ /dev/null @@ -1,12 +0,0 @@ ---- xorg-server-1.6.1.901/hw/xfree86/common/xf86AutoConfig.c~ 2009-07-03 11:59:30.000000000 -0700 -+++ xorg-server-1.6.1.901/hw/xfree86/common/xf86AutoConfig.c 2009-07-03 11:59:30.000000000 -0700 -@@ -516,7 +516,8 @@ - /* Fallback to platform default hardware */ - if (i < (nmatches - 1)) { - #if defined(__i386__) || defined(__amd64__) || defined(__hurd__) -- matches[i++] = xnfstrdup("vesa"); -+ if (geteuid() == 0) -+ matches[i++] = xnfstrdup("vesa"); - #elif defined(__sparc__) && !defined(sun) - matches[i++] = xnfstrdup("sunffb"); - #endif diff --git a/packages/x11/xserver/xorg-server/patches/xserver-1.5.0-bg-none-root.diff b/packages/x11/xserver/xorg-server/patches/xserver-1.5.0-bg-none-root.patch similarity index 88% rename from packages/x11/xserver/xorg-server/patches/xserver-1.5.0-bg-none-root.diff rename to packages/x11/xserver/xorg-server/patches/xserver-1.5.0-bg-none-root.patch index ae65d0be4c..097b085a32 100644 --- a/packages/x11/xserver/xorg-server/patches/xserver-1.5.0-bg-none-root.diff +++ b/packages/x11/xserver/xorg-server/patches/xserver-1.5.0-bg-none-root.patch @@ -1,6 +1,6 @@ -From eff3bb9c6f0b71a57705885a3fe6e6469d252d2b Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas -Date: Wed, 20 Jan 2010 14:46:12 +1300 +From b4e4b980663692a3af5787eeaf2d48eb6c0188ed Mon Sep 17 00:00:00 2001 +From: Fedora X Ninjas +Date: Tue, 4 Aug 2009 14:45:58 +1000 Subject: [PATCH] Add nr for background=none root --- @@ -25,7 +25,7 @@ index c24a94f..907a5e8 100644 int cursorScreenDevPriv[MAXSCREENS]; diff --git a/dix/window.c b/dix/window.c -index caff1cb..be1d1c4 100644 +index 32e26d9..0bf1d52 100644 --- a/dix/window.c +++ b/dix/window.c @@ -466,22 +466,24 @@ InitRootWindow(WindowPtr pWin) @@ -59,7 +59,7 @@ index caff1cb..be1d1c4 100644 MapWindow(pWin, serverClient); } diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c -index 6707448..776b898 100644 +index e84da4e..2a0f47a 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -77,6 +77,7 @@ @@ -70,7 +70,7 @@ index 6707448..776b898 100644 #include "xf86VGAarbiter.h" #include "globals.h" -@@ -254,6 +255,7 @@ xf86CreateRootWindow(WindowPtr pWin) +@@ -234,6 +235,7 @@ xf86CreateRootWindow(WindowPtr pWin) int ret = TRUE; int err = Success; ScreenPtr pScreen = pWin->drawable.pScreen; @@ -78,7 +78,7 @@ index 6707448..776b898 100644 RootWinPropPtr pProp; CreateWindowProcPtr CreateWindow = (CreateWindowProcPtr) dixLookupPrivate(&pScreen->devPrivates, xf86CreateRootWindowKey); -@@ -305,6 +307,15 @@ xf86CreateRootWindow(WindowPtr pWin) +@@ -285,6 +287,15 @@ xf86CreateRootWindow(WindowPtr pWin) } } @@ -95,10 +95,10 @@ index 6707448..776b898 100644 return (ret); } diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h -index de1f1b6..5c3aa00 100644 +index 5c3ee44..e3c7841 100644 --- a/hw/xfree86/common/xf86str.h +++ b/hw/xfree86/common/xf86str.h -@@ -503,7 +503,7 @@ typedef struct _confdrirec { +@@ -516,7 +516,7 @@ typedef struct _confdrirec { } confDRIRec, *confDRIPtr; /* These values should be adjusted when new fields are added to ScrnInfoRec */ @@ -107,8 +107,8 @@ index de1f1b6..5c3aa00 100644 #define NUM_RESERVED_POINTERS 14 #define NUM_RESERVED_FUNCS 11 -@@ -775,6 +775,9 @@ typedef struct _ScrnInfoRec { - ClockRangePtr clockRanges; +@@ -800,6 +800,9 @@ typedef struct _ScrnInfoRec { + ClockRangesPtr clockRanges; int adjustFlags; + /* -nr support */ @@ -130,10 +130,10 @@ index b3c7c70..fcc8c95 100644 extern _X_EXPORT Bool CoreDump; diff --git a/os/utils.c b/os/utils.c -index d7c8388..40583d0 100644 +index 00abd63..7bfdf8b 100644 --- a/os/utils.c +++ b/os/utils.c -@@ -513,6 +513,7 @@ void UseMsg(void) +@@ -514,6 +514,7 @@ void UseMsg(void) #endif ErrorF("-nolisten string don't listen on protocol\n"); ErrorF("-noreset don't reset after last client exists\n"); @@ -141,7 +141,7 @@ index d7c8388..40583d0 100644 ErrorF("-reset reset after last client exists\n"); ErrorF("-p # screen-saver pattern duration (minutes)\n"); ErrorF("-pn accept failure to listen on all ports\n"); -@@ -856,6 +857,8 @@ ProcessCommandLine(int argc, char *argv[]) +@@ -861,6 +862,8 @@ ProcessCommandLine(int argc, char *argv[]) defaultBackingStore = WhenMapped; else if ( strcmp( argv[i], "-wr") == 0) whiteRoot = TRUE; @@ -151,5 +151,5 @@ index d7c8388..40583d0 100644 if(++i < argc) { long reqSizeArg = atol(argv[i]); -- -1.6.6 +1.6.0.6 diff --git a/packages/x11/xserver/xorg-server/patches/xserver-1.5.0-projector-fb-size.patch b/packages/x11/xserver/xorg-server/patches/xserver-1.5.0-projector-fb-size.patch new file mode 100644 index 0000000000..c6178b879b --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/xserver-1.5.0-projector-fb-size.patch @@ -0,0 +1,32 @@ +From dc5cedd61e00afec33cbfaa7fdfbb6c357074dbd Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?S=C3=B8ren=20Sandmann=20Pedersen?= +Date: Thu, 11 Sep 2008 12:51:31 -0400 +Subject: [PATCH] Make room for an external monitor if we have enough video RAM + +--- + hw/xfree86/modes/xf86Crtc.c | 9 +++++++++ + 1 files changed, 9 insertions(+), 0 deletions(-) + +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index 4de7e05..9bcf81b 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -987,6 +987,15 @@ xf86DefaultScreenLimits (ScrnInfoPtr scrn, int *widthp, int *heightp, + if (crtc_height > height) + height = crtc_height; + } ++ ++ /* Make room for an external monitor if we have enough video ram */ ++ if (scrn->videoRam >= 65536) ++ width += 1920; ++ else if (scrn->videoRam >= 32768) ++ width += 1280; ++ else if (scrn->videoRam >= 16384) ++ width += 1024; ++ + if (config->maxWidth && width > config->maxWidth) width = config->maxWidth; + if (config->maxHeight && height > config->maxHeight) height = config->maxHeight; + if (config->minWidth && width < config->minWidth) width = config->minWidth; +-- +1.6.0.1 + diff --git a/packages/x11/xserver/xorg-server/patches/xserver-1.5.1-mode-debug.patch b/packages/x11/xserver/xorg-server/patches/xserver-1.5.1-mode-debug.patch new file mode 100644 index 0000000000..11fe5adac9 --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/xserver-1.5.1-mode-debug.patch @@ -0,0 +1,26 @@ +From 079910986a1b8f5042e16ee2ba3ad9ed843b67ca Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Tue, 7 Oct 2008 11:09:14 -0400 +Subject: [PATCH] Force ModeDebug on. + +--- + hw/xfree86/modes/xf86Crtc.c | 3 +-- + 1 files changed, 1 insertions(+), 2 deletions(-) + +diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c +index 9bcf81b..a953c8a 100644 +--- a/hw/xfree86/modes/xf86Crtc.c ++++ b/hw/xfree86/modes/xf86Crtc.c +@@ -2084,8 +2084,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow) + xf86ProcessOptions (scrn->scrnIndex, + scrn->options, + config->options); +- config->debug_modes = xf86ReturnOptValBool (config->options, +- OPTION_MODEDEBUG, FALSE); ++ config->debug_modes = TRUE; + + if (scrn->display->virtualX) + width = scrn->display->virtualX; +-- +1.6.0.1 + diff --git a/packages/x11/xserver/xorg-server/patches/xserver-1.6.0-less-acpi-brokenness.patch b/packages/x11/xserver/xorg-server/patches/xserver-1.6.0-less-acpi-brokenness.patch new file mode 100644 index 0000000000..cc80e6cef4 --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/xserver-1.6.0-less-acpi-brokenness.patch @@ -0,0 +1,31 @@ +From a8079882f1884edc62a9de28af915bd8b65dfbbe Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Wed, 11 Mar 2009 14:02:11 -0400 +Subject: [PATCH] Don't build the ACPI code. + +No good can come of this. +--- + configure.ac | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 72ae67e..04716f8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1269,13 +1269,11 @@ if test "x$XORG" = xyes; then + case $host_cpu in + ia64*) + linux_ia64=yes +- linux_acpi="yes" + ;; + alpha*) + linux_alpha=yes + ;; + i*86|amd64*|x86_64*) +- linux_acpi="yes" + ;; + *) + ;; +-- +1.6.1.3 + diff --git a/packages/x11/xserver/xorg-server/patches/xserver-1.7.0-glx-versioning.patch b/packages/x11/xserver/xorg-server/patches/xserver-1.7.0-glx-versioning.patch new file mode 100644 index 0000000000..c8a1c30954 --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/xserver-1.7.0-glx-versioning.patch @@ -0,0 +1,233 @@ +From 3ef4be8129f78afd5566a9e5d0fb901449dcb771 Mon Sep 17 00:00:00 2001 +From: Ian Romanick +Date: Tue, 29 Sep 2009 16:43:43 -0700 +Subject: [PATCH] GLX: Enable GLX 1.4 on DRI2 + +this squashes 4 commits +(cherry picked from commit ad5c0d9efa47476ed5cf75c82265c73919e468b4) +(cherry picked from commit cb54cf1b3e8c4109541cfb698542c00f2473e731) +(cherry picked from commit 4c6bfa2c09ae2b0cffdf9211a6dfbcaefe0366b5) +(cherry picked from commit 9bf2ff4faf730913de3073f346646a8727be41d4) +--- + glx/glxcmds.c | 12 ++++++++---- + glx/glxdri2.c | 12 ++++++++++++ + glx/glxext.c | 8 +++++++- + glx/glxscreens.c | 15 ++++++++++++--- + glx/glxscreens.h | 11 +++++++++++ + glx/glxserver.h | 3 +++ + glx/indirect_texture_compression.c | 4 ++-- + include/protocol-versions.h | 2 +- + 8 files changed, 56 insertions(+), 11 deletions(-) + +diff --git a/glx/glxcmds.c b/glx/glxcmds.c +index b1061a8..ba4c123 100644 +--- a/glx/glxcmds.c ++++ b/glx/glxcmds.c +@@ -50,7 +50,6 @@ + #include "indirect_dispatch.h" + #include "indirect_table.h" + #include "indirect_util.h" +-#include "protocol-versions.h" + + static int + validGlxScreen(ClientPtr client, int screen, __GLXscreen **pGlxScreen, int *err) +@@ -739,8 +738,8 @@ int __glXDisp_QueryVersion(__GLXclientState *cl, GLbyte *pc) + ** client if it wants to work with older clients; however, in this + ** implementation the server just returns its version number. + */ +- reply.majorVersion = SERVER_GLX_MAJOR_VERSION; +- reply.minorVersion = SERVER_GLX_MINOR_VERSION; ++ reply.majorVersion = glxMajorVersion; ++ reply.minorVersion = glxMinorVersion; + reply.length = 0; + reply.type = X_Reply; + reply.sequenceNumber = client->sequence; +@@ -2360,6 +2359,7 @@ int __glXDisp_QueryServerString(__GLXclientState *cl, GLbyte *pc) + char *buf; + __GLXscreen *pGlxScreen; + int err; ++ char ver_str[16]; + + if (!validGlxScreen(client, req->screen, &pGlxScreen, &err)) + return err; +@@ -2369,7 +2369,11 @@ int __glXDisp_QueryServerString(__GLXclientState *cl, GLbyte *pc) + ptr = pGlxScreen->GLXvendor; + break; + case GLX_VERSION: +- ptr = pGlxScreen->GLXversion; ++ /* Return to the server version rather than the screen version ++ * to prevent confusion when they do not match. ++ */ ++ snprintf(ver_str, 16, "%d.%d", glxMajorVersion, glxMinorVersion); ++ ptr = ver_str; + break; + case GLX_EXTENSIONS: + ptr = pGlxScreen->GLXextensions; +diff --git a/glx/glxdri2.c b/glx/glxdri2.c +index ed7fb4c..ed7dc80 100644 +--- a/glx/glxdri2.c ++++ b/glx/glxdri2.c +@@ -685,6 +685,18 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + screen->base.GLXextensions); + } + ++ /* We're going to assume (perhaps incorrectly?) that all DRI2-enabled ++ * drivers support the required extensions for GLX 1.4. The extensions ++ * we're assuming are: ++ * ++ * - GLX_SGI_make_current_read (1.3) ++ * - GLX_SGIX_fbconfig (1.3) ++ * - GLX_SGIX_pbuffer (1.3) ++ * - GLX_ARB_multisample (1.4) ++ */ ++ screen->base.GLXmajor = 1; ++ screen->base.GLXminor = 4; ++ + screen->enterVT = pScrn->EnterVT; + pScrn->EnterVT = glxDRIEnterVT; + screen->leaveVT = pScrn->LeaveVT; +diff --git a/glx/glxext.c b/glx/glxext.c +index 19d70d4..9f9c0ed 100644 +--- a/glx/glxext.c ++++ b/glx/glxext.c +@@ -360,12 +360,18 @@ void GlxExtensionInit(void) + pScreen = screenInfo.screens[i]; + + for (p = __glXProviderStack; p != NULL; p = p->next) { +- if (p->screenProbe(pScreen) != NULL) { ++ __GLXscreen *glxScreen; ++ ++ glxScreen = p->screenProbe(pScreen); ++ if (glxScreen != NULL) { ++ if (glxScreen->GLXminor < glxMinorVersion) ++ glxMinorVersion = glxScreen->GLXminor; + LogMessage(X_INFO, + "GLX: Initialized %s GL provider for screen %d\n", + p->name, i); + break; + } ++ + } + + if (!p) +diff --git a/glx/glxscreens.c b/glx/glxscreens.c +index 7d29d31..674e2c6 100644 +--- a/glx/glxscreens.c ++++ b/glx/glxscreens.c +@@ -42,6 +42,7 @@ + #include "glxserver.h" + #include "glxutil.h" + #include "glxext.h" ++#include "protocol-versions.h" + + static int glxScreenPrivateKeyIndex; + static DevPrivateKey glxScreenPrivateKey = &glxScreenPrivateKeyIndex; +@@ -162,7 +163,8 @@ static const char GLServerExtensions[] = + ** supported across all screens in a multi-screen system. + */ + static char GLXServerVendorName[] = "SGI"; +-static char GLXServerVersion[] = "1.2"; ++unsigned glxMajorVersion = SERVER_GLX_MAJOR_VERSION; ++unsigned glxMinorVersion = SERVER_GLX_MINOR_VERSION; + static char GLXServerExtensions[] = + "GLX_ARB_multisample " + "GLX_EXT_visual_info " +@@ -378,9 +380,17 @@ void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr pScreen) + pGlxScreen->pScreen = pScreen; + pGlxScreen->GLextensions = xstrdup(GLServerExtensions); + pGlxScreen->GLXvendor = xstrdup(GLXServerVendorName); +- pGlxScreen->GLXversion = xstrdup(GLXServerVersion); + pGlxScreen->GLXextensions = xstrdup(GLXServerExtensions); + ++ /* All GLX providers must support all of the functionality required for at ++ * least GLX 1.2. If the provider supports a higher version, the GLXminor ++ * version can be changed in the provider's screen-probe routine. For ++ * most providers, the screen-probe routine is the caller of this ++ * function. ++ */ ++ pGlxScreen->GLXmajor = 1; ++ pGlxScreen->GLXminor = 2; ++ + pGlxScreen->CloseScreen = pScreen->CloseScreen; + pScreen->CloseScreen = glxCloseScreen; + pGlxScreen->DestroyWindow = pScreen->DestroyWindow; +@@ -454,7 +464,6 @@ void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr pScreen) + void __glXScreenDestroy(__GLXscreen *screen) + { + xfree(screen->GLXvendor); +- xfree(screen->GLXversion); + xfree(screen->GLXextensions); + xfree(screen->GLextensions); + } +diff --git a/glx/glxscreens.h b/glx/glxscreens.h +index 3c1bdd4..bff4363 100644 +--- a/glx/glxscreens.h ++++ b/glx/glxscreens.h +@@ -161,6 +161,17 @@ struct __GLXscreen { + char *GLXversion; + char *GLXextensions; + ++ /** ++ * \name GLX version supported by this screen. ++ * ++ * Since the GLX version advertised by the server is for the whole server, ++ * the GLX protocol code uses the minimum version supported on all screens. ++ */ ++ /*@{*/ ++ unsigned GLXmajor; ++ unsigned GLXminor; ++ /*@}*/ ++ + Bool (*CloseScreen)(int index, ScreenPtr pScreen); + Bool (*DestroyWindow)(WindowPtr pWindow); + }; +diff --git a/glx/glxserver.h b/glx/glxserver.h +index 4aa8c2e..80f1b28 100644 +--- a/glx/glxserver.h ++++ b/glx/glxserver.h +@@ -248,4 +248,7 @@ extern int __glXImageSize(GLenum format, GLenum type, + GLint imageHeight, GLint rowLength, GLint skipImages, GLint skipRows, + GLint alignment); + ++extern unsigned glxMajorVersion; ++extern unsigned glxMinorVersion; ++ + #endif /* !__GLX_server_h__ */ +diff --git a/glx/indirect_texture_compression.c b/glx/indirect_texture_compression.c +index 25c6eb3..5f44d7b 100644 +--- a/glx/indirect_texture_compression.c ++++ b/glx/indirect_texture_compression.c +@@ -52,7 +52,7 @@ int __glXDisp_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyte *p + const GLenum target = *(GLenum *)(pc + 0); + const GLint level = *(GLint *)(pc + 4); + GLint compsize = 0; +- char *answer, answerBuffer[200]; ++ char *answer = NULL, answerBuffer[200]; + + CALL_GetTexLevelParameteriv(GET_DISPATCH(), (target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &compsize)); + +@@ -92,7 +92,7 @@ int __glXDispSwap_GetCompressedTexImageARB(struct __GLXclientStateRec *cl, GLbyt + const GLenum target = (GLenum) bswap_32( *(int *)(pc + 0) ); + const GLint level = (GLint ) bswap_32( *(int *)(pc + 4) ); + GLint compsize = 0; +- char *answer, answerBuffer[200]; ++ char *answer = NULL, answerBuffer[200]; + + CALL_GetTexLevelParameteriv(GET_DISPATCH(), (target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &compsize)); + +diff --git a/include/protocol-versions.h b/include/protocol-versions.h +index da9770c..d688c66 100644 +--- a/include/protocol-versions.h ++++ b/include/protocol-versions.h +@@ -61,7 +61,7 @@ + + /* GLX */ + #define SERVER_GLX_MAJOR_VERSION 1 +-#define SERVER_GLX_MINOR_VERSION 2 ++#define SERVER_GLX_MINOR_VERSION 4 + + /* Xinerama */ + #define SERVER_PANORAMIX_MAJOR_VERSION 1 +-- +1.6.5.rc2 + diff --git a/packages/x11/xserver/xorg-server/patches/xserver-1.7.1-glx14-swrast.patch b/packages/x11/xserver/xorg-server/patches/xserver-1.7.1-glx14-swrast.patch new file mode 100644 index 0000000000..2c51802535 --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/xserver-1.7.1-glx14-swrast.patch @@ -0,0 +1,26 @@ +From 25a0107768c9f25e8edc5e423ca8b1d0813f2d04 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Tue, 24 Nov 2009 13:38:46 -0500 +Subject: [PATCH] Enable GLX 1.4 for swrast + +--- + glx/glxdriswrast.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c +index 44f658f..20f9f90 100644 +--- a/glx/glxdriswrast.c ++++ b/glx/glxdriswrast.c +@@ -510,6 +510,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + + __glXScreenInit(&screen->base, pScreen); + ++ screen->base.GLXmajor = 1; ++ screen->base.GLXminor = 4; ++ + LogMessage(X_INFO, + "AIGLX: Loaded and initialized %s\n", filename); + +-- +1.6.5.2 + diff --git a/packages/x11/xserver/xorg-server/patches/xserver-1.7.1-libcrypto.patch b/packages/x11/xserver/xorg-server/patches/xserver-1.7.1-libcrypto.patch new file mode 100644 index 0000000000..c271855a2c --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/xserver-1.7.1-libcrypto.patch @@ -0,0 +1,35 @@ +From 8875112f5c57ec5d575e717c5638fbc919145efb Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Mon, 16 Nov 2009 18:01:26 -0500 +Subject: [PATCH] configure: Only link against libcrypto + +openssl.pc will link you against libssl, which we don't need, and which +brings in another seven libraries we also don't need. This is still +bogus, we're really only trying to get a SHA1 routine, we could link it +statically and be even better off. +--- + configure.ac | 6 ------ + 1 files changed, 0 insertions(+), 6 deletions(-) + +diff --git a/configure.ac b/configure.ac +index f69f97e..254d33d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1297,14 +1297,8 @@ if test "x$SHA1_LIB" = "x" ; then + fi + + if test "x$SHA1_LIB" = "x" ; then +- PKG_CHECK_EXISTS([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes], +- [HAVE_OPENSSL_PKC=no]) +- if test "x$HAVE_OPENSSL_PKC" = xyes; then +- REQUIRED_LIBS="$REQUIRED_LIBS openssl" +- else + AC_CHECK_LIB([crypto], [SHA1_Init], [SHA1_LIB="-lcrypto"], + [AC_MSG_ERROR([OpenSSL must be installed in order to build the X server.])]) +- fi + fi + + PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS]) +-- +1.6.5.2 + diff --git a/packages/x11/xserver/xorg-server/patches/xserver-1.8-udev-warning.diff b/packages/x11/xserver/xorg-server/patches/xserver-1.8-udev-warning.diff deleted file mode 100644 index 666dd96658..0000000000 --- a/packages/x11/xserver/xorg-server/patches/xserver-1.8-udev-warning.diff +++ /dev/null @@ -1,37 +0,0 @@ -From 57a188877b0472edb12bdf707b1550abbeb85af8 Mon Sep 17 00:00:00 2001 -From: Fedora X Ninjas -Date: Wed, 17 Feb 2010 11:12:36 +1000 -Subject: [PATCH] Stick giant warning into logfiles about udev configuration changes. - -Signed-off-by: Fedora X Ninjas ---- - hw/xfree86/common/xf86Config.c | 13 +++++++++++++ - 1 files changed, 13 insertions(+), 0 deletions(-) - -diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c -index 132e8bc..b1722cd 100644 ---- a/hw/xfree86/common/xf86Config.c -+++ b/hw/xfree86/common/xf86Config.c -@@ -1472,6 +1472,19 @@ checkCoreInputDevices(serverLayoutPtr servlayoutp, Bool implicitLayout) - "input devices.\n\tIf no devices become available, " - "reconfigure %s or disable AutoAddDevices.\n", - config_backend, config_backend); -+ -+ xf86Msg(X_INFO, "\n" -+ "***************************************************************\n" -+ "***************************************************************\n" -+ "** OpenELEC.tv switched to udev-based device detection with **\n" -+ "** xorg-x11-server-1.7.99.901-1. Custom HAL configuration **\n" -+ "** stored in /etc/hal/fdi/policy will not be seen by this **\n" -+ "** server version. If you have such configuration you will **\n" -+ "** need to update it to the new format. **\n" -+ "** For more information, see the Fedora wiki page **\n" -+ "** https://fedoraproject.org/wiki/Input_device_configuration **\n" -+ "***************************************************************\n" -+ "***************************************************************\n"); - #else - xf86Msg(X_INFO, "Hotplugging is disabled and no input devices were configured.\n" - "\tTry disabling AllowEmptyInput.\n"); --- -1.6.6.1 - diff --git a/packages/x11/xserver/xorg-server/patches/xserver-boottime.patch b/packages/x11/xserver/xorg-server/patches/xserver-boottime.patch new file mode 100644 index 0000000000..efc85a42ab --- /dev/null +++ b/packages/x11/xserver/xorg-server/patches/xserver-boottime.patch @@ -0,0 +1,38 @@ +diff --git a/os/log.c b/os/log.c +index 0860847..2c46f1a 100644 +--- a/os/log.c ++++ b/os/log.c +@@ -255,6 +255,33 @@ LogVWrite(int verb, const char *f, va_list args) + static char tmpBuffer[1024]; + int len = 0; + ++ struct timeval time; ++ time_t tv_sec; ++ suseconds_t tv_usec; ++ static Bool first = TRUE; ++ static time_t start_tv_sec; ++ static suseconds_t start_usec; ++ int diff_sec, diff_usec; ++ ++ gettimeofday(&time, NULL); ++ tv_sec = time.tv_sec; ++ tv_usec = time.tv_usec; ++ if (first == TRUE) { ++ start_tv_sec = tv_sec; ++ start_usec = tv_usec; ++ first = FALSE; ++ } ++ diff_sec = (int)difftime(tv_sec, start_tv_sec); ++ diff_usec = (tv_usec - start_usec); ++ if (diff_usec < 0) { ++ diff_sec--; ++ diff_usec += 1000000; ++ } ++ sprintf(tmpBuffer, "[%d sec: %06d usec]", diff_sec , diff_usec); ++ len = strlen(tmpBuffer); ++ if (logFile) ++ fwrite(tmpBuffer, len, 1, logFile); ++ + /* + * Since a va_list can only be processed once, write the string to a + * buffer, and then write the buffer out to the appropriate output diff --git a/packages/x11/xserver/xorg-server/patches/xserver-no-root-2.diff b/packages/x11/xserver/xorg-server/patches/xserver-no-root-2.diff deleted file mode 100644 index 69af3f37c5..0000000000 --- a/packages/x11/xserver/xorg-server/patches/xserver-no-root-2.diff +++ /dev/null @@ -1,53 +0,0 @@ -diff --git a/hw/xfree86/os-support/linux/lnx_init.c b/hw/xfree86/os-support/linux/lnx_init.c -index 297e7a6..8671231 100644 ---- a/hw/xfree86/os-support/linux/lnx_init.c -+++ b/hw/xfree86/os-support/linux/lnx_init.c -@@ -42,6 +42,7 @@ static Bool KeepTty = FALSE; - static int VTnum = -1; - static Bool VTSwitch = TRUE; - static Bool ShareVTs = FALSE; -+Bool NoHwAccess = FALSE; - static int activeVT = -1; - - static int vtPermSave[4]; -@@ -377,6 +378,11 @@ xf86ProcessArgument(int argc, char *argv[], int i) - ShareVTs = TRUE; - return(1); - } -+ if (!strcmp(argv[i], "-nohwaccess")) -+ { -+ NoHwAccess = TRUE; -+ return(1); -+ } - if ((argv[i][0] == 'v') && (argv[i][1] == 't')) - { - if (sscanf(argv[i], "vt%2d", &VTnum) == 0) -@@ -397,5 +403,6 @@ xf86UseMsg(void) - ErrorF("-keeptty "); - ErrorF("don't detach controlling tty (for debugging only)\n"); - ErrorF("-novtswitch don't immediately switch to new VT\n"); -+ ErrorF("-nohwaccess don't access hardware ports directly\n"); - ErrorF("-sharevts share VTs with another X server\n"); - } -diff --git a/hw/xfree86/os-support/linux/lnx_video.c b/hw/xfree86/os-support/linux/lnx_video.c -index 26a1742..c34bb85 100644 ---- a/hw/xfree86/os-support/linux/lnx_video.c -+++ b/hw/xfree86/os-support/linux/lnx_video.c -@@ -50,6 +50,7 @@ - #define MAP_FAILED ((void *)-1) - #endif - -+extern Bool NoHwAccess; - static Bool ExtendedEnabled = FALSE; - - #ifdef __ia64__ -@@ -496,6 +497,9 @@ xf86EnableIO(void) - int fd; - unsigned int ioBase_phys; - #endif -+ /* Fake it... */ -+ if (NoHwAccess) -+ return TRUE; - - if (ExtendedEnabled) - return TRUE; diff --git a/packages/x11/xserver/xorg-server/url b/packages/x11/xserver/xorg-server/url index e2b23b6bdc..69d2bf394e 100644 --- a/packages/x11/xserver/xorg-server/url +++ b/packages/x11/xserver/xorg-server/url @@ -1 +1 @@ -http://sources.openelec.tv/svn/xorg-server-20100309.tar.bz2 +http://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.7.5.tar.bz2