forked from pool/xorg-x11-server
Accepting request 76024 from home:eeich:branches:X11:XOrg
- update: * randr1_1-sig11.diff removed accidentally forgotten debugging code. * u_OS-acpi-Reconnect-to-acpid-when-it-gets-restarted.patch made socket non-blocking. Idea taken from a pach for SLES11. - don't look for 10-evdev.conf for anything older than 11.3 (this includes SLE-11). - remove use-last-screen.patch: This patch has been rejected upstream. We will try to resolve this issue differently by not providing any screen, monitor or device section. - remove disable-fbblt-opt.diff: We are unable to reproduce this issue any more. So let's remove the workaround and start from scratch when issue resurfaces and find a proper fix. - fixed bug-197858_dpms.diff: removed pieces that have been solved differently today. - remove moblin-use_preferred_mode_for_all_outputs.diff: remove moblin specific patches. - rename edit_data_sanity_check.diff -> edid_data_sanity_check.diff - remove p_xkills_wrong_client.diff: made obsolete by commit b7f3618f. OBS-URL: https://build.opensuse.org/request/show/76024 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=347
This commit is contained in:
parent
e1481d713f
commit
548e4d5cc8
@ -1,121 +0,0 @@
|
|||||||
>From fedf91eeabcfdd6d26b52529a16a64f744aa42ad Mon Sep 17 00:00:00 2001
|
|
||||||
From: Matthieu Herrb <matthieu.herrb@laas.fr>
|
|
||||||
Date: Mon, 28 Jun 2010 23:54:13 +0200
|
|
||||||
Subject: [PATCH] Workaround for CVE-2010-2240.
|
|
||||||
|
|
||||||
By limiting the address space that the X server can use,
|
|
||||||
it prevents stack and mmap()ed areas to become so close that
|
|
||||||
the stack will grow over a mmaped area.
|
|
||||||
|
|
||||||
Credits: Rafal Wojtczuk <rafal@invisiblethingslab.com>
|
|
||||||
---
|
|
||||||
doc/Xserver.man.pre | 7 +++++++
|
|
||||||
include/opaque.h | 3 +++
|
|
||||||
os/osinit.c | 24 ++++++++++++++++++++++++
|
|
||||||
os/utils.c | 16 ++++++++++++++++
|
|
||||||
4 files changed, 50 insertions(+), 0 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/doc/Xserver.man.pre b/doc/Xserver.man.pre
|
|
||||||
index ce3b3a1..91c595f 100644
|
|
||||||
--- a/doc/Xserver.man.pre
|
|
||||||
+++ b/doc/Xserver.man.pre
|
|
||||||
@@ -285,6 +285,13 @@ sets the stack space limit of the server to the specified number of kilobytes.
|
|
||||||
A value of zero makes the stack size as large as possible. The default value
|
|
||||||
of \-1 leaves the stack space limit unchanged.
|
|
||||||
.TP 8
|
|
||||||
+.B \-la \fIkilobytes\fP
|
|
||||||
+sets the address space limit of the server to the specified number of
|
|
||||||
+kilobytes.
|
|
||||||
+A value of zero makes address space as large as possible.
|
|
||||||
+The default value is 1572864 (1.5GB) on 32 bit architectures and
|
|
||||||
+10485760 (10GB) on 64 bit architectures.
|
|
||||||
+.TP 8
|
|
||||||
.B \-logo
|
|
||||||
turns on the X Window System logo display in the screen-saver.
|
|
||||||
There is currently no way to change this from a client.
|
|
||||||
diff --git a/include/opaque.h b/include/opaque.h
|
|
||||||
index b3c7c70..4208d03 100644
|
|
||||||
--- a/include/opaque.h
|
|
||||||
+++ b/include/opaque.h
|
|
||||||
@@ -67,6 +67,9 @@ extern _X_EXPORT int limitStackSpace;
|
|
||||||
#ifdef RLIMIT_NOFILE
|
|
||||||
extern _X_EXPORT int limitNoFile;
|
|
||||||
#endif
|
|
||||||
+#ifdef RLIMIT_AS
|
|
||||||
+extern _X_EXPORT int limitAddressSpace;
|
|
||||||
+#endif
|
|
||||||
extern _X_EXPORT Bool defeatAccessControl;
|
|
||||||
extern _X_EXPORT long maxBigRequestSize;
|
|
||||||
extern _X_EXPORT Bool party_like_its_1989;
|
|
||||||
diff --git a/os/osinit.c b/os/osinit.c
|
|
||||||
index 32747df..723fb14 100644
|
|
||||||
--- a/os/osinit.c
|
|
||||||
+++ b/os/osinit.c
|
|
||||||
@@ -96,6 +96,14 @@ int limitStackSpace = -1;
|
|
||||||
#ifdef RLIMIT_NOFILE
|
|
||||||
int limitNoFile = -1;
|
|
||||||
#endif
|
|
||||||
+#ifdef RLIMIT_AS
|
|
||||||
+#ifdef _XSERVER64
|
|
||||||
+#define XORG_AS_LIMIT 10737418240LL
|
|
||||||
+#else
|
|
||||||
+#define XORG_AS_LIMIT 1610612736
|
|
||||||
+#endif
|
|
||||||
+long limitAddressSpace = XORG_AS_LIMIT;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
static OsSigWrapperPtr OsSigWrapper = NULL;
|
|
||||||
|
|
||||||
@@ -301,6 +309,22 @@ OsInit(void)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
+#ifdef RLIMIT_AS
|
|
||||||
+ if (limitAddressSpace >= 0)
|
|
||||||
+ {
|
|
||||||
+ struct rlimit rlim;
|
|
||||||
+
|
|
||||||
+ if (!getrlimit(RLIMIT_AS, &rlim))
|
|
||||||
+ {
|
|
||||||
+ if ((limitAddressSpace > 0)
|
|
||||||
+ && (limitAddressSpace < rlim.rlim_max))
|
|
||||||
+ rlim.rlim_cur = limitAddressSpace;
|
|
||||||
+ else
|
|
||||||
+ rlim.rlim_cur = rlim.rlim_max;
|
|
||||||
+ (void)setrlimit(RLIMIT_AS, &rlim);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
LockServer();
|
|
||||||
been_here = TRUE;
|
|
||||||
}
|
|
||||||
diff --git a/os/utils.c b/os/utils.c
|
|
||||||
index 51455cc..4af0cb3 100644
|
|
||||||
--- a/os/utils.c
|
|
||||||
+++ b/os/utils.c
|
|
||||||
@@ -745,6 +745,22 @@ ProcessCommandLine(int argc, char *argv[])
|
|
||||||
UseMsg();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
+#ifdef RLIMIT_AS
|
|
||||||
+ else if ( strcmp( argv[i], "-la") == 0)
|
|
||||||
+ {
|
|
||||||
+ if (getuid() != geteuid()) {
|
|
||||||
+ FatalError("The '-la' option can only be used by root.\n");
|
|
||||||
+ }
|
|
||||||
+ if(++i < argc)
|
|
||||||
+ {
|
|
||||||
+ limitAddressSpace = atol(argv[i]);
|
|
||||||
+ if (limitAddressSpace > 0)
|
|
||||||
+ limitAddressSpace *= 1024;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ UseMsg();
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
else if ( strcmp ( argv[i], "-nolock") == 0)
|
|
||||||
{
|
|
||||||
#if !defined(WIN32) && !defined(__CYGWIN__)
|
|
||||||
--
|
|
||||||
1.7.0.5
|
|
||||||
|
|
@ -1,73 +0,0 @@
|
|||||||
--- xorg-server-1.9.0/dix/window.c.orig 2010-08-23 16:07:24.000000000 +0200
|
|
||||||
+++ xorg-server-1.9.0/dix/window.c 2010-08-23 16:14:09.000000000 +0200
|
|
||||||
@@ -535,6 +535,48 @@ RealChildHead(WindowPtr pWin)
|
|
||||||
return NullWindow;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int
|
|
||||||
+TreeDepth(WindowPtr pWin)
|
|
||||||
+{
|
|
||||||
+ int depth = 1;
|
|
||||||
+ int max_depth = 1;
|
|
||||||
+ WindowPtr pChild;
|
|
||||||
+
|
|
||||||
+ if (!(pChild = pWin))
|
|
||||||
+ return 0;
|
|
||||||
+ while (1)
|
|
||||||
+ {
|
|
||||||
+ if (pChild->firstChild)
|
|
||||||
+ {
|
|
||||||
+ ++depth;
|
|
||||||
+ pChild = pChild->firstChild;
|
|
||||||
+ continue;
|
|
||||||
+ } else if (depth > max_depth)
|
|
||||||
+ max_depth = depth;
|
|
||||||
+ while (!pChild->nextSib && (pChild != pWin)) {
|
|
||||||
+ --depth;
|
|
||||||
+ pChild = pChild->parent;
|
|
||||||
+ }
|
|
||||||
+ if (pChild == pWin)
|
|
||||||
+ break;
|
|
||||||
+ pChild = pChild->nextSib;
|
|
||||||
+ }
|
|
||||||
+ return max_depth;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int
|
|
||||||
+WindowDepth(WindowPtr pWin)
|
|
||||||
+{
|
|
||||||
+ int depth = 0;
|
|
||||||
+ while (pWin) {
|
|
||||||
+ ++depth;
|
|
||||||
+ pWin = pWin->parent;
|
|
||||||
+ }
|
|
||||||
+ return depth;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#define MAX_TREE_DEPTH 256
|
|
||||||
+
|
|
||||||
/*****
|
|
||||||
* CreateWindow
|
|
||||||
* Makes a window in response to client request
|
|
||||||
@@ -555,6 +597,11 @@ CreateWindow(Window wid, WindowPtr pPare
|
|
||||||
PixmapFormatRec *format;
|
|
||||||
WindowOptPtr ancwopt;
|
|
||||||
|
|
||||||
+ if (WindowDepth(pParent) >= MAX_TREE_DEPTH - 1) {
|
|
||||||
+ *error = BadAlloc;
|
|
||||||
+ return NullWindow;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (class == CopyFromParent)
|
|
||||||
class = pParent->drawable.class;
|
|
||||||
|
|
||||||
@@ -2434,6 +2481,9 @@ ReparentWindow(WindowPtr pWin, WindowPtr
|
|
||||||
int bw = wBorderWidth (pWin);
|
|
||||||
ScreenPtr pScreen;
|
|
||||||
|
|
||||||
+ if (WindowDepth(pParent) + TreeDepth(pWin) >= MAX_TREE_DEPTH)
|
|
||||||
+ return BadAlloc;
|
|
||||||
+
|
|
||||||
pScreen = pWin->drawable.pScreen;
|
|
||||||
if (TraverseTree(pWin, CompareWIDs, (pointer)&pParent->drawable.id) == WT_STOPWALKING)
|
|
||||||
return BadMatch;
|
|
@ -1,31 +0,0 @@
|
|||||||
From 107688407c7ebc71323dc1203ed5b92276026e1e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Luc Verhaegen <libv@skynet.be>
|
|
||||||
Date: Wed, 2 Apr 2008 20:09:26 +0200
|
|
||||||
Subject: [PATCH] Default bitmap fonts should typically be set as unscaled.
|
|
||||||
|
|
||||||
It is generally not desired to have bitmap fonts scale. Even so
|
|
||||||
DEFAULT_FONT_PATH had the misc, 100dpi and 75dpi paths without the
|
|
||||||
:unscaled specifier.
|
|
||||||
|
|
||||||
Now the default font path has this per default, xorgconfig and
|
|
||||||
--configure will only use these as :unscaled too.
|
|
||||||
|
|
||||||
Since SUSE has been specifying :unscaled for its bitmap fonts for
|
|
||||||
about a decade or so, and since adding the default font path to the
|
|
||||||
.conf fontpath was only introduced a year ago, this lack of scaled
|
|
||||||
bitmap fonts will not have any new side-effects.
|
|
||||||
|
|
||||||
Reported by Mike Fabian, debugged and fixed with the help of Mike
|
|
||||||
Fabian and Stefan Dirsch.
|
|
||||||
================================================================================
|
|
||||||
--- xorg-server-1.7.99/configure.ac
|
|
||||||
+++ xorg-server-1.7.99/configure.ac
|
|
||||||
@@ -509,7 +509,7 @@
|
|
||||||
dnl Uses --default-font-path if set, otherwise checks for /etc/X11/fontpath.d,
|
|
||||||
dnl otherwise uses standard subdirectories of FONTROOTDIR. When cross
|
|
||||||
dnl compiling, assume default font path uses standard FONTROOTDIR directories.
|
|
||||||
-DEFAULT_FONT_PATH="${FONTMISCDIR}/,${FONTTTFDIR}/,${FONTOTFDIR}/,${FONTTYPE1DIR}/,${FONT100DPIDIR}/,${FONT75DPIDIR}/"
|
|
||||||
+DEFAULT_FONT_PATH="${FONTMISCDIR}:unscaled,${FONTTTFDIR}/,${FONTOTFDIR}/,${FONTTYPE1DIR}/,${FONT100DPIDIR}/,${FONT75DPIDIR}/"
|
|
||||||
if test "$cross_compiling" != yes; then
|
|
||||||
AC_CHECK_FILE([${sysconfdir}/X11/fontpath.d],
|
|
||||||
[DEFAULT_FONT_PATH='catalogue:${sysconfdir}/X11/fontpath.d'],
|
|
@ -67,39 +67,3 @@ Index: hw/xfree86/common/xf86Events.c
|
|||||||
return ih;
|
return ih;
|
||||||
}
|
}
|
||||||
|
|
||||||
--- os/WaitFor.c
|
|
||||||
+++ os/WaitFor.c
|
|
||||||
@@ -142,6 +142,7 @@
|
|
||||||
* For more info on ClientsWithInput, see ReadRequestFromClient().
|
|
||||||
* pClientsReady is an array to store ready client->index values into.
|
|
||||||
*****************/
|
|
||||||
+volatile fd_set tmp_set;
|
|
||||||
|
|
||||||
int
|
|
||||||
WaitForSomething(int *pClientsReady)
|
|
||||||
@@ -279,10 +280,9 @@
|
|
||||||
if (expired)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
- }
|
|
||||||
+ }
|
|
||||||
else
|
|
||||||
- {
|
|
||||||
- fd_set tmp_set;
|
|
||||||
+ {
|
|
||||||
|
|
||||||
if (*checkForInput[0] == *checkForInput[1]) {
|
|
||||||
if (timers)
|
|
||||||
@@ -317,6 +317,12 @@
|
|
||||||
QueueWorkProc(EstablishNewConnections, NULL,
|
|
||||||
(pointer)&LastSelectMask);
|
|
||||||
|
|
||||||
+#ifdef DPMSExtension
|
|
||||||
+ XFD_ANDSET(&tmp_set, &devicesReadable, &EnabledDevices);
|
|
||||||
+ if (XFD_ANYSET (&tmp_set) && (DPMSPowerLevel != DPMSModeOn))
|
|
||||||
+ DPMSSet(serverClient, DPMSModeOn);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
if (XFD_ANYSET (&devicesReadable) || XFD_ANYSET (&clientsReadable))
|
|
||||||
break;
|
|
||||||
/* check here for DDXes that queue events during Block/Wakeup */
|
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
Index: fb/fbblt.c
|
|
||||||
================================================================================
|
|
||||||
--- fb/fbblt.c
|
|
||||||
+++ fb/fbblt.c
|
|
||||||
@@ -76,6 +76,11 @@
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+/*
|
|
||||||
+ * Disable optimization (introduced by ajax) due to a general vesa
|
|
||||||
+ * driver crash later in memcpy
|
|
||||||
+*/
|
|
||||||
+#if 0
|
|
||||||
if (alu == GXcopy && pm == FB_ALLONES && !reverse &&
|
|
||||||
!(srcX & 7) && !(dstX & 7) && !(width & 7)) {
|
|
||||||
int i;
|
|
||||||
@@ -97,6 +102,7 @@
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
FbInitializeMergeRop(alu, pm);
|
|
||||||
destInvarient = FbDestInvarientMergeRop();
|
|
11
fpic.diff
11
fpic.diff
@ -1,11 +0,0 @@
|
|||||||
--- hw/xfree86/parser/Makefile.am.orig 2010-06-06 03:16:52.000000000 +0200
|
|
||||||
+++ hw/xfree86/parser/Makefile.am 2010-08-23 14:05:50.000000000 +0200
|
|
||||||
@@ -34,7 +34,7 @@
|
|
||||||
$(INTERNAL_SOURCES)
|
|
||||||
libxf86config_a_CFLAGS = $(AM_CFLAGS)
|
|
||||||
|
|
||||||
-AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) \
|
|
||||||
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS) -fPIC \
|
|
||||||
-DSYSCONFDIR=\"$(sysconfdir)\" \
|
|
||||||
-DDATADIR=\"$(datadir)\"
|
|
||||||
|
|
18
libdrm.diff
18
libdrm.diff
@ -1,18 +0,0 @@
|
|||||||
Index: hw/xfree86/common/xf86Helper.c
|
|
||||||
================================================================================
|
|
||||||
--- hw/xfree86/common/xf86Helper.c
|
|
||||||
+++ hw/xfree86/common/xf86Helper.c
|
|
||||||
@@ -2183,6 +2183,13 @@
|
|
||||||
&errmaj, &errmin);
|
|
||||||
if (!ret)
|
|
||||||
LoaderErrorMsg(pScrn->name, name, errmaj, errmin);
|
|
||||||
+
|
|
||||||
+ /* "drm" module has been merged into "dri" module, but some drivers
|
|
||||||
+ are still trying to load it explictely and fail if it doesn't exist :-( */
|
|
||||||
+ if (!ret && !strcmp(name,"drm")) {
|
|
||||||
+ ret = (pointer) -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
|||||||
--- configure.ac
|
|
||||||
+++ configure.ac
|
|
||||||
@@ -505,11 +505,15 @@
|
|
||||||
XORG_FONTSUBDIR(FONTTYPE1DIR, fonttype1dir, Type1)
|
|
||||||
XORG_FONTSUBDIR(FONT75DPIDIR, font75dpidir, 75dpi)
|
|
||||||
XORG_FONTSUBDIR(FONT100DPIDIR, font100dpidir, 100dpi)
|
|
||||||
+XORG_FONTSUBDIR(FONTURWDIR, fonturwdir, URW)
|
|
||||||
+XORG_FONTSUBDIR(FONTCYRILLICDIR, fontcyrillicdir, cyrillic)
|
|
||||||
+XORG_FONTSUBDIR(FONTSGIDIR, fontsgidir, misc/sgi)
|
|
||||||
+XORG_FONTSUBDIR(FONTTRUETYPEDIR, fonttruetypedir, truetype)
|
|
||||||
|
|
||||||
dnl Uses --default-font-path if set, otherwise checks for /etc/X11/fontpath.d,
|
|
||||||
dnl otherwise uses standard subdirectories of FONTROOTDIR. When cross
|
|
||||||
dnl compiling, assume default font path uses standard FONTROOTDIR directories.
|
|
||||||
-DEFAULT_FONT_PATH="${FONTMISCDIR}:unscaled,${FONTTTFDIR}/,${FONTOTFDIR}/,${FONTTYPE1DIR}/,${FONT100DPIDIR}/,${FONT75DPIDIR}/"
|
|
||||||
+DEFAULT_FONT_PATH="${FONTMISCDIR}:unscaled,${FONTTTFDIR}/,${FONTOTFDIR}/,${FONTTYPE1DIR}/,${FONT100DPIDIR}:unscaled,${FONT75DPIDIR}:unscaled,${FONTURWDIR}/,${FONTCYRILLICDIR}:unscaled,${FONTSGIDIR}:unscaled,${FONTTRUETYPEDIR}/"
|
|
||||||
if test "$cross_compiling" != yes; then
|
|
||||||
AC_CHECK_FILE([${sysconfdir}/X11/fontpath.d],
|
|
||||||
[DEFAULT_FONT_PATH='catalogue:${sysconfdir}/X11/fontpath.d'],
|
|
@ -1,19 +0,0 @@
|
|||||||
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
|
|
||||||
index 69f687b..5aae114 100644
|
|
||||||
--- a/hw/xfree86/modes/xf86Crtc.c
|
|
||||||
+++ b/hw/xfree86/modes/xf86Crtc.c
|
|
||||||
@@ -2365,13 +2365,7 @@ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
|
|
||||||
|
|
||||||
xf86CollectEnabledOutputs(scrn, config, enabled);
|
|
||||||
|
|
||||||
- if (xf86TargetUserpref(scrn, config, modes, enabled, width, height))
|
|
||||||
- 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))
|
|
||||||
+ if (xf86TargetFallback(scrn, config, modes, enabled, width, height))
|
|
||||||
xf86DrvMsg(i, X_INFO, "Using sloppy heuristic for initial modes\n");
|
|
||||||
else
|
|
||||||
xf86DrvMsg(i, X_WARNING, "Unable to find initial modes\n");
|
|
15
mouse.diff
15
mouse.diff
@ -1,15 +0,0 @@
|
|||||||
Index: hw/xfree86/common/xf86Configure.c
|
|
||||||
================================================================================
|
|
||||||
--- hw/xfree86/common/xf86Configure.c
|
|
||||||
+++ hw/xfree86/common/xf86Configure.c
|
|
||||||
@@ -64,8 +64,8 @@
|
|
||||||
static char *DFLT_MOUSE_DEV = "/dev/sysmouse";
|
|
||||||
static char *DFLT_MOUSE_PROTO = "auto";
|
|
||||||
#elif defined(linux)
|
|
||||||
-static char DFLT_MOUSE_DEV[] = "/dev/input/mice";
|
|
||||||
-static char DFLT_MOUSE_PROTO[] = "auto";
|
|
||||||
+static char* DFLT_MOUSE_DEV = "/dev/input/mice";
|
|
||||||
+static char* DFLT_MOUSE_PROTO = "auto";
|
|
||||||
#else
|
|
||||||
static char *DFLT_MOUSE_DEV = "/dev/mouse";
|
|
||||||
static char *DFLT_MOUSE_PROTO = "auto";
|
|
@ -1,52 +0,0 @@
|
|||||||
Index: hw/xfree86/common/xf86Configure.c
|
|
||||||
================================================================================
|
|
||||||
--- hw/xfree86/common/xf86Configure.c
|
|
||||||
+++ hw/xfree86/common/xf86Configure.c
|
|
||||||
@@ -250,23 +250,35 @@
|
|
||||||
|
|
||||||
/* Crude mechanism to auto-detect mouse (os dependent) */
|
|
||||||
{
|
|
||||||
- int fd;
|
|
||||||
+ int fd = -1;
|
|
||||||
#ifdef WSCONS_SUPPORT
|
|
||||||
- fd = open("/dev/wsmouse", 0);
|
|
||||||
- if (fd >= 0) {
|
|
||||||
- DFLT_MOUSE_DEV = "/dev/wsmouse";
|
|
||||||
- DFLT_MOUSE_PROTO = "wsmouse";
|
|
||||||
- close(fd);
|
|
||||||
- } else {
|
|
||||||
- ErrorF("cannot open /dev/wsmouse\n");
|
|
||||||
+ if (fd == -1) {
|
|
||||||
+ fd = open("/dev/wsmouse", 0);
|
|
||||||
+ if (fd != -1) {
|
|
||||||
+ DFLT_MOUSE_DEV = "/dev/wsmouse";
|
|
||||||
+ DFLT_MOUSE_PROTO = "wsmouse";
|
|
||||||
+ close(fd);
|
|
||||||
+ } else {
|
|
||||||
+ ErrorF("cannot open /dev/wsmouse\n");
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __SCO__
|
|
||||||
- fd = open(DFLT_MOUSE_DEV, 0);
|
|
||||||
- if (fd != -1) {
|
|
||||||
- foundMouse = TRUE;
|
|
||||||
- close(fd);
|
|
||||||
+ if (fd == -1) {
|
|
||||||
+ fd = open(DFLT_MOUSE_DEV, 0);
|
|
||||||
+# ifdef linux
|
|
||||||
+ if (fd == -1) {
|
|
||||||
+ char *name = "/dev/input/mice";
|
|
||||||
+ fd = open(name, 0);
|
|
||||||
+ if (fd != -1)
|
|
||||||
+ DFLT_MOUSE_DEV = name;
|
|
||||||
+ }
|
|
||||||
+# endif
|
|
||||||
+ if (fd != -1) {
|
|
||||||
+ foundMouse = TRUE;
|
|
||||||
+ close(fd);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
foundMouse = TRUE;
|
|
@ -1,13 +0,0 @@
|
|||||||
Index: os/connection.c
|
|
||||||
================================================================================
|
|
||||||
--- os/connection.c
|
|
||||||
+++ os/connection.c
|
|
||||||
@@ -999,7 +999,7 @@
|
|
||||||
do {
|
|
||||||
r = Select (curclient + 1, &tmask, NULL, NULL, ¬ime);
|
|
||||||
} while (r < 0 && (errno == EINTR || errno == EAGAIN));
|
|
||||||
- if (r < 0)
|
|
||||||
+ if (r < 0 && (errno == EBADF))
|
|
||||||
if (ConnectionTranslation[curclient] > 0)
|
|
||||||
CloseDownClient(clients[ConnectionTranslation[curclient]]);
|
|
||||||
mask &= ~((fd_mask)1 << curoff);
|
|
121
p_xorg_acpi.diff
121
p_xorg_acpi.diff
@ -1,121 +0,0 @@
|
|||||||
Index: hw/xfree86/os-support/linux/lnx_acpi.c
|
|
||||||
================================================================================
|
|
||||||
--- hw/xfree86/os-support/linux/lnx_acpi.c
|
|
||||||
+++ hw/xfree86/os-support/linux/lnx_acpi.c
|
|
||||||
@@ -32,8 +32,10 @@
|
|
||||||
#define ACPI_VIDEO_HEAD_INVALID (~0u - 1)
|
|
||||||
#define ACPI_VIDEO_HEAD_END (~0u)
|
|
||||||
|
|
||||||
+static PMClose doLnxACPIOpen(void);
|
|
||||||
static void lnxCloseACPI(void);
|
|
||||||
static pointer ACPIihPtr = NULL;
|
|
||||||
+static OsTimerPtr acpiTimer = NULL;
|
|
||||||
PMClose lnxACPIOpen(void);
|
|
||||||
|
|
||||||
/* in milliseconds */
|
|
||||||
@@ -52,6 +54,22 @@
|
|
||||||
|
|
||||||
#define LINE_LENGTH 80
|
|
||||||
|
|
||||||
+static CARD32
|
|
||||||
+lnxACPICheckTimer(OsTimerPtr timer, CARD32 now, pointer arg)
|
|
||||||
+{
|
|
||||||
+#if DEBUG
|
|
||||||
+ ErrorF("ACPI: trying to reopen\n");
|
|
||||||
+#endif
|
|
||||||
+ if (doLnxACPIOpen()) {
|
|
||||||
+#if DEBUG
|
|
||||||
+ ErrorF("ACPI: successfully reopened\n");
|
|
||||||
+#endif
|
|
||||||
+ acpiTimer = NULL;
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+ return 5000;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int
|
|
||||||
lnxACPIGetEventFromOs(int fd, pmEvent *events, int num)
|
|
||||||
{
|
|
||||||
@@ -127,15 +145,14 @@
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-PMClose
|
|
||||||
-lnxACPIOpen(void)
|
|
||||||
+static PMClose
|
|
||||||
+doLnxACPIOpen(void)
|
|
||||||
{
|
|
||||||
int fd;
|
|
||||||
struct sockaddr_un addr;
|
|
||||||
int r = -1;
|
|
||||||
static int warned = 0;
|
|
||||||
|
|
||||||
- DebugF("ACPI: OSPMOpen called\n");
|
|
||||||
if (ACPIihPtr || !xf86Info.pmFlag)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
@@ -164,6 +181,27 @@
|
|
||||||
return lnxCloseACPI;
|
|
||||||
}
|
|
||||||
|
|
||||||
+PMClose
|
|
||||||
+lnxACPIPoll(void)
|
|
||||||
+{
|
|
||||||
+ TimerSet(NULL, 0, 5000, lnxACPICheckTimer, NULL);
|
|
||||||
+ return lnxCloseACPI;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+PMClose
|
|
||||||
+lnxACPIOpen(void)
|
|
||||||
+{
|
|
||||||
+ PMClose ret;
|
|
||||||
+#ifdef DEBUG
|
|
||||||
+ ErrorF("ACPI: OSPMOpen called\n");
|
|
||||||
+#endif
|
|
||||||
+ if (!(ret = doLnxACPIOpen()))
|
|
||||||
+ xf86MsgVerb(X_WARNING,3,"Open ACPI failed (%s) (%s)\n", ACPI_SOCKET,
|
|
||||||
+ strerror(errno));
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static void
|
|
||||||
lnxCloseACPI(void)
|
|
||||||
{
|
|
||||||
@@ -175,5 +213,11 @@
|
|
||||||
shutdown(fd, 2);
|
|
||||||
close(fd);
|
|
||||||
ACPIihPtr = NULL;
|
|
||||||
+ xf86PMGetEventFromOs = NULL;
|
|
||||||
+ xf86PMConfirmEventToOs = NULL;
|
|
||||||
+ if (acpiTimer) {
|
|
||||||
+ TimerCancel(acpiTimer);
|
|
||||||
+ acpiTimer = NULL;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--- hw/xfree86/os-support/linux/lnx_apm.c
|
|
||||||
+++ hw/xfree86/os-support/linux/lnx_apm.c
|
|
||||||
@@ -12,6 +12,7 @@
|
|
||||||
|
|
||||||
#ifdef HAVE_ACPI
|
|
||||||
extern PMClose lnxACPIOpen(void);
|
|
||||||
+extern PMClose lnxACPIPoll(void);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_APM
|
|
||||||
@@ -149,6 +150,14 @@
|
|
||||||
ret = lnxAPMOpen();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#ifdef HAVE_ACPI
|
|
||||||
+ /* if we can neither open ACPI nor APM poll for an ACPI service to
|
|
||||||
+ become available */
|
|
||||||
+
|
|
||||||
+ if (!ret && !xf86acpiDisableFlag)
|
|
||||||
+ ret = lnxACPIPoll();
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
13
pixman.diff
13
pixman.diff
@ -1,13 +0,0 @@
|
|||||||
Index: include/miscstruct.h
|
|
||||||
================================================================================
|
|
||||||
--- include/miscstruct.h
|
|
||||||
+++ include/miscstruct.h
|
|
||||||
@@ -50,7 +50,7 @@
|
|
||||||
|
|
||||||
#include "misc.h"
|
|
||||||
#include <X11/Xprotostr.h>
|
|
||||||
-#include <pixman.h>
|
|
||||||
+#include <pixman-1/pixman.h>
|
|
||||||
|
|
||||||
typedef xPoint DDXPointRec;
|
|
||||||
|
|
290
u_OS-acpi-Reconnect-to-acpid-when-it-gets-restarted.patch
Normal file
290
u_OS-acpi-Reconnect-to-acpid-when-it-gets-restarted.patch
Normal file
@ -0,0 +1,290 @@
|
|||||||
|
From 142ba992065dd9c37a9d06dc6e96cfc9adfb6be0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Egbert Eich <eich@suse.de>
|
||||||
|
Date: Tue, 5 Jul 2011 06:56:43 +0200
|
||||||
|
Subject: [PATCH] OS/acpi: Reconnect to acpid when it gets restarted.
|
||||||
|
Patch-mainline: To be upstreamed
|
||||||
|
|
||||||
|
On Linux the Xserver connects to the ACPI daemon to
|
||||||
|
receive power management events. If this daemon isn't
|
||||||
|
started when the server starts or goes down the connection
|
||||||
|
is lost.
|
||||||
|
When this happens we add a timer which periodically
|
||||||
|
tries to reconnect.
|
||||||
|
|
||||||
|
Signed-off-by: Egbert Eich <eich@suse.de>
|
||||||
|
---
|
||||||
|
hw/xfree86/os-support/linux/lnx_acpi.c | 68 ++++++++++++++++++++++++++-----
|
||||||
|
hw/xfree86/os-support/linux/lnx_apm.c | 9 ++++
|
||||||
|
2 files changed, 66 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/hw/xfree86/os-support/linux/lnx_acpi.c b/hw/xfree86/os-support/linux/lnx_acpi.c
|
||||||
|
index 5fad194..8dd6881 100644
|
||||||
|
--- a/hw/xfree86/os-support/linux/lnx_acpi.c
|
||||||
|
+++ b/hw/xfree86/os-support/linux/lnx_acpi.c
|
||||||
|
@@ -32,9 +32,12 @@
|
||||||
|
#define ACPI_VIDEO_HEAD_INVALID (~0u - 1)
|
||||||
|
#define ACPI_VIDEO_HEAD_END (~0u)
|
||||||
|
|
||||||
|
+static PMClose doLnxACPIOpen(void);
|
||||||
|
static void lnxCloseACPI(void);
|
||||||
|
static pointer ACPIihPtr = NULL;
|
||||||
|
+static OsTimerPtr acpiTimer = NULL;
|
||||||
|
PMClose lnxACPIOpen(void);
|
||||||
|
+PMClose lnxACPIPoll(void);
|
||||||
|
|
||||||
|
/* in milliseconds */
|
||||||
|
#define ACPI_REOPEN_DELAY 1000
|
||||||
|
@@ -52,6 +55,22 @@ lnxACPIReopen(OsTimerPtr timer, CARD32 time, pointer arg)
|
||||||
|
|
||||||
|
#define LINE_LENGTH 80
|
||||||
|
|
||||||
|
+static CARD32
|
||||||
|
+lnxACPICheckTimer(OsTimerPtr timer, CARD32 now, pointer arg)
|
||||||
|
+{
|
||||||
|
+#if DEBUG
|
||||||
|
+ ErrorF("ACPI: trying to reopen\n");
|
||||||
|
+#endif
|
||||||
|
+ if (doLnxACPIOpen()) {
|
||||||
|
+#if DEBUG
|
||||||
|
+ ErrorF("ACPI: successfully reopened\n");
|
||||||
|
+#endif
|
||||||
|
+ acpiTimer = NULL;
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+ return 10000;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int
|
||||||
|
lnxACPIGetEventFromOs(int fd, pmEvent *events, int num)
|
||||||
|
{
|
||||||
|
@@ -127,33 +146,35 @@ lnxACPIConfirmEventToOs(int fd, pmEvent event)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-PMClose
|
||||||
|
-lnxACPIOpen(void)
|
||||||
|
+static PMClose
|
||||||
|
+doLnxACPIOpen(void)
|
||||||
|
{
|
||||||
|
- int fd;
|
||||||
|
+ int fd = -1;
|
||||||
|
struct sockaddr_un addr;
|
||||||
|
int r = -1;
|
||||||
|
static int warned = 0;
|
||||||
|
|
||||||
|
- DebugF("ACPI: OSPMOpen called\n");
|
||||||
|
if (ACPIihPtr || !xf86Info.pmFlag)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
DebugF("ACPI: Opening device\n");
|
||||||
|
- if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) > -1) {
|
||||||
|
+ fd = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||||
|
+ if (fd > -1) {
|
||||||
|
memset(&addr, 0, sizeof(addr));
|
||||||
|
addr.sun_family = AF_UNIX;
|
||||||
|
strcpy(addr.sun_path, ACPI_SOCKET);
|
||||||
|
- if ((r = connect(fd, (struct sockaddr*)&addr, sizeof(addr))) == -1) {
|
||||||
|
- if (!warned)
|
||||||
|
+ r = connect(fd, (struct sockaddr*)&addr, sizeof(addr));
|
||||||
|
+ if (r == -1) {
|
||||||
|
+ if (errno != warned)
|
||||||
|
xf86MsgVerb(X_WARNING,3,"Open ACPI failed (%s) (%s)\n",
|
||||||
|
ACPI_SOCKET, strerror(errno));
|
||||||
|
- warned = 1;
|
||||||
|
- shutdown(fd, 2);
|
||||||
|
+ warned = errno;
|
||||||
|
+ shutdown(fd, SHUT_RDWR);
|
||||||
|
close(fd);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
- }
|
||||||
|
+ } else
|
||||||
|
+ return NULL;
|
||||||
|
|
||||||
|
xf86PMGetEventFromOs = lnxACPIGetEventFromOs;
|
||||||
|
xf86PMConfirmEventToOs = lnxACPIConfirmEventToOs;
|
||||||
|
@@ -164,6 +185,25 @@ lnxACPIOpen(void)
|
||||||
|
return lnxCloseACPI;
|
||||||
|
}
|
||||||
|
|
||||||
|
+PMClose
|
||||||
|
+lnxACPIPoll(void)
|
||||||
|
+{
|
||||||
|
+ TimerSet(NULL, 0, 10000, lnxACPICheckTimer, NULL);
|
||||||
|
+ return lnxCloseACPI;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+PMClose
|
||||||
|
+lnxACPIOpen(void)
|
||||||
|
+{
|
||||||
|
+ PMClose ret;
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ ErrorF("ACPI: OSPMOpen called\n");
|
||||||
|
+#endif
|
||||||
|
+ ret = doLnxACPIOpen();
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static void
|
||||||
|
lnxCloseACPI(void)
|
||||||
|
{
|
||||||
|
@@ -172,8 +212,14 @@ lnxCloseACPI(void)
|
||||||
|
DebugF("ACPI: Closing device\n");
|
||||||
|
if (ACPIihPtr) {
|
||||||
|
fd = xf86RemoveGeneralHandler(ACPIihPtr);
|
||||||
|
- shutdown(fd, 2);
|
||||||
|
+ shutdown(fd, SHUT_RDWR);
|
||||||
|
close(fd);
|
||||||
|
ACPIihPtr = NULL;
|
||||||
|
+ xf86PMGetEventFromOs = NULL;
|
||||||
|
+ xf86PMConfirmEventToOs = NULL;
|
||||||
|
+ if (acpiTimer) {
|
||||||
|
+ TimerCancel(acpiTimer);
|
||||||
|
+ acpiTimer = NULL;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/hw/xfree86/os-support/linux/lnx_apm.c b/hw/xfree86/os-support/linux/lnx_apm.c
|
||||||
|
index 54c6989..c8b254f 100644
|
||||||
|
--- a/hw/xfree86/os-support/linux/lnx_apm.c
|
||||||
|
+++ b/hw/xfree86/os-support/linux/lnx_apm.c
|
||||||
|
@@ -12,6 +12,7 @@
|
||||||
|
|
||||||
|
#ifdef HAVE_ACPI
|
||||||
|
extern PMClose lnxACPIOpen(void);
|
||||||
|
+extern PMClose lnxACPIPoll(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_APM
|
||||||
|
@@ -149,6 +150,14 @@ xf86OSPMOpen(void)
|
||||||
|
ret = lnxAPMOpen();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifdef HAVE_ACPI
|
||||||
|
+ /* if we can neither open ACPI nor APM poll for an ACPI service to
|
||||||
|
+ become available */
|
||||||
|
+
|
||||||
|
+ if (!ret && !xf86acpiDisableFlag)
|
||||||
|
+ ret = lnxACPIPoll();
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
1.6.0.2
|
||||||
|
|
||||||
|
From 3f35d15f7c7eb202de36e2d1040f27ef7b38c1d2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Egbert Eich <eich@freedesktop.org>
|
||||||
|
Date: Thu, 7 Jul 2011 09:01:35 +0200
|
||||||
|
Subject: [PATCH] OS/ACPI: Make socket to read from acpid non-blocking.
|
||||||
|
|
||||||
|
If acpid for some reason does not service a connect() this
|
||||||
|
function may hang forever stalling the Xserver. To prevent
|
||||||
|
this make the socket non-blocking. If connect returns
|
||||||
|
EINPROGRESS use select() and getsockopt() to check for
|
||||||
|
completion of the connect request.
|
||||||
|
select() gets a different timeout depending if it is called
|
||||||
|
during startup or to do a reconnect.
|
||||||
|
|
||||||
|
Signed-off-by: Egbert Eich <eich@freedesktop.org>
|
||||||
|
---
|
||||||
|
hw/xfree86/os-support/linux/lnx_acpi.c | 34 +++++++++++++++++++++++++++----
|
||||||
|
1 files changed, 29 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/hw/xfree86/os-support/linux/lnx_acpi.c b/hw/xfree86/os-support/linux/lnx_acpi.c
|
||||||
|
index 8dd6881..f0e6eb4 100644
|
||||||
|
--- a/hw/xfree86/os-support/linux/lnx_acpi.c
|
||||||
|
+++ b/hw/xfree86/os-support/linux/lnx_acpi.c
|
||||||
|
@@ -32,7 +32,7 @@
|
||||||
|
#define ACPI_VIDEO_HEAD_INVALID (~0u - 1)
|
||||||
|
#define ACPI_VIDEO_HEAD_END (~0u)
|
||||||
|
|
||||||
|
-static PMClose doLnxACPIOpen(void);
|
||||||
|
+static PMClose doLnxACPIOpen(struct timeval *);
|
||||||
|
static void lnxCloseACPI(void);
|
||||||
|
static pointer ACPIihPtr = NULL;
|
||||||
|
static OsTimerPtr acpiTimer = NULL;
|
||||||
|
@@ -58,10 +58,11 @@ lnxACPIReopen(OsTimerPtr timer, CARD32 time, pointer arg)
|
||||||
|
static CARD32
|
||||||
|
lnxACPICheckTimer(OsTimerPtr timer, CARD32 now, pointer arg)
|
||||||
|
{
|
||||||
|
+ struct timeval timeval = { 0, 0 };
|
||||||
|
#if DEBUG
|
||||||
|
ErrorF("ACPI: trying to reopen\n");
|
||||||
|
#endif
|
||||||
|
- if (doLnxACPIOpen()) {
|
||||||
|
+ if (doLnxACPIOpen(&timeval)) {
|
||||||
|
#if DEBUG
|
||||||
|
ErrorF("ACPI: successfully reopened\n");
|
||||||
|
#endif
|
||||||
|
@@ -147,7 +148,7 @@ lnxACPIConfirmEventToOs(int fd, pmEvent event)
|
||||||
|
}
|
||||||
|
|
||||||
|
static PMClose
|
||||||
|
-doLnxACPIOpen(void)
|
||||||
|
+doLnxACPIOpen(struct timeval *tv_p)
|
||||||
|
{
|
||||||
|
int fd = -1;
|
||||||
|
struct sockaddr_un addr;
|
||||||
|
@@ -158,13 +159,34 @@ doLnxACPIOpen(void)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
DebugF("ACPI: Opening device\n");
|
||||||
|
- fd = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||||
|
+ fd = socket(AF_UNIX, SOCK_STREAM | SOCK_NONBLOCK, 0);
|
||||||
|
if (fd > -1) {
|
||||||
|
memset(&addr, 0, sizeof(addr));
|
||||||
|
addr.sun_family = AF_UNIX;
|
||||||
|
strcpy(addr.sun_path, ACPI_SOCKET);
|
||||||
|
r = connect(fd, (struct sockaddr*)&addr, sizeof(addr));
|
||||||
|
if (r == -1) {
|
||||||
|
+ int sock_errno = errno;
|
||||||
|
+ if (sock_errno == EINPROGRESS) {
|
||||||
|
+ fd_set fds;
|
||||||
|
+ int result;
|
||||||
|
+ do {
|
||||||
|
+ FD_ZERO(&fds);
|
||||||
|
+ FD_SET(fd, &fds);
|
||||||
|
+ result = select(fd + 1, NULL, &fds, NULL, tv_p);
|
||||||
|
+ } while (result < 0 && errno == EINTR);
|
||||||
|
+ if (result < 0)
|
||||||
|
+ sock_errno = errno;
|
||||||
|
+ else if (result > 0) {
|
||||||
|
+ int sock_errno;
|
||||||
|
+ socklen_t size = sizeof(sock_errno);
|
||||||
|
+ if (0 > getsockopt(fd, SOL_SOCKET, SO_ERROR, &sock_errno,
|
||||||
|
+ &size))
|
||||||
|
+ sock_errno = errno;
|
||||||
|
+ if (!sock_errno)
|
||||||
|
+ goto success;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
if (errno != warned)
|
||||||
|
xf86MsgVerb(X_WARNING,3,"Open ACPI failed (%s) (%s)\n",
|
||||||
|
ACPI_SOCKET, strerror(errno));
|
||||||
|
@@ -176,6 +198,7 @@ doLnxACPIOpen(void)
|
||||||
|
} else
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
+ success:
|
||||||
|
xf86PMGetEventFromOs = lnxACPIGetEventFromOs;
|
||||||
|
xf86PMConfirmEventToOs = lnxACPIConfirmEventToOs;
|
||||||
|
ACPIihPtr = xf86AddGeneralHandler(fd,xf86HandlePMEvents,NULL);
|
||||||
|
@@ -196,10 +219,11 @@ PMClose
|
||||||
|
lnxACPIOpen(void)
|
||||||
|
{
|
||||||
|
PMClose ret;
|
||||||
|
+ struct timeval timeval = { 0, 30000 };
|
||||||
|
#ifdef DEBUG
|
||||||
|
ErrorF("ACPI: OSPMOpen called\n");
|
||||||
|
#endif
|
||||||
|
- ret = doLnxACPIOpen();
|
||||||
|
+ ret = doLnxACPIOpen(&timeval);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
1.7.3.4
|
||||||
|
|
@ -1,56 +0,0 @@
|
|||||||
From ee0e658bb6cb0d1290072090f1de90ff44145365 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Dan Nicholson <dbn.lists@gmail.com>
|
|
||||||
Date: Thu, 16 Dec 2010 06:01:06 -0800
|
|
||||||
Subject: [PATCH] xfree86: Use last Screen section found to prefer xorg.conf
|
|
||||||
|
|
||||||
Allowing multiple .conf files with xorg.conf.d works well for InputClass
|
|
||||||
where any section in xorg.conf would override settings from previous
|
|
||||||
.conf files typically installed by the distro. This does not work well
|
|
||||||
with Screen sections where the first section found has been used when
|
|
||||||
the Layout doesn't specify a Screen. Instead, use the last Screen
|
|
||||||
section found to give preference to xorg.conf and match the InputScreen
|
|
||||||
semantics.
|
|
||||||
|
|
||||||
Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
|
|
||||||
---
|
|
||||||
hw/xfree86/common/xf86Config.c | 10 ++++++++--
|
|
||||||
1 files changed, 8 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
|
|
||||||
index 5800700..b2fc8e3 100644
|
|
||||||
--- a/hw/xfree86/common/xf86Config.c
|
|
||||||
+++ b/hw/xfree86/common/xf86Config.c
|
|
||||||
@@ -1678,7 +1678,7 @@ configLayout(serverLayoutPtr servlayoutp, XF86ConfLayoutPtr conf_layout,
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
- * No layout section, so find the first Screen section and set that up as
|
|
||||||
+ * No layout section, so find the last Screen section and set that up as
|
|
||||||
* the only active screen.
|
|
||||||
*/
|
|
||||||
static Bool
|
|
||||||
@@ -1697,7 +1697,7 @@ configImpliedLayout(serverLayoutPtr servlayoutp, XF86ConfScreenPtr conf_screen,
|
|
||||||
/*
|
|
||||||
* which screen section is the active one?
|
|
||||||
*
|
|
||||||
- * If there is a -screen option, use that one, otherwise use the first
|
|
||||||
+ * If there is a -screen option, use that one, otherwise use the last
|
|
||||||
* one.
|
|
||||||
*/
|
|
||||||
|
|
||||||
@@ -1710,6 +1710,12 @@ configImpliedLayout(serverLayoutPtr servlayoutp, XF86ConfScreenPtr conf_screen,
|
|
||||||
}
|
|
||||||
conf_screen = s;
|
|
||||||
from = X_CMDLINE;
|
|
||||||
+ } else if (conf_screen) {
|
|
||||||
+ /* Use the last Screen in the list */
|
|
||||||
+ s = conf_screen;
|
|
||||||
+ while (s->list.next)
|
|
||||||
+ s = s->list.next;
|
|
||||||
+ conf_screen = s;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We have exactly one screen */
|
|
||||||
--
|
|
||||||
1.7.2.3
|
|
||||||
|
|
21
xephyr.diff
21
xephyr.diff
@ -1,21 +0,0 @@
|
|||||||
Index: hw/kdrive/Makefile.am
|
|
||||||
================================================================================
|
|
||||||
--- hw/kdrive/Makefile.am
|
|
||||||
+++ hw/kdrive/Makefile.am
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
if BUILD_KDRIVEFBDEVLIB
|
|
||||||
-FBDEV_SUBDIRS = fbdev
|
|
||||||
+FBDEV_SUBDIRS =
|
|
||||||
endif
|
|
||||||
|
|
||||||
if XFAKESERVER
|
|
||||||
@@ -16,8 +16,7 @@
|
|
||||||
|
|
||||||
SERVER_SUBDIRS = \
|
|
||||||
$(FBDEV_SUBDIRS) \
|
|
||||||
- $(XEPHYR_SUBDIRS) \
|
|
||||||
- $(XFAKE_SUBDIRS)
|
|
||||||
+ $(XEPHYR_SUBDIRS)
|
|
||||||
|
|
||||||
SUBDIRS = \
|
|
||||||
src \
|
|
@ -1,29 +0,0 @@
|
|||||||
--- man/Makefile.am.orig 2010-09-14 01:25:46.000000000 +0200
|
|
||||||
+++ man/Makefile.am 2010-11-12 13:28:31.000000000 +0100
|
|
||||||
@@ -23,12 +23,8 @@
|
|
||||||
miscmandir = $(MISC_MAN_DIR)
|
|
||||||
|
|
||||||
miscman_PRE = \
|
|
||||||
- Consortium.man \
|
|
||||||
Xsecurity.man \
|
|
||||||
- Standards.man \
|
|
||||||
- X.man \
|
|
||||||
- XOrgFoundation.man \
|
|
||||||
- XProjectTeam.man
|
|
||||||
+ X.man
|
|
||||||
|
|
||||||
miscman_DATA = $(miscman_PRE:man=@MISC_MAN_SUFFIX@)
|
|
||||||
|
|
||||||
--- Makefile.am.orig 2010-11-12 13:45:19.000000000 +0100
|
|
||||||
+++ Makefile.am 2010-11-12 13:45:32.000000000 +0100
|
|
||||||
@@ -20,9 +20,7 @@
|
|
||||||
#
|
|
||||||
# Process this file with autoconf to create configure.
|
|
||||||
|
|
||||||
-SUBDIRS = general man specs
|
|
||||||
-
|
|
||||||
-dist_doc_DATA = MAINTAINERS
|
|
||||||
+SUBDIRS = man
|
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = ChangeLog INSTALL
|
|
||||||
EXTRA_DIST = \
|
|
@ -1,11 +0,0 @@
|
|||||||
--- config/Makefile.am.orig 2010-06-11 04:14:57.000000000 +0200
|
|
||||||
+++ config/Makefile.am 2010-08-23 15:47:19.000000000 +0200
|
|
||||||
@@ -9,7 +9,7 @@
|
|
||||||
libconfig_la_SOURCES += udev.c
|
|
||||||
libconfig_la_LIBADD = $(UDEV_LIBS)
|
|
||||||
|
|
||||||
-xorgconfddir = $(datadir)/X11/$(XF86CONFIGDIR)
|
|
||||||
+xorgconfddir = $(sysconfdir)/X11/$(XF86CONFIGDIR)
|
|
||||||
xorgconfd_DATA = 10-evdev.conf
|
|
||||||
|
|
||||||
else
|
|
@ -1,52 +0,0 @@
|
|||||||
Index: xorg-server-1.6.3/hw/xfree86/os-support/linux/lnx_init.c
|
|
||||||
===================================================================
|
|
||||||
Index: xorg-server-1.6.3/hw/xfree86/os-support/linux/lnx_video.c
|
|
||||||
===================================================================
|
|
||||||
--- xorg-server-1.6.3.orig/hw/xfree86/os-support/linux/lnx_video.c
|
|
||||||
+++ xorg-server-1.6.3/hw/xfree86/os-support/linux/lnx_video.c
|
|
||||||
@@ -51,6 +51,7 @@
|
|
||||||
#define MAP_FAILED ((void *)-1)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+extern Bool NoHwAccess;
|
|
||||||
static Bool ExtendedEnabled = FALSE;
|
|
||||||
|
|
||||||
#ifdef __ia64__
|
|
||||||
@@ -509,6 +510,9 @@ xf86EnableIO(void)
|
|
||||||
int fd;
|
|
||||||
unsigned int ioBase_phys;
|
|
||||||
#endif
|
|
||||||
+ /* Fake it... */
|
|
||||||
+ if (NoHwAccess)
|
|
||||||
+ return TRUE;
|
|
||||||
|
|
||||||
if (ExtendedEnabled)
|
|
||||||
return TRUE;
|
|
||||||
--- xorg-server-1.9.0/hw/xfree86/os-support/linux/lnx_init.c.orig 2010-06-10 16:07:55.000000000 +0200
|
|
||||||
+++ xorg-server-1.9.0/hw/xfree86/os-support/linux/lnx_init.c 2010-08-23 15:38:45.000000000 +0200
|
|
||||||
@@ -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
|
|
||||||
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)
|
|
||||||
@@ -398,4 +404,5 @@ xf86UseMsg(void)
|
|
||||||
ErrorF("don't detach controlling tty (for debugging only)\n");
|
|
||||||
ErrorF("-novtswitch don't immediately switch to new VT\n");
|
|
||||||
ErrorF("-sharevts share VTs with another X server\n");
|
|
||||||
+ ErrorF("-nohwaccess don't access hardware ports directly\n");
|
|
||||||
}
|
|
@ -1,122 +0,0 @@
|
|||||||
--- hw/xfree86/parser/InputClass.c.orig 2010-08-13 07:53:48.000000000 +0200
|
|
||||||
+++ hw/xfree86/parser/InputClass.c 2010-08-23 15:55:16.000000000 +0200
|
|
||||||
@@ -65,6 +65,47 @@ xf86ConfigSymTabRec InputClassTab[] =
|
|
||||||
|
|
||||||
#define TOKEN_SEP "|"
|
|
||||||
|
|
||||||
+/*
|
|
||||||
+ * Tokenize a string into a NULL terminated array of strings. Always returns
|
|
||||||
+ * an allocated array unless an error occurs.
|
|
||||||
+ */
|
|
||||||
+char**
|
|
||||||
+m_xstrtokenize(const char *str, const char *separators)
|
|
||||||
+{
|
|
||||||
+ char **list, **nlist;
|
|
||||||
+ char *tok, *tmp;
|
|
||||||
+ unsigned num = 0, n;
|
|
||||||
+
|
|
||||||
+ if (!str)
|
|
||||||
+ return NULL;
|
|
||||||
+ list = calloc(1, sizeof(*list));
|
|
||||||
+ if (!list)
|
|
||||||
+ return NULL;
|
|
||||||
+ tmp = strdup(str);
|
|
||||||
+ if (!tmp)
|
|
||||||
+ goto error;
|
|
||||||
+ for (tok = strtok(tmp, separators); tok; tok = strtok(NULL, separators)) {
|
|
||||||
+ nlist = realloc(list, (num + 2) * sizeof(*list));
|
|
||||||
+ if (!nlist)
|
|
||||||
+ goto error;
|
|
||||||
+ list = nlist;
|
|
||||||
+ list[num] = strdup(tok);
|
|
||||||
+ if (!list[num])
|
|
||||||
+ goto error;
|
|
||||||
+ list[++num] = NULL;
|
|
||||||
+ }
|
|
||||||
+ free(tmp);
|
|
||||||
+ return list;
|
|
||||||
+
|
|
||||||
+error:
|
|
||||||
+ free(tmp);
|
|
||||||
+ for (n = 0; n < num; n++)
|
|
||||||
+ free(list[n]);
|
|
||||||
+ free(list);
|
|
||||||
+ return NULL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
static void
|
|
||||||
add_group_entry(struct list *head, char **values)
|
|
||||||
{
|
|
||||||
@@ -125,49 +166,49 @@ xf86parseInputClassSection(void)
|
|
||||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
|
||||||
Error(QUOTE_MSG, "MatchProduct");
|
|
||||||
add_group_entry(&ptr->match_product,
|
|
||||||
- xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
break;
|
|
||||||
case MATCH_VENDOR:
|
|
||||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
|
||||||
Error(QUOTE_MSG, "MatchVendor");
|
|
||||||
add_group_entry(&ptr->match_vendor,
|
|
||||||
- xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
break;
|
|
||||||
case MATCH_DEVICE_PATH:
|
|
||||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
|
||||||
Error(QUOTE_MSG, "MatchDevicePath");
|
|
||||||
add_group_entry(&ptr->match_device,
|
|
||||||
- xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
break;
|
|
||||||
case MATCH_OS:
|
|
||||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
|
||||||
Error(QUOTE_MSG, "MatchOS");
|
|
||||||
add_group_entry(&ptr->match_os,
|
|
||||||
- xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
break;
|
|
||||||
case MATCH_PNPID:
|
|
||||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
|
||||||
Error(QUOTE_MSG, "MatchPnPID");
|
|
||||||
add_group_entry(&ptr->match_pnpid,
|
|
||||||
- xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
break;
|
|
||||||
case MATCH_USBID:
|
|
||||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
|
||||||
Error(QUOTE_MSG, "MatchUSBID");
|
|
||||||
add_group_entry(&ptr->match_usbid,
|
|
||||||
- xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
break;
|
|
||||||
case MATCH_DRIVER:
|
|
||||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
|
||||||
Error(QUOTE_MSG, "MatchDriver");
|
|
||||||
add_group_entry(&ptr->match_driver,
|
|
||||||
- xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
break;
|
|
||||||
case MATCH_TAG:
|
|
||||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
|
||||||
Error(QUOTE_MSG, "MatchTag");
|
|
||||||
add_group_entry(&ptr->match_tag,
|
|
||||||
- xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
+ m_xstrtokenize(val.str, TOKEN_SEP));
|
|
||||||
break;
|
|
||||||
case MATCH_IS_KEYBOARD:
|
|
||||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
|
||||||
--- hw/xfree86/parser/Layout.c
|
|
||||||
+++ hw/xfree86/parser/Layout.c
|
|
||||||
@@ -449,7 +449,10 @@
|
|
||||||
/* add all AutoServerLayout devices to the server layout */
|
|
||||||
while (input)
|
|
||||||
{
|
|
||||||
- if (xf86CheckBoolOption(input->inp_option_lst, "AutoServerLayout", FALSE))
|
|
||||||
+ Bool asl_value = FALSE;
|
|
||||||
+ char *s = xf86findOptionValue(input->inp_option_lst ,"AutoServerLayout");
|
|
||||||
+ Bool asl_found = xf86getBoolValue(&asl_value, s);
|
|
||||||
+ if (asl_found == TRUE && asl_value == TRUE)
|
|
||||||
{
|
|
||||||
XF86ConfInputrefPtr iref = layout->lay_input_lst;
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
|||||||
Index: xorg-server-1.6.3.901/hw/xfree86/common/xf86AutoConfig.c
|
|
||||||
================================================================================
|
|
||||||
--- xorg-server-1.7.99/hw/xfree86/common/xf86AutoConfig.c
|
|
||||||
+++ xorg-server-1.7.99/hw/xfree86/common/xf86AutoConfig.c
|
|
||||||
@@ -535,7 +535,8 @@
|
|
||||||
#if !defined(__linux__) && defined(__sparc__)
|
|
||||||
matches[i++] = xnfstrdup("wsfb");
|
|
||||||
#else
|
|
||||||
- matches[i++] = xnfstrdup("vesa");
|
|
||||||
+ if (geteuid() == 0)
|
|
||||||
+ matches[i++] = xnfstrdup("vesa");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,3 +1,140 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jul 8 08:20:41 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- update:
|
||||||
|
* randr1_1-sig11.diff
|
||||||
|
removed accidentally forgotten debugging code.
|
||||||
|
* u_OS-acpi-Reconnect-to-acpid-when-it-gets-restarted.patch
|
||||||
|
made socket non-blocking. Idea taken from a pach for SLES11.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jul 7 16:02:13 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- don't look for 10-evdev.conf for anything older than 11.3
|
||||||
|
(this includes SLE-11).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jul 7 10:10:34 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove use-last-screen.patch:
|
||||||
|
This patch has been rejected upstream. We will try to resolve
|
||||||
|
this issue differently by not providing any screen, monitor or
|
||||||
|
device section.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jul 7 10:08:05 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove disable-fbblt-opt.diff:
|
||||||
|
We are unable to reproduce this issue any more.
|
||||||
|
So let's remove the workaround and start from scratch
|
||||||
|
when issue resurfaces and find a proper fix.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jul 6 09:04:30 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- fixed bug-197858_dpms.diff:
|
||||||
|
removed pieces that have been solved differently today.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jul 6 07:48:17 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove moblin-use_preferred_mode_for_all_outputs.diff:
|
||||||
|
remove moblin specific patches.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jul 5 13:54:21 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- rename edit_data_sanity_check.diff -> edid_data_sanity_check.diff
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jul 5 13:44:54 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove p_xkills_wrong_client.diff:
|
||||||
|
made obsolete by commit b7f3618f.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jul 5 12:45:46 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove xorg-server-1.8.0.diff:
|
||||||
|
issue is now resolved in spec file.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jul 5 05:11:47 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- fix zap_warning_fix.diff:
|
||||||
|
recover from noisy people.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jul 5 05:09:40 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove p_xorg_acpi.diff
|
||||||
|
add u_OS-acpi-Reconnect-to-acpid-when-it-gets-restarted.patch
|
||||||
|
removed redundant error message.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jul 4 17:01:40 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove mouse.diff:
|
||||||
|
Never understood what this patch was good for.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jul 4 16:58:46 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove p_bug96328.diff:
|
||||||
|
/dev/input/mice is the default mouse for X -configure
|
||||||
|
on Linux for a long time already.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jul 4 12:19:43 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove xephyr.diff:
|
||||||
|
solved by configure options in spec file.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jul 4 12:10:14 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove libdrm.diff:
|
||||||
|
not needed any more, drivers seem to be fixed.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jul 4 11:32:31 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove xorg-docs.diff:
|
||||||
|
solved in spec file.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jul 4 10:06:49 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove pixman.diff:
|
||||||
|
Doesn't seem to be needed any more.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jul 4 05:58:11 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove xorg-x11-nonroot-vesa.patch, org-server-nohwaccess.diff:
|
||||||
|
There are other things missing to make those patches useful.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jul 1 14:18:49 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove: xserver-1.6.1-nouveau.patch.
|
||||||
|
This patch was only cosmetic.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jul 1 13:41:18 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove: CVE-2010-2240-address_space_limit.patch
|
||||||
|
CVE-2010-2240-tree_depth_limit.patch
|
||||||
|
These security issues have been handled in the Linux kernel in a
|
||||||
|
much more general fashion.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jul 1 11:37:33 UTC 2011 - eich@suse.de
|
||||||
|
|
||||||
|
- remove: bitmap_always_unscaled.diff
|
||||||
|
missing_font_paths.diff
|
||||||
|
This has now been solved in the spec file directly.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu May 26 14:47:53 UTC 2011 - mhopf@novell.com
|
Thu May 26 14:47:53 UTC 2011 - mhopf@novell.com
|
||||||
|
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
|
|
||||||
# norootforbuild
|
# norootforbuild
|
||||||
|
|
||||||
%define moblin 0
|
|
||||||
|
|
||||||
Name: xorg-x11-server
|
Name: xorg-x11-server
|
||||||
%define dirsuffix 1.9.3
|
%define dirsuffix 1.9.3
|
||||||
%define vnc 1
|
%define vnc 1
|
||||||
@ -55,17 +53,10 @@ Source4: xorgcfg.tar.bz2
|
|||||||
Source5: modprobe.nvidia
|
Source5: modprobe.nvidia
|
||||||
Source7: xorg-docs-1.6.tar.bz2
|
Source7: xorg-docs-1.6.tar.bz2
|
||||||
Source8: xorg-backtrace
|
Source8: xorg-backtrace
|
||||||
Patch1: fpic.diff
|
|
||||||
Patch2: p_default-module-path.diff
|
Patch2: p_default-module-path.diff
|
||||||
Patch6: pu_fixes.diff
|
Patch6: pu_fixes.diff
|
||||||
Patch8: p_bug96328.diff
|
Patch13: u_OS-acpi-Reconnect-to-acpid-when-it-gets-restarted.patch
|
||||||
Patch13: p_xorg_acpi.diff
|
|
||||||
Patch14: p_xkills_wrong_client.diff
|
|
||||||
Patch16: p_xnest-ignore-getimage-errors.diff
|
Patch16: p_xnest-ignore-getimage-errors.diff
|
||||||
Patch23: disable-fbblt-opt.diff
|
|
||||||
Patch27: mouse.diff
|
|
||||||
Patch29: xephyr.diff
|
|
||||||
Patch36: libdrm.diff
|
|
||||||
%if %vnc
|
%if %vnc
|
||||||
### Dan Nicholson <dbn.lists@gmail.com>
|
### Dan Nicholson <dbn.lists@gmail.com>
|
||||||
#http://people.freedesktop.org/~dbn/xorg-server-xf4vnc.patch
|
#http://people.freedesktop.org/~dbn/xorg-server-xf4vnc.patch
|
||||||
@ -82,13 +73,10 @@ Patch50: xorg-server-xf4vnc-fixes_1_9.diff
|
|||||||
Patch51: xorg-server-xf4vnc-fix-keyboard-layout-handling.diff
|
Patch51: xorg-server-xf4vnc-fix-keyboard-layout-handling.diff
|
||||||
%endif
|
%endif
|
||||||
Patch45: bug-197858_dpms.diff
|
Patch45: bug-197858_dpms.diff
|
||||||
Patch67: xorg-docs.diff
|
|
||||||
Patch77: fbdevhw.diff
|
Patch77: fbdevhw.diff
|
||||||
Patch79: edit_data_sanity_check.diff
|
Patch79: edid_data_sanity_check.diff
|
||||||
Patch93: pixman.diff
|
|
||||||
Patch101: zap_warning_xserver.diff
|
Patch101: zap_warning_xserver.diff
|
||||||
Patch103: confine_to_shape.diff
|
Patch103: confine_to_shape.diff
|
||||||
Patch104: bitmap_always_unscaled.diff
|
|
||||||
Patch106: randr1_1-sig11.diff
|
Patch106: randr1_1-sig11.diff
|
||||||
Patch112: fix-dpi-values.diff
|
Patch112: fix-dpi-values.diff
|
||||||
Patch123: vidmode-sig11.diff
|
Patch123: vidmode-sig11.diff
|
||||||
@ -98,36 +86,24 @@ Patch128: pci-legacy-mem-fallback.diff
|
|||||||
Patch129: bug474071-fix1.diff
|
Patch129: bug474071-fix1.diff
|
||||||
Patch143: autoconfig_fallback_fbdev_first.diff
|
Patch143: autoconfig_fallback_fbdev_first.diff
|
||||||
Patch145: driver-autoconfig.diff
|
Patch145: driver-autoconfig.diff
|
||||||
Patch147: xserver-1.6.1-nouveau.patch
|
|
||||||
Patch162: cache-xkbcomp-output-for-fast-start-up.patch
|
Patch162: cache-xkbcomp-output-for-fast-start-up.patch
|
||||||
Patch163: xserver-bg-none-root.patch
|
Patch163: xserver-bg-none-root.patch
|
||||||
Patch164: xorg-detect-psb.patch
|
Patch164: xorg-detect-psb.patch
|
||||||
Patch168: xorg-server-nohwaccess.diff
|
|
||||||
Patch169: xorg-x11-nonroot-vesa.patch
|
|
||||||
Patch200: bug534768-prefer_local_symbols.patch
|
Patch200: bug534768-prefer_local_symbols.patch
|
||||||
Patch202: 0001-Check-harder-for-primary-PCI-device.patch
|
Patch202: 0001-Check-harder-for-primary-PCI-device.patch
|
||||||
Patch203: 0001-Fix-segfault-when-killing-X-with-ctrl-alt-backspace.patch
|
Patch203: 0001-Fix-segfault-when-killing-X-with-ctrl-alt-backspace.patch
|
||||||
Patch204: missing_font_paths.diff
|
|
||||||
Patch205: xorg-server-1.8.0.diff
|
|
||||||
Patch206: fix_fglrx_screendepth_issue.patch
|
Patch206: fix_fglrx_screendepth_issue.patch
|
||||||
Patch207: xorg-server-option_libxf86config.diff
|
|
||||||
Patch210: pio_ia64.diff
|
Patch210: pio_ia64.diff
|
||||||
Patch211: 0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
|
Patch211: 0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
|
||||||
Patch213: xorg-server-xdmcp.patch
|
Patch213: xorg-server-xdmcp.patch
|
||||||
Patch217: CVE-2010-2240-address_space_limit.patch
|
|
||||||
Patch218: CVE-2010-2240-tree_depth_limit.patch
|
|
||||||
Patch220: Use-external-tool-for-creating-backtraces-on-crashes.patch
|
Patch220: Use-external-tool-for-creating-backtraces-on-crashes.patch
|
||||||
Patch221: commit-5c6a2f9.diff
|
Patch221: commit-5c6a2f9.diff
|
||||||
Patch222: sync-fix.patch
|
Patch222: sync-fix.patch
|
||||||
Patch223: use-last-screen.patch
|
|
||||||
Patch224: pad-size-of-system-memory-copy-for-1x1-pixmaps
|
Patch224: pad-size-of-system-memory-copy-for-1x1-pixmaps
|
||||||
Patch225: xorg-server-stop-cpu-eating.diff
|
Patch225: xorg-server-stop-cpu-eating.diff
|
||||||
Patch226: record-avoid-crash-when-calling-RecordFlushReplyBuff.patch
|
Patch226: record-avoid-crash-when-calling-RecordFlushReplyBuff.patch
|
||||||
Patch227: Replace-malloc-with-calloc-to-initialize-the-buffers.patch
|
Patch227: Replace-malloc-with-calloc-to-initialize-the-buffers.patch
|
||||||
Patch228: EXA-mixed-ModifyPixmapHeader-pitch-fixes.-bug-33929.patch
|
Patch228: EXA-mixed-ModifyPixmapHeader-pitch-fixes.-bug-33929.patch
|
||||||
%if %moblin
|
|
||||||
Patch300: moblin-use_preferred_mode_for_all_outputs.diff
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
This package contains the X.Org Server.
|
This package contains the X.Org Server.
|
||||||
@ -187,17 +163,10 @@ An X Window System server for Virtual Network Computing (VNC).
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n xorg-server-%{dirsuffix} -a4 -a7
|
%setup -q -n xorg-server-%{dirsuffix} -a4 -a7
|
||||||
%patch1
|
|
||||||
%patch2
|
%patch2
|
||||||
%patch6
|
%patch6
|
||||||
%patch8 -p0
|
%patch13 -p1
|
||||||
%patch13
|
|
||||||
%patch14
|
|
||||||
%patch16 -p2
|
%patch16 -p2
|
||||||
%patch23
|
|
||||||
%patch27
|
|
||||||
%patch29
|
|
||||||
%patch36 -p0
|
|
||||||
%if %vnc
|
%if %vnc
|
||||||
%patch39 -p1
|
%patch39 -p1
|
||||||
%patch40 -p0
|
%patch40 -p0
|
||||||
@ -214,14 +183,11 @@ chmod 755 hw/vnc/symlink-vnc.sh
|
|||||||
%endif
|
%endif
|
||||||
%patch45 -p0
|
%patch45 -p0
|
||||||
pushd xorg-docs-*
|
pushd xorg-docs-*
|
||||||
%patch67
|
|
||||||
popd
|
popd
|
||||||
%patch77
|
%patch77
|
||||||
%patch79 -p1
|
%patch79 -p1
|
||||||
%patch93
|
|
||||||
%patch101 -p1
|
%patch101 -p1
|
||||||
%patch103
|
%patch103
|
||||||
%patch104 -p1
|
|
||||||
%patch106 -p1
|
%patch106 -p1
|
||||||
%patch112 -p0
|
%patch112 -p0
|
||||||
%patch123 -p0
|
%patch123 -p0
|
||||||
@ -233,37 +199,25 @@ pushd hw/xfree86/os-support/bus
|
|||||||
popd
|
popd
|
||||||
%patch143 -p0
|
%patch143 -p0
|
||||||
%patch145 -p0
|
%patch145 -p0
|
||||||
%patch147 -p1
|
|
||||||
%patch162 -p1
|
%patch162 -p1
|
||||||
%patch163 -p1
|
%patch163 -p1
|
||||||
%patch164 -p1
|
%patch164 -p1
|
||||||
%patch168 -p1
|
|
||||||
%patch169 -p1
|
|
||||||
%patch200 -p1
|
%patch200 -p1
|
||||||
%patch202 -p1
|
%patch202 -p1
|
||||||
%patch203 -p1
|
%patch203 -p1
|
||||||
%patch204 -p0
|
|
||||||
%patch205 -p0
|
|
||||||
%patch206 -p0
|
%patch206 -p0
|
||||||
%patch207 -p0
|
|
||||||
%patch210 -p1
|
%patch210 -p1
|
||||||
%patch211 -p1
|
%patch211 -p1
|
||||||
%patch213 -p1
|
%patch213 -p1
|
||||||
%patch217 -p1
|
|
||||||
%patch218 -p1
|
|
||||||
# Disable backtrace generation patch for now
|
# Disable backtrace generation patch for now
|
||||||
#%patch220 -p1
|
#%patch220 -p1
|
||||||
%patch221 -p1
|
%patch221 -p1
|
||||||
%patch222 -p1
|
%patch222 -p1
|
||||||
%patch223 -p1
|
|
||||||
%patch224 -p1
|
%patch224 -p1
|
||||||
%patch225 -p1
|
%patch225 -p1
|
||||||
%patch226 -p1
|
%patch226 -p1
|
||||||
%patch227 -p1
|
%patch227 -p1
|
||||||
%patch228 -p1
|
%patch228 -p1
|
||||||
%if %moblin
|
|
||||||
%patch300 -p1
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
pushd xorg-docs-*
|
pushd xorg-docs-*
|
||||||
@ -285,6 +239,8 @@ autoreconf -fi
|
|||||||
--enable-kdrive \
|
--enable-kdrive \
|
||||||
--enable-kdrive-evdev \
|
--enable-kdrive-evdev \
|
||||||
--enable-xephyr \
|
--enable-xephyr \
|
||||||
|
--disable-xfake \
|
||||||
|
--disable-xfbdev \
|
||||||
--enable-record \
|
--enable-record \
|
||||||
--enable-xcsecurity \
|
--enable-xcsecurity \
|
||||||
--with-sha1=libcrypto \
|
--with-sha1=libcrypto \
|
||||||
@ -305,7 +261,12 @@ autoreconf -fi
|
|||||||
--with-os-vendor="SUSE LINUX" \
|
--with-os-vendor="SUSE LINUX" \
|
||||||
--with-fontrootdir="/usr/share/fonts" \
|
--with-fontrootdir="/usr/share/fonts" \
|
||||||
--with-xkb-path="/usr/share/X11/xkb" \
|
--with-xkb-path="/usr/share/X11/xkb" \
|
||||||
--with-xkb-output="/var/lib/xkb/compiled"
|
--with-xkb-output="/var/lib/xkb/compiled" \
|
||||||
|
--with-default-font-path="/usr/share/fonts/misc:unscaled,\
|
||||||
|
/usr/share/fonts/Type1/,/usr/share/fonts/100dpi:unscaled,\
|
||||||
|
/usr/share/fonts/75dpi:unscaled,/usr/share/fonts/URW/,\
|
||||||
|
/usr/share/fonts/cyrillic:unscaled,\
|
||||||
|
/usr/share/fonts/truetype/,built-ins"
|
||||||
make %{?jobs:-j %jobs}
|
make %{?jobs:-j %jobs}
|
||||||
make -C hw/kdrive %{?jobs:-j %jobs}
|
make -C hw/kdrive %{?jobs:-j %jobs}
|
||||||
|
|
||||||
@ -324,6 +285,12 @@ chmod u-s $RPM_BUILD_ROOT/usr/bin/Xorg
|
|||||||
mkdir -p $RPM_BUILD_ROOT/var/lib/X11
|
mkdir -p $RPM_BUILD_ROOT/var/lib/X11
|
||||||
ln -snf ../../../usr/bin/Xorg $RPM_BUILD_ROOT/var/lib/X11/X
|
ln -snf ../../../usr/bin/Xorg $RPM_BUILD_ROOT/var/lib/X11/X
|
||||||
ln -snf ../../var/lib/X11/X $RPM_BUILD_ROOT/usr/bin/X
|
ln -snf ../../var/lib/X11/X $RPM_BUILD_ROOT/usr/bin/X
|
||||||
|
%if %suse_version > 1120
|
||||||
|
%ifnarch s390 s390x
|
||||||
|
mkdir -p $RPM_BUILD_ROOT/etc/X11/xorg.conf.d
|
||||||
|
cp $RPM_BUILD_ROOT/%{_datadir}/X11/xorg.conf.d/10-evdev.conf $RPM_BUILD_ROOT/etc/X11/xorg.conf.d/
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
mkdir -p $RPM_BUILD_ROOT/usr/%{_lib}/xorg/modules/updates/{fonts,input,linux,drivers,multimedia,extensions}
|
mkdir -p $RPM_BUILD_ROOT/usr/%{_lib}/xorg/modules/updates/{fonts,input,linux,drivers,multimedia,extensions}
|
||||||
install -m 644 $RPM_SOURCE_DIR/README.updates $RPM_BUILD_ROOT/usr/%{_lib}/xorg/modules/updates
|
install -m 644 $RPM_SOURCE_DIR/README.updates $RPM_BUILD_ROOT/usr/%{_lib}/xorg/modules/updates
|
||||||
mkdir -p $RPM_BUILD_ROOT/etc/modprobe.d
|
mkdir -p $RPM_BUILD_ROOT/etc/modprobe.d
|
||||||
@ -394,6 +361,9 @@ exit 0
|
|||||||
%ifnarch s390 s390x
|
%ifnarch s390 s390x
|
||||||
%if %suse_version > 1120
|
%if %suse_version > 1120
|
||||||
%dir /etc/X11/xorg.conf.d
|
%dir /etc/X11/xorg.conf.d
|
||||||
|
%config(noreplace) /etc/X11/xorg.conf.d/10-evdev.conf
|
||||||
|
%dir %{_datadir}/X11/xorg.conf.d
|
||||||
|
%{_datadir}/X11/xorg.conf.d/10-evdev.conf
|
||||||
%endif
|
%endif
|
||||||
%dir /etc/modprobe.d
|
%dir /etc/modprobe.d
|
||||||
%dir /var/lib/X11
|
%dir /var/lib/X11
|
||||||
@ -403,15 +373,17 @@ exit 0
|
|||||||
%dir /usr/%{_lib}/xorg
|
%dir /usr/%{_lib}/xorg
|
||||||
/usr/%{_lib}/xorg/protocol.txt
|
/usr/%{_lib}/xorg/protocol.txt
|
||||||
%{_mandir}/man1/*
|
%{_mandir}/man1/*
|
||||||
|
%{_mandir}/man7/*
|
||||||
|
%doc %{_datadir}/doc/xorg-docs/
|
||||||
%exclude %{_mandir}/man1/Xdmx.1*
|
%exclude %{_mandir}/man1/Xdmx.1*
|
||||||
%exclude %{_mandir}/man1/Xephyr.1*
|
%exclude %{_mandir}/man1/Xephyr.1*
|
||||||
%exclude %{_mandir}/man1/Xnest.1*
|
%exclude %{_mandir}/man1/Xnest.1*
|
||||||
%{_mandir}/man7/*
|
%exclude %{_mandir}/man7/Standards.7*
|
||||||
|
%exclude %{_mandir}/man7/Consortium.7*
|
||||||
|
%exclude %{_mandir}/man7/XProjectTeam.7*
|
||||||
|
%exclude %{_mandir}/man7/XOrgFoundation.7*
|
||||||
/var/lib/xkb/compiled/README.compiled
|
/var/lib/xkb/compiled/README.compiled
|
||||||
%ifnarch s390 s390x
|
%ifnarch s390 s390x
|
||||||
%if %suse_version > 1120
|
|
||||||
/etc/X11/xorg.conf.d/10-evdev.conf
|
|
||||||
%endif
|
|
||||||
/etc/modprobe.d/50-nvidia.conf
|
/etc/modprobe.d/50-nvidia.conf
|
||||||
%verify(not mode) /usr/bin/Xorg
|
%verify(not mode) /usr/bin/Xorg
|
||||||
/usr/bin/X
|
/usr/bin/X
|
||||||
|
@ -1,67 +0,0 @@
|
|||||||
Also, don't treat DRI setup failure as an error for nouveau.
|
|
||||||
---
|
|
||||||
|
|
||||||
diff --git a/glx/glxdri.c b/glx/glxdri.c
|
|
||||||
index 21e44d1..30b820c 100644
|
|
||||||
--- a/glx/glxdri.c
|
|
||||||
+++ b/glx/glxdri.c
|
|
||||||
@@ -968,6 +968,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
|
||||||
const __DRIconfig **driConfigs;
|
|
||||||
const __DRIextension **extensions;
|
|
||||||
int i;
|
|
||||||
+ int from = X_ERROR;
|
|
||||||
|
|
||||||
if (!xf86LoaderCheckSymbol("DRIQueryDirectRenderingCapable") ||
|
|
||||||
!DRIQueryDirectRenderingCapable(pScreen, &isCapable) ||
|
|
||||||
@@ -1047,7 +1048,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
|
||||||
|
|
||||||
screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
|
|
||||||
if (screen->driver == NULL) {
|
|
||||||
- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n",
|
|
||||||
+ if (!strcmp(driverName, "nouveau"))
|
|
||||||
+ from = X_INFO;
|
|
||||||
+ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n",
|
|
||||||
filename, dlerror());
|
|
||||||
goto handle_error;
|
|
||||||
}
|
|
||||||
@@ -1184,7 +1187,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
|
||||||
|
|
||||||
free(screen);
|
|
||||||
|
|
||||||
- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n");
|
|
||||||
+ LogMessage(from, "AIGLX: reverting to software rendering\n");
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
diff --git a/glx/glxdri2.c b/glx/glxdri2.c
|
|
||||||
index 0f998de..a244809 100644
|
|
||||||
--- a/glx/glxdri2.c
|
|
||||||
+++ b/glx/glxdri2.c
|
|
||||||
@@ -676,6 +676,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
|
||||||
const __DRIextension **extensions;
|
|
||||||
const __DRIconfig **driConfigs;
|
|
||||||
int i;
|
|
||||||
+ int from = X_ERROR;
|
|
||||||
|
|
||||||
screen = calloc(1, sizeof *screen);
|
|
||||||
if (screen == NULL)
|
|
||||||
@@ -702,7 +703,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
|
||||||
|
|
||||||
screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL);
|
|
||||||
if (screen->driver == NULL) {
|
|
||||||
- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n",
|
|
||||||
+ if (!strcmp(driverName, "nouveau"))
|
|
||||||
+ from = X_INFO;
|
|
||||||
+ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n",
|
|
||||||
filename, dlerror());
|
|
||||||
goto handle_error;
|
|
||||||
}
|
|
||||||
@@ -793,7 +796,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
|
||||||
|
|
||||||
free(screen);
|
|
||||||
|
|
||||||
- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n");
|
|
||||||
+ LogMessage(from, "AIGLX: reverting to software rendering\n");
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
@ -44,7 +44,7 @@ Index: xorg-server-1.6.3.901/hw/xfree86/common/xf86Config.c
|
|||||||
+ gettimeofday(&NewZap, NULL);
|
+ gettimeofday(&NewZap, NULL);
|
||||||
+
|
+
|
||||||
+ if ((NewZap.tv_sec - LastZap.tv_sec) >= 2) {
|
+ if ((NewZap.tv_sec - LastZap.tv_sec) >= 2) {
|
||||||
+ xf86OSRingBell(100, 1000, 500);
|
+ xf86OSRingBell(30, 1000, 50);
|
||||||
+ LastZap = NewZap;
|
+ LastZap = NewZap;
|
||||||
+ break;
|
+ break;
|
||||||
+ }
|
+ }
|
||||||
|
Loading…
Reference in New Issue
Block a user