mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
xorg-server:
- update to xorg-server-20100309
This commit is contained in:
parent
3691c13b30
commit
0219a0d2c6
@ -29,8 +29,7 @@ $SCRIPTS/build libfontenc
|
||||
$SCRIPTS/build pixman
|
||||
$SCRIPTS/build fontsproto
|
||||
$SCRIPTS/build xf86bigfontproto
|
||||
$SCRIPTS/build dbus
|
||||
$SCRIPTS/build hal
|
||||
$SCRIPTS/build udev
|
||||
|
||||
if [ "$XINERAMA_SUPPORT" = "yes" ]; then
|
||||
$SCRIPTS/build libXinerama
|
||||
@ -40,7 +39,6 @@ else
|
||||
fi
|
||||
|
||||
cd $PKG_BUILD
|
||||
autoconf
|
||||
./configure --host=$TARGET_NAME \
|
||||
--build=$HOST_NAME \
|
||||
--prefix=/usr \
|
||||
@ -61,7 +59,6 @@ autoconf
|
||||
--enable-registry \
|
||||
--disable-composite \
|
||||
$XORG_XINERAMA \
|
||||
--enable-null-root-cursor \
|
||||
--enable-mitshm \
|
||||
--disable-xres \
|
||||
--disable-record \
|
||||
@ -83,8 +80,9 @@ autoconf
|
||||
--enable-dbe \
|
||||
--disable-xf86bigfont \
|
||||
--enable-dpms \
|
||||
--enable-config-dbus \
|
||||
--enable-config-hal \
|
||||
--enable-config-udev \
|
||||
--disable-config-dbus \
|
||||
--disable-config-hal \
|
||||
--enable-xfree86-utils \
|
||||
--enable-xorg \
|
||||
--disable-dmx \
|
||||
@ -95,7 +93,6 @@ autoconf
|
||||
--disable-xwin \
|
||||
--disable-kdrive \
|
||||
--disable-xephyr \
|
||||
--disable-xsdl \
|
||||
--disable-xfake \
|
||||
--enable-xfbdev \
|
||||
--disable-install-setuid \
|
||||
@ -103,14 +100,15 @@ autoconf
|
||||
--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-fontdir=$XORG_PATH_FONTS \
|
||||
--with-default-font-path="$XORG_PATH_FONTS/liberation,$XORG_PATH_FONTS/misc,built-ins" \
|
||||
--with-fontrootdir=$XORG_PATH_FONTS \
|
||||
--with-default-font-path="$XORG_PATH_FONTS/misc,built-ins"
|
||||
|
||||
make
|
||||
|
||||
|
10
packages/x11/xserver/xorg-server/config/10-quirks.conf
Normal file
10
packages/x11/xserver/xorg-server/config/10-quirks.conf
Normal file
@ -0,0 +1,10 @@
|
||||
# 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
|
@ -3,7 +3,7 @@
|
||||
# runlevels: openelec
|
||||
|
||||
XORG_NVIDIA_CONF="/etc/X11/xorg-nvidia.conf"
|
||||
XORG_ARGS="-s 0 -noreset -allowMouseOpenFail -nocursor -nolisten tcp"
|
||||
XORG_ARGS="-s 0 -nr -noreset -allowMouseOpenFail -nocursor -nolisten tcp"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# do not change anything below
|
||||
@ -13,6 +13,7 @@ XORG_ARGS="-s 0 -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"
|
||||
|
@ -13,8 +13,7 @@ $SCRIPTS/install libXv
|
||||
$SCRIPTS/install libdrm
|
||||
$SCRIPTS/install Mesa
|
||||
$SCRIPTS/install pixman
|
||||
$SCRIPTS/install dbus
|
||||
$SCRIPTS/install hal
|
||||
$SCRIPTS/install udev
|
||||
|
||||
[ "$XINERAMA_SUPPORT" = "yes" ] && $SCRIPTS/install libXinerama
|
||||
|
||||
@ -54,11 +53,8 @@ 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/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
|
||||
mkdir -p $INSTALL/etc/X11/xorg.conf.d
|
||||
cp -PR $PKG_DIR/config/*.conf $INSTALL/etc/X11/xorg.conf.d
|
||||
|
||||
#Fonts
|
||||
$SCRIPTS/install encodings
|
||||
@ -76,11 +72,9 @@ mkdir -p $INSTALL/usr/share/hal/fdi/policy/10osvendor/
|
||||
$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
|
||||
|
@ -1,336 +0,0 @@
|
||||
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 <xkb-config.h>
|
||||
|
||||
+#ifdef HAVE_SHA1_IN_LIBMD /* Use libmd for SHA1 */
|
||||
+# include <sha1.h>
|
||||
+#else /* Use OpenSSL's libcrypto */
|
||||
+# include <stddef.h> /* buggy openssl/sha.h wants size_t */
|
||||
+# include <openssl/sha.h>
|
||||
+#endif
|
||||
+
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <X11/X.h>
|
||||
@@ -43,24 +50,13 @@
|
||||
#define XKBSRV_NEED_FILE_FUNCS
|
||||
#include <xkbsrv.h>
|
||||
#include <X11/extensions/XI.h>
|
||||
+#include <errno.h>
|
||||
#include "xkb.h"
|
||||
|
||||
#if defined(CSRG_BASED) || defined(linux) || defined(__GNU__)
|
||||
#include <paths.h>
|
||||
#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<SHA_DIGEST_LENGTH; ++i) {
|
||||
+ sprintf(sha1Asc+i*2, "%02X", sha1[i]);
|
||||
+ }
|
||||
+
|
||||
+ return Success;
|
||||
+}
|
||||
+
|
||||
+/* call xkbcomp and compile XKB keymap, return xkm file name in
|
||||
+ nameRtrn */
|
||||
+static Bool
|
||||
XkbDDXCompileKeymapByNames( XkbDescPtr xkb,
|
||||
XkbComponentNamesPtr names,
|
||||
unsigned want,
|
||||
@@ -183,7 +218,11 @@
|
||||
int nameRtrnLen)
|
||||
{
|
||||
FILE * out;
|
||||
- char *buf = NULL, keymap[PATH_MAX], xkm_output_dir[PATH_MAX];
|
||||
+ char * buf = NULL, xkmfile[PATH_MAX], xkm_output_dir[PATH_MAX];
|
||||
+ char * tmpXkmFile = NULL;
|
||||
+ char * canonicalXkmFileName = NULL;
|
||||
+ char sha1Asc[SHA_DIGEST_LENGTH*2+1], xkbKeyMapBuf[100*1024];
|
||||
+ int ret, result;
|
||||
|
||||
const char *emptystring = "";
|
||||
const char *xkbbasedirflag = emptystring;
|
||||
@@ -194,15 +233,69 @@
|
||||
/* WIN32 has no popen. The input must be stored in a file which is
|
||||
used as input for xkbcomp. xkbcomp does not read from stdin. */
|
||||
char tmpname[PATH_MAX];
|
||||
- const char *xkmfile = tmpname;
|
||||
+ const char *xkbfile = tmpname;
|
||||
#else
|
||||
- const char *xkmfile = "-";
|
||||
+ const char *xkbfile = "-";
|
||||
+#endif
|
||||
+
|
||||
+ /* Write keymap source (xkbfile) to memory buffer `xkbKeyMapBuf',
|
||||
+ of which SHA1 is generated and used as result xkm file name */
|
||||
+ memset(xkbKeyMapBuf, 0, sizeof(xkbKeyMapBuf));
|
||||
+ out = fmemopen(xkbKeyMapBuf, sizeof(xkbKeyMapBuf), "w");
|
||||
+ if (NULL == out) {
|
||||
+ ErrorF("[xkb] Open xkbKeyMapBuf for writing failed\n");
|
||||
+ return False;
|
||||
+ }
|
||||
+ ret = XkbWriteXKBKeymapForNames(out, names, xkb, want, need);
|
||||
+ if (fclose(out) !=0)
|
||||
+ {
|
||||
+ ErrorF("[xkb] XkbWriteXKBKeymapForNames error, perhaps xkbKeyMapBuf is too small\n");
|
||||
+ return False;
|
||||
+ }
|
||||
+#ifdef DEBUG
|
||||
+ if (xkbDebugFlags) {
|
||||
+ ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n");
|
||||
+ fputs(xkbKeyMapBuf, stderr);
|
||||
+ }
|
||||
#endif
|
||||
+ if (!ret) {
|
||||
+ ErrorF("[xkb] Generating XKB Keymap failed, giving up compiling keymap\n");
|
||||
+ return False;
|
||||
+ }
|
||||
|
||||
- snprintf(keymap, sizeof(keymap), "server-%s", display);
|
||||
+ DebugF("[xkb] computing SHA1 of keymap\n");
|
||||
+ if (Success == Sha1Asc(sha1Asc, xkbKeyMapBuf)) {
|
||||
+ snprintf(xkmfile, sizeof(xkmfile), "server-%s", sha1Asc);
|
||||
+ }
|
||||
+ else {
|
||||
+ ErrorF("[xkb] Computing SHA1 of keymap failed, "
|
||||
+ "using display name instead as xkm file name\n");
|
||||
+ snprintf(xkmfile, sizeof(xkmfile), "server-%s", display);
|
||||
+ }
|
||||
|
||||
OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
|
||||
|
||||
+ /* set nameRtrn, fail if it's too small */
|
||||
+ if ((strlen(xkmfile)+1 > 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<num>-default.xkm
|
||||
-where <num> 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-<SHA1>.xkm
|
||||
+
|
||||
+where <SHA1> 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.
|
@ -1,30 +0,0 @@
|
||||
--- 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.
|
||||
*/
|
@ -1,35 +0,0 @@
|
||||
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
|
@ -1,22 +0,0 @@
|
||||
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;
|
@ -1,14 +0,0 @@
|
||||
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;
|
||||
|
@ -1,12 +0,0 @@
|
||||
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 */
|
@ -1,13 +0,0 @@
|
||||
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;
|
@ -1,61 +0,0 @@
|
||||
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
|
@ -1,30 +0,0 @@
|
||||
From f0ef98d8d54f5dfa3081b62ff672e0fe992b0a01 Mon Sep 17 00:00:00 2001
|
||||
From: Bryce Harrington <bryce@bryceharrington.org>
|
||||
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 <bryce@bryceharrington.org>
|
||||
---
|
||||
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
|
||||
|
@ -1,13 +0,0 @@
|
||||
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)
|
@ -1,107 +0,0 @@
|
||||
From 179cec1d2f919d8d8096d6030b0ad9b6285dfd4d Mon Sep 17 00:00:00 2001
|
||||
From: Bryce Harrington <bryce@bryceharrington.org>
|
||||
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 */
|
@ -1,39 +0,0 @@
|
||||
From 7813adf66be31d8b0e8df21821e786e688f7fe78 Mon Sep 17 00:00:00 2001
|
||||
From: Bryce Harrington <bryce@bryceharrington.org>
|
||||
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 <bryce@bryceharrington.org>
|
||||
---
|
||||
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
|
||||
|
@ -1,21 +0,0 @@
|
||||
#
|
||||
# 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;
|
||||
}
|
||||
|
@ -1,16 +0,0 @@
|
||||
From 8663524ce398b56af596ab1e7e96b62ca45b79e9 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
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;
|
@ -1,91 +0,0 @@
|
||||
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);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
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;
|
@ -1,32 +0,0 @@
|
||||
/* 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;
|
@ -1,32 +0,0 @@
|
||||
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));
|
@ -0,0 +1,17 @@
|
||||
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");
|
||||
|
@ -0,0 +1,12 @@
|
||||
--- 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
|
@ -1,6 +1,6 @@
|
||||
From b4e4b980663692a3af5787eeaf2d48eb6c0188ed Mon Sep 17 00:00:00 2001
|
||||
From: Fedora X Ninjas <airlied@redhat.com>
|
||||
Date: Tue, 4 Aug 2009 14:45:58 +1000
|
||||
From eff3bb9c6f0b71a57705885a3fe6e6469d252d2b Mon Sep 17 00:00:00 2001
|
||||
From: Fedora X Ninjas <x@fedoraproject.org>
|
||||
Date: Wed, 20 Jan 2010 14:46:12 +1300
|
||||
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 32e26d9..0bf1d52 100644
|
||||
index caff1cb..be1d1c4 100644
|
||||
--- a/dix/window.c
|
||||
+++ b/dix/window.c
|
||||
@@ -466,22 +466,24 @@ InitRootWindow(WindowPtr pWin)
|
||||
@ -59,7 +59,7 @@ index 32e26d9..0bf1d52 100644
|
||||
MapWindow(pWin, serverClient);
|
||||
}
|
||||
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
|
||||
index e84da4e..2a0f47a 100644
|
||||
index 6707448..776b898 100644
|
||||
--- a/hw/xfree86/common/xf86Init.c
|
||||
+++ b/hw/xfree86/common/xf86Init.c
|
||||
@@ -77,6 +77,7 @@
|
||||
@ -70,7 +70,7 @@ index e84da4e..2a0f47a 100644
|
||||
|
||||
#include "xf86VGAarbiter.h"
|
||||
#include "globals.h"
|
||||
@@ -234,6 +235,7 @@ xf86CreateRootWindow(WindowPtr pWin)
|
||||
@@ -254,6 +255,7 @@ xf86CreateRootWindow(WindowPtr pWin)
|
||||
int ret = TRUE;
|
||||
int err = Success;
|
||||
ScreenPtr pScreen = pWin->drawable.pScreen;
|
||||
@ -78,7 +78,7 @@ index e84da4e..2a0f47a 100644
|
||||
RootWinPropPtr pProp;
|
||||
CreateWindowProcPtr CreateWindow = (CreateWindowProcPtr)
|
||||
dixLookupPrivate(&pScreen->devPrivates, xf86CreateRootWindowKey);
|
||||
@@ -285,6 +287,15 @@ xf86CreateRootWindow(WindowPtr pWin)
|
||||
@@ -305,6 +307,15 @@ xf86CreateRootWindow(WindowPtr pWin)
|
||||
}
|
||||
}
|
||||
|
||||
@ -95,10 +95,10 @@ index e84da4e..2a0f47a 100644
|
||||
return (ret);
|
||||
}
|
||||
diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h
|
||||
index 5c3ee44..e3c7841 100644
|
||||
index de1f1b6..5c3aa00 100644
|
||||
--- a/hw/xfree86/common/xf86str.h
|
||||
+++ b/hw/xfree86/common/xf86str.h
|
||||
@@ -516,7 +516,7 @@ typedef struct _confdrirec {
|
||||
@@ -503,7 +503,7 @@ typedef struct _confdrirec {
|
||||
} confDRIRec, *confDRIPtr;
|
||||
|
||||
/* These values should be adjusted when new fields are added to ScrnInfoRec */
|
||||
@ -107,8 +107,8 @@ index 5c3ee44..e3c7841 100644
|
||||
#define NUM_RESERVED_POINTERS 14
|
||||
#define NUM_RESERVED_FUNCS 11
|
||||
|
||||
@@ -800,6 +800,9 @@ typedef struct _ScrnInfoRec {
|
||||
ClockRangesPtr clockRanges;
|
||||
@@ -775,6 +775,9 @@ typedef struct _ScrnInfoRec {
|
||||
ClockRangePtr 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 00abd63..7bfdf8b 100644
|
||||
index d7c8388..40583d0 100644
|
||||
--- a/os/utils.c
|
||||
+++ b/os/utils.c
|
||||
@@ -514,6 +514,7 @@ void UseMsg(void)
|
||||
@@ -513,6 +513,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 00abd63..7bfdf8b 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");
|
||||
@@ -861,6 +862,8 @@ ProcessCommandLine(int argc, char *argv[])
|
||||
@@ -856,6 +857,8 @@ ProcessCommandLine(int argc, char *argv[])
|
||||
defaultBackingStore = WhenMapped;
|
||||
else if ( strcmp( argv[i], "-wr") == 0)
|
||||
whiteRoot = TRUE;
|
||||
@ -151,5 +151,5 @@ index 00abd63..7bfdf8b 100644
|
||||
if(++i < argc) {
|
||||
long reqSizeArg = atol(argv[i]);
|
||||
--
|
||||
1.6.0.6
|
||||
1.6.6
|
||||
|
@ -1,32 +0,0 @@
|
||||
From dc5cedd61e00afec33cbfaa7fdfbb6c357074dbd Mon Sep 17 00:00:00 2001
|
||||
From: =?utf-8?q?S=C3=B8ren=20Sandmann=20Pedersen?= <sandmann@redhat.com>
|
||||
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
|
||||
|
@ -1,26 +0,0 @@
|
||||
From 079910986a1b8f5042e16ee2ba3ad9ed843b67ca Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
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
|
||||
|
@ -1,31 +0,0 @@
|
||||
From a8079882f1884edc62a9de28af915bd8b65dfbbe Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
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
|
||||
|
@ -1,233 +0,0 @@
|
||||
From 3ef4be8129f78afd5566a9e5d0fb901449dcb771 Mon Sep 17 00:00:00 2001
|
||||
From: Ian Romanick <ian.d.romanick@intel.com>
|
||||
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
|
||||
|
@ -1,26 +0,0 @@
|
||||
From 25a0107768c9f25e8edc5e423ca8b1d0813f2d04 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
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
|
||||
|
@ -1,35 +0,0 @@
|
||||
From 8875112f5c57ec5d575e717c5638fbc919145efb Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
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
|
||||
|
@ -0,0 +1,37 @@
|
||||
From 57a188877b0472edb12bdf707b1550abbeb85af8 Mon Sep 17 00:00:00 2001
|
||||
From: Fedora X Ninjas <x@fedoraproject.org>
|
||||
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 <x@fedoraproject.org>
|
||||
---
|
||||
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
|
||||
|
@ -1,38 +0,0 @@
|
||||
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
|
@ -0,0 +1,53 @@
|
||||
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;
|
@ -1 +1 @@
|
||||
http://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.7.5.tar.bz2
|
||||
http://sources.openelec.tv/svn/xorg-server-20100309.tar.bz2
|
||||
|
Loading…
x
Reference in New Issue
Block a user