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

xorg-server: Changes to 'ubuntu'



 Xext/panoramiXSwap.c                               |    4 +
 Xi/exevents.c                                      |    4 -
 config/hal.c                                       |    5 -
 configure.ac                                       |    2 
 debian/changelog                                   |   72 +++++++++++++++++++--
 debian/control                                     |    2 
 debian/patches/08_xkb_infinite_loop.diff           |   34 +++++++++
 debian/patches/12_bgPixel_fix_64bit_issue.diff     |   33 ---------
 debian/patches/14_default_screen_section.diff      |   12 +--
 debian/patches/44_preferredmode_infinite_loop.diff |   31 +++++++++
 debian/patches/series                              |    3 
 debian/rules                                       |    4 -
 dix/getevents.c                                    |    2 
 hw/kdrive/ephyr/ephyrinit.c                        |    2 
 hw/xfree86/dixmods/xkbKillSrv.c                    |    4 -
 hw/xfree86/modes/xf86EdidModes.c                   |    9 ++
 hw/xfree86/xaa/xaaGC.c                             |    9 +-
 hw/xprint/Makefile.am                              |    2 
 mi/mieq.c                                          |    4 -
 os/WaitFor.c                                       |    2 
 os/connection.c                                    |   16 +++-
 xkb/ddxKillSrv.c                                   |    4 -
 xkb/xkbActions.c                                   |   19 ++++-
 23 files changed, 211 insertions(+), 68 deletions(-)

New commits:
commit 49a73f0c697000fb2b9eabdf913ef1193256c9d1
Author: David Nusinow <dnusinow@debian.org>
Date:   Wed Dec 12 21:19:43 2007 -0500

    Prepare changelog for upload

diff --git a/debian/changelog b/debian/changelog
index 9f91c4b..957419e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xorg-server (2:1.4.1~git20071212-1) UNRELEASED; urgency=low
+xorg-server (2:1.4.1~git20071212-1) unstable; urgency=low
 
   [ Julien Cristau ]
   * debian/rules: Use lsb_release -i -s to get the vendor name, instead of
@@ -14,7 +14,7 @@ xorg-server (2:1.4.1~git20071212-1) UNRELEASED; urgency=low
     This is primarily a bugfix release
     + Remove 12_bgPixel_fix_64bit_issue.diff. Applied upstream
 
- -- David Nusinow <dnusinow@debian.org>  Wed, 12 Dec 2007 19:45:26 -0500
+ -- David Nusinow <dnusinow@debian.org>  Wed, 12 Dec 2007 20:19:11 -0500
 
 xorg-server (2:1.4.1~git20071119-1) unstable; urgency=low
 

commit 552c66c36526566353df563c817ebf3b3507bcf2
Author: David Nusinow <dnusinow@debian.org>
Date:   Wed Dec 12 20:19:08 2007 -0500

    * New upstream version. This is based on the server-1.4-branch, and includes
      all the changes in the 1.4.0.90 (pre-)release as well as additional fixes.
      This is primarily a bugfix release
      + Remove 12_bgPixel_fix_64bit_issue.diff. Applied upstream

diff --git a/debian/changelog b/debian/changelog
index cb16609..9f91c4b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,6 @@
-xorg-server (2:1.4.1~git20071119-2) UNRELEASED; urgency=low
+xorg-server (2:1.4.1~git20071212-1) UNRELEASED; urgency=low
 
+  [ Julien Cristau ]
   * debian/rules: Use lsb_release -i -s to get the vendor name, instead of
     hardcoding "Debian".
   * debian/control: build-dep on lsb-release.
@@ -7,7 +8,13 @@ xorg-server (2:1.4.1~git20071119-2) UNRELEASED; urgency=low
   * Add patch 44_preferredmode_infinite_loop.diff from upstream git: fixes an
     infinite loop when PreferredMode is used in xorg.conf.
 
- -- Julien Cristau <jcristau@debian.org>  Sun, 02 Dec 2007 00:56:53 +0100
+  [ David Nusinow ]
+  * New upstream version. This is based on the server-1.4-branch, and includes
+    all the changes in the 1.4.0.90 (pre-)release as well as additional fixes.
+    This is primarily a bugfix release
+    + Remove 12_bgPixel_fix_64bit_issue.diff. Applied upstream
+
+ -- David Nusinow <dnusinow@debian.org>  Wed, 12 Dec 2007 19:45:26 -0500
 
 xorg-server (2:1.4.1~git20071119-1) unstable; urgency=low
 
diff --git a/debian/patches/12_bgPixel_fix_64bit_issue.diff b/debian/patches/12_bgPixel_fix_64bit_issue.diff
deleted file mode 100644
index f80d4a4..0000000
--- a/debian/patches/12_bgPixel_fix_64bit_issue.diff
+++ /dev/null
@@ -1,33 +0,0 @@
-From 9adea807038b64292403ede982075fe1dcfd4c9a Mon Sep 17 00:00:00 2001
-From: Hong Liu <hong.liu@intel.com>
-Date: Tue, 4 Sep 2007 08:46:46 +0100
-Subject: [PATCH] bgPixel (unsigned long) is 64-bit on x86_64, so -1 != 0xffffffff
-
-This patch should fix bug 8080.
----
- hw/xfree86/xaa/xaaGC.c |    9 +++++----
- 1 files changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/hw/xfree86/xaa/xaaGC.c b/hw/xfree86/xaa/xaaGC.c
-index f3434c9..b3dc83a 100644
---- a/hw/xfree86/xaa/xaaGC.c
-+++ b/hw/xfree86/xaa/xaaGC.c
-@@ -80,10 +80,11 @@ XAAValidateGC(
-     }
- 
-     if(pGC->depth != 32) {
--	if(pGC->bgPixel == -1) /* -1 is reserved for transparency */
--	    pGC->bgPixel = 0x7fffffff; 
--	if(pGC->fgPixel == -1) /* -1 is reserved for transparency */
--	    pGC->fgPixel = 0x7fffffff; 
-+	/* 0xffffffff is reserved for transparency */
-+	if(pGC->bgPixel == 0xffffffff)
-+	    pGC->bgPixel = 0x7fffffff;
-+	if(pGC->fgPixel == 0xffffffff)
-+	    pGC->fgPixel = 0x7fffffff;
-     }
- 
-     if((pDraw->type == DRAWABLE_PIXMAP) && !IS_OFFSCREEN_PIXMAP(pDraw)){
--- 
-1.5.3.2
-
diff --git a/debian/patches/14_default_screen_section.diff b/debian/patches/14_default_screen_section.diff
index 3151f6e..a3b6061 100644
--- a/debian/patches/14_default_screen_section.diff
+++ b/debian/patches/14_default_screen_section.diff
@@ -1,8 +1,8 @@
 Index: xorg-server/hw/xfree86/common/xf86Config.c
 ===================================================================
---- xorg-server.orig/hw/xfree86/common/xf86Config.c	2007-11-19 20:36:12.000000000 -0500
-+++ xorg-server/hw/xfree86/common/xf86Config.c	2007-11-19 20:36:13.000000000 -0500
-@@ -1800,11 +1800,6 @@
+--- xorg-server.orig/hw/xfree86/common/xf86Config.c	2007-12-12 19:43:59.000000000 -0500
++++ xorg-server/hw/xfree86/common/xf86Config.c	2007-12-12 19:44:10.000000000 -0500
+@@ -1801,11 +1801,6 @@
      if (!servlayoutp)
  	return FALSE;
  
@@ -14,7 +14,7 @@ Index: xorg-server/hw/xfree86/common/xf86Config.c
      /*
       * which screen section is the active one?
       *
-@@ -1892,6 +1887,12 @@
+@@ -1893,6 +1888,12 @@
      XF86ConfAdaptorLinkPtr conf_adaptor;
      Bool defaultMonitor = FALSE;
  
@@ -29,8 +29,8 @@ Index: xorg-server/hw/xfree86/common/xf86Config.c
      /*
 Index: xorg-server/hw/xfree86/parser/Screen.c
 ===================================================================
---- xorg-server.orig/hw/xfree86/parser/Screen.c	2007-11-19 20:36:47.000000000 -0500
-+++ xorg-server/hw/xfree86/parser/Screen.c	2007-11-19 20:36:57.000000000 -0500
+--- xorg-server.orig/hw/xfree86/parser/Screen.c	2007-12-12 19:43:02.000000000 -0500
++++ xorg-server/hw/xfree86/parser/Screen.c	2007-12-12 19:44:10.000000000 -0500
 @@ -498,12 +498,6 @@
  	XF86ConfDevicePtr device;
  	XF86ConfAdaptorLinkPtr adaptor;
diff --git a/debian/patches/series b/debian/patches/series
index 08a6b93..f9cca17 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -6,7 +6,6 @@
 06_use_proc_instead_of_sysfs_for_pci_domains.diff
 07_autoconfig_screen_with_device_section.diff
 10_dont_look_in_home_for_config.diff -p0
-12_bgPixel_fix_64bit_issue.diff
 13_debian_add_xkbpath_env_variable.diff
 14_default_screen_section.diff
 21_glx_align_fixes.patch

commit d988da6eee8422774dff364050bf431b843a714a
Author: Arkadiusz Miskiewicz <arekm@maven.pl>
Date:   Thu Dec 13 00:09:08 2007 +0200

    Xprint: Clean up generated files
    
    Remember to clean generated wrapper files.
    (cherry picked from commit 977fcdea8198906936a64b8117e6a6d027c617e3)

diff --git a/hw/xprint/Makefile.am b/hw/xprint/Makefile.am
index dc8764a..f834966 100644
--- a/hw/xprint/Makefile.am
+++ b/hw/xprint/Makefile.am
@@ -41,3 +41,5 @@ Xprt_SOURCES =			\
         $(top_srcdir)/fb/fbcmap_mi.c
 
 EXTRA_DIST = ValTree.c
+
+CLEANFILES = miinitext-wrapper.c dpmsstubs-wrapper.c

commit 41f735fbe02f59bc7bcca335c6e743c72c2fc44c
Author: Hong Liu <hong.liu@intel.com>
Date:   Tue Sep 4 08:46:46 2007 +0100

    bgPixel (unsigned long) is 64-bit on x86_64, so -1 != 0xffffffff
    
    This patch should fix bug 8080.
    (cherry picked from commit 9adea807038b64292403ede982075fe1dcfd4c9a)

diff --git a/hw/xfree86/xaa/xaaGC.c b/hw/xfree86/xaa/xaaGC.c
index f3434c9..b3dc83a 100644
--- a/hw/xfree86/xaa/xaaGC.c
+++ b/hw/xfree86/xaa/xaaGC.c
@@ -80,10 +80,11 @@ XAAValidateGC(
     }
 
     if(pGC->depth != 32) {
-	if(pGC->bgPixel == -1) /* -1 is reserved for transparency */
-	    pGC->bgPixel = 0x7fffffff; 
-	if(pGC->fgPixel == -1) /* -1 is reserved for transparency */
-	    pGC->fgPixel = 0x7fffffff; 
+	/* 0xffffffff is reserved for transparency */
+	if(pGC->bgPixel == 0xffffffff)
+	    pGC->bgPixel = 0x7fffffff;
+	if(pGC->fgPixel == 0xffffffff)
+	    pGC->fgPixel = 0x7fffffff;
     }
 
     if((pDraw->type == DRAWABLE_PIXMAP) && !IS_OFFSCREEN_PIXMAP(pDraw)){

commit f4bcb53e86bb103b6bcf8a3a170a36137c34d272
Author: Hong Liu <hong.liu@intel.com>
Date:   Wed Dec 5 17:48:28 2007 +0100

    Bug 13308: Verify and reject obviously broken modes.
    (cherry picked from commit c6cfcd408df3e44d0094946c0a7d2fa944b4d2d1)

diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c
index 8b5e69d..e2ae665 100644
--- a/hw/xfree86/modes/xf86EdidModes.c
+++ b/hw/xfree86/modes/xf86EdidModes.c
@@ -239,6 +239,12 @@ DDCModeFromDetailedTiming(int scrnIndex, struct detailed_timings *timing,
     Mode->VSyncEnd = Mode->VSyncStart + timing->v_sync_width;
     Mode->VTotal = timing->v_active + timing->v_blanking;
 
+    /* perform basic check on the detail timing */
+    if (Mode->HSyncEnd > Mode->HTotal || Mode->VSyncEnd > Mode->VTotal) {
+	xfree(Mode);
+	return NULL;
+    }
+
     xf86SetModeDefaultName(Mode);
 
     /* We ignore h/v_size and h/v_border for now. */

commit d63efecc9471ac53535932b80a85b7f408f06fb9
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Dec 12 21:57:59 2007 +0200

    Bump to 1.4.0.90

diff --git a/configure.ac b/configure.ac
index dedc5f1..72d9819 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.57)
-AC_INIT([xorg-server], 1.4, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+AC_INIT([xorg-server], 1.4.0.90, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([dist-bzip2 foreign])
 AM_MAINTAINER_MODE

commit e8e1a1e781d52ca3bbe804b0cb0c9b5d6d42b421
Author: Julien Cristau <jcristau@debian.org>
Date:   Fri Dec 7 21:12:40 2007 +0100

    Add patch 08_xkb_infinite_loop.diff from upstream bug#13511
    
    Papers over an infinite loop in event processing (closes: #451989).

diff --git a/debian/changelog b/debian/changelog
index cb16609..251daca 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,8 +6,10 @@ xorg-server (2:1.4.1~git20071119-2) UNRELEASED; urgency=low
   * Cherry-pick commit f30abe30 from master: edid quirk for MAX 0x77e monitor.
   * Add patch 44_preferredmode_infinite_loop.diff from upstream git: fixes an
     infinite loop when PreferredMode is used in xorg.conf.
+  * Add patch 08_xkb_infinite_loop.diff from upstream bug#13511: papers over
+    an infinite loop in event processing (closes: #451989).
 
- -- Julien Cristau <jcristau@debian.org>  Sun, 02 Dec 2007 00:56:53 +0100
+ -- Julien Cristau <jcristau@debian.org>  Fri, 07 Dec 2007 21:09:24 +0100
 
 xorg-server (2:1.4.1~git20071119-1) unstable; urgency=low
 
diff --git a/debian/patches/08_xkb_infinite_loop.diff b/debian/patches/08_xkb_infinite_loop.diff
new file mode 100644
index 0000000..efe3f28
--- /dev/null
+++ b/debian/patches/08_xkb_infinite_loop.diff
@@ -0,0 +1,34 @@
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=451989
+https://bugs.freedesktop.org/show_bug.cgi?id=13511
+------ Comment  #1 From Peter Hutterer  2007-12-04 22:45:39 PST  [reply] -------
+
+(In reply to comment #0)
+> When some window is opened by some grabbed key, grabbing all keys and they
+> destroyed (like the window ratpoison opened uppon C-t :, or the window icewm
+> shows when doing Alt-Tab), the xserver is caught in an endless loop within
+> PlayReleasedEvents in dix/events.c.
+
+interesting bug... tricky to track down. 
+
+The bug only occurs if Xkb triggers an autorepeat. In this case,
+XkbHandleActions overwrites dev->public.realInputProc with EnqueueEvent. When
+the device is unfrozen, the realInputProc is written back to the
+processInputProc and the whole thing craps out.
+
+Here's a preliminary hack to fix it. It stops the loop occuring (tested with
+ratpoison) but I'm not sure what other implications it has. It most probably is
+not the correct solution.
+
+diff --git a/include/xkbsrv.h b/include/xkbsrv.h
+index 167dbec..9f7f0d6 100644
+--- a/include/xkbsrv.h
++++ b/include/xkbsrv.h
+@@ -258,7 +258,8 @@ typedef struct
+ 	    device->public.processInputProc = proc; \
+ 	oldprocs->processInputProc = \
+ 	oldprocs->realInputProc = device->public.realInputProc; \
+-	device->public.realInputProc = proc; \
++	if (proc != device->public.enqueueInputProc) \
++	    device->public.realInputProc = proc; \
+ 	oldprocs->unwrapProc = device->unwrapProc; \
+ 	device->unwrapProc = unwrapproc;
diff --git a/debian/patches/series b/debian/patches/series
index 08a6b93..1e668fd 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -5,6 +5,7 @@
 05_kill_type1.diff
 06_use_proc_instead_of_sysfs_for_pci_domains.diff
 07_autoconfig_screen_with_device_section.diff
+08_xkb_infinite_loop.diff
 10_dont_look_in_home_for_config.diff -p0
 12_bgPixel_fix_64bit_issue.diff
 13_debian_add_xkbpath_env_variable.diff

commit 446efcc554195970cb3ddcd992f7aac617d45b1d
Author: Bartosz Fabianowski <freebsd@chillt.de>
Date:   Fri Dec 7 02:38:14 2007 +0000

    Input: Fix proximity events with valuators
    
    Initialise num_events to 1, so we always send a proximity event, and then
    optionally valuator events.  Also make sure mieq can deal with valuator
    events sent after proximity events.
    (cherry picked from commit 2dcfab37d38c0c72e9be7cc724047405c8029e88)

diff --git a/dix/getevents.c b/dix/getevents.c
index b70653d..12d8189 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -705,7 +705,7 @@ _X_EXPORT int
 GetProximityEvents(xEvent *events, DeviceIntPtr pDev, int type,
                    int first_valuator, int num_valuators, int *valuators)
 {
-    int num_events = 0;
+    int num_events = 1;
     deviceKeyButtonPointer *kbp = (deviceKeyButtonPointer *) events;
 
     /* Sanity checks. */
diff --git a/mi/mieq.c b/mi/mieq.c
index 20c4b62..e644090 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -128,7 +128,9 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
         if (oldtail == miEventQueue.head ||
             !(lastkbp->type == DeviceMotionNotify ||
               lastkbp->type == DeviceButtonPress ||
-              lastkbp->type == DeviceButtonRelease) ||
+              lastkbp->type == DeviceButtonRelease ||
+              lastkbp->type == ProximityIn ||
+              lastkbp->type == ProximityOut) ||
             ((lastkbp->deviceid & DEVICE_BITS) !=
              (v->deviceid & DEVICE_BITS))) {
             ErrorF("mieqEnequeue: out-of-order valuator event; dropping.\n");

commit 9f4689173ef9db080592497dc2212ae79b8d6e02
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Dec 6 00:46:32 2007 +0000

    KDrive: Xephyr: Fix non-GLX builds
    
    Only set noGlxExtension if we're actually building GLX.

diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
index c33892c..e4ff975 100644
--- a/hw/kdrive/ephyr/ephyrinit.c
+++ b/hw/kdrive/ephyr/ephyrinit.c
@@ -47,7 +47,9 @@ InitCard (char *name)
 void
 InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
 {
+#ifdef GLXEXT
   noGlxExtension=TRUE;
+#endif
   KdInitOutput (pScreenInfo, argc, argv);
 }
 

commit d37351308b255d5f9bff3438b6767c62974902da
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Dec 5 19:37:48 2007 +0000

    XKB: Actions: Don't run certain actions on the core keyboard
    
    Don't run VT switches, terminations, or anything, on the core keyboard: only
    run actions which affect the keyboard state.  If we get an action such as VT
    switch, just swallow the event.
    (cherry picked from commit 320abd7d1d906807448fa01ad3377daf707f46cc)

diff --git a/hw/xfree86/dixmods/xkbKillSrv.c b/hw/xfree86/dixmods/xkbKillSrv.c
index b3399db..9074fd3 100644
--- a/hw/xfree86/dixmods/xkbKillSrv.c
+++ b/hw/xfree86/dixmods/xkbKillSrv.c
@@ -48,6 +48,8 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 int
 XkbDDXTerminateServer(DeviceIntPtr dev,KeyCode key,XkbAction *act)
 {
-    xf86ProcessActionEvent(ACTION_TERMINATE, NULL);
+    if (dev != inputInfo.keyboard)
+        xf86ProcessActionEvent(ACTION_TERMINATE, NULL);
+
     return 0;
 }
diff --git a/xkb/ddxKillSrv.c b/xkb/ddxKillSrv.c
index a573ecb..3b5fd53 100644
--- a/xkb/ddxKillSrv.c
+++ b/xkb/ddxKillSrv.c
@@ -41,6 +41,8 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 int
 XkbDDXTerminateServer(DeviceIntPtr dev,KeyCode key,XkbAction *act)
 {
-    GiveUp(1);
+    if (dev != inputInfo.keyboard)
+        GiveUp(1);
+
     return 0;
 }
diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c
index 8ddbdba..6edac29 100644
--- a/xkb/xkbActions.c
+++ b/xkb/xkbActions.c
@@ -561,6 +561,9 @@ _XkbFilterPointerMove(	XkbSrvInfoPtr	xkbi,
 int	x,y;
 Bool	accel;
 
+    if (xkbi->device == inputInfo.keyboard)
+        return 0;
+
     if (filter->keycode==0) {		/* initial press */
 	filter->keycode = keycode;
 	filter->active = 1;
@@ -601,6 +604,9 @@ _XkbFilterPointerBtn(	XkbSrvInfoPtr	xkbi,
 			unsigned	keycode,
 			XkbAction *	pAction)
 {
+    if (xkbi->device == inputInfo.keyboard)
+        return 0;
+
     if (filter->keycode==0) {		/* initial press */
 	int	button= pAction->btn.button;
 
@@ -980,8 +986,11 @@ _XkbFilterSwitchScreen(	XkbSrvInfoPtr	xkbi,
 			unsigned	keycode,
 			XkbAction *	pAction)
 {
+    DeviceIntPtr dev = xkbi->device;
+    if (dev == inputInfo.keyboard)
+        return 0;
+
     if (filter->keycode==0) {		/* initial press */
-        DeviceIntPtr	dev = xkbi->device;
 	filter->keycode = keycode;
 	filter->active = 1;
 	filter->filterOthers = 0;
@@ -1003,8 +1012,11 @@ _XkbFilterXF86Private(	XkbSrvInfoPtr	xkbi,
 			unsigned	keycode,
 			XkbAction *	pAction)
 {
+    DeviceIntPtr dev = xkbi->device;
+    if (dev == inputInfo.keyboard)
+        return 0;
+
     if (filter->keycode==0) {		/* initial press */
-        DeviceIntPtr	dev = xkbi->device;
 	filter->keycode = keycode;
 	filter->active = 1;
 	filter->filterOthers = 0;
@@ -1029,6 +1041,9 @@ _XkbFilterDeviceBtn(	XkbSrvInfoPtr	xkbi,
 DeviceIntPtr	dev;
 int		button;
 
+    if (dev == inputInfo.keyboard)
+        return 0;
+
     if (filter->keycode==0) {		/* initial press */
 	dev= _XkbLookupButtonDevice(pAction->devbtn.device,NULL);
 	if ((!dev)||(!dev->public.on)||(&dev->public==LookupPointerDevice()))

commit 27da1367c9ea143946b8b8d3dbd0f9d44c4a9039
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Dec 5 19:36:59 2007 +0000

    WaitForSomething: Ignore EAGAIN
    
    If select ever returns EAGAIN, don't bother complaining.
    (cherry picked from commit 85dd8efac1bc0715f03c99d261b1c5d0980623e1)

diff --git a/os/WaitFor.c b/os/WaitFor.c
index ec1592c..65f53c5 100644
--- a/os/WaitFor.c
+++ b/os/WaitFor.c
@@ -262,7 +262,7 @@ WaitForSomething(int *pClientsReady)
 		    FatalError("WaitForSomething(): select: errno=%d\n",
 			selecterr);
             }
-		else if (selecterr != EINTR)
+		else if (selecterr != EINTR && selecterr != EAGAIN)
 		{
 		    ErrorF("WaitForSomething(): select: errno=%d\n",
 			selecterr);

commit 259f86b13b453f3503afd3d523de32b43996d334
Author: Rich Coe <Richard.Coe@med.ge.com>
Date:   Wed Dec 5 19:36:37 2007 +0000

    OS: Connection: Keep trying select while it gets interrupted (bug #9240)
    
    If we got interrupted (EINTR or EAGAIN) during select, just try again, rather
    than shutting clients down on either of these errors.
    (cherry picked from commit b7f3618f3933a810778093fd47564a1e3bf3fde6)

diff --git a/os/connection.c b/os/connection.c
index 135dd2c..b944593 100644
--- a/os/connection.c
+++ b/os/connection.c
@@ -1006,7 +1006,9 @@ CheckConnections(void)
 	    curclient = curoff + (i * (sizeof(fd_mask)*8));
             FD_ZERO(&tmask);
             FD_SET(curclient, &tmask);
-            r = Select (curclient + 1, &tmask, NULL, NULL, &notime);
+            do {
+                r = Select (curclient + 1, &tmask, NULL, NULL, &notime);
+            } while (r < 0 && (errno == EINTR || errno == EAGAIN));
             if (r < 0)
                 if (ConnectionTranslation[curclient] > 0)
                     CloseDownClient(clients[ConnectionTranslation[curclient]]);
@@ -1020,9 +1022,12 @@ CheckConnections(void)
 	curclient = XFD_FD(&savedAllClients, i);
 	FD_ZERO(&tmask);
 	FD_SET(curclient, &tmask);
-	r = Select (curclient + 1, &tmask, NULL, NULL, &notime);
-	if (r < 0 && GetConnectionTranslation(curclient) > 0)
-	    CloseDownClient(clients[GetConnectionTranslation(curclient)]);
+        do {
+            r = Select (curclient + 1, &tmask, NULL, NULL, &notime);
+        } while (r < 0 && (errno == EINTR || errno == EAGAIN));
+	if (r < 0)
+            if (GetConnectionTranslation(curclient) > 0)
+                CloseDownClient(clients[GetConnectionTranslation(curclient)]);
     }	
 #endif
 }

commit 90649e6a39dc6caad8313b25ef869a089f81aba7
Author: Rich Coe <Richard.Coe@med.ge.com>
Date:   Wed Dec 5 19:31:07 2007 +0000

    OS: Connection: Don't shut down disappeared clients (bug #7876)
    
    If a client disappears in the middle of CheckConnections (presumably
    because its appgroup leader disappears), then don't attempt to shut it down
    a second time, when it's already vanished.
    (cherry picked from commit d8b2cad3771a09860e7be1726f67e684cf7caeec)

diff --git a/os/connection.c b/os/connection.c
index d975f87..135dd2c 100644
--- a/os/connection.c
+++ b/os/connection.c
@@ -1008,7 +1008,8 @@ CheckConnections(void)
             FD_SET(curclient, &tmask);
             r = Select (curclient + 1, &tmask, NULL, NULL, &notime);
             if (r < 0)
-		CloseDownClient(clients[ConnectionTranslation[curclient]]);
+                if (ConnectionTranslation[curclient] > 0)
+                    CloseDownClient(clients[ConnectionTranslation[curclient]]);
 	    mask &= ~((fd_mask)1 << curoff);
 	}
     }	

commit 25d26b55e74b50a2fd0632329cb0bdca017fe8e6
Author: Kanru Chen <koster@debian.org.tw>
Date:   Mon Dec 3 12:46:45 2007 +0000

    Config: HAL: Fix XKB option parsing
    
    Actually combine the XKB options into a string, rather than just repeatedly
    writing a comma.
    (cherry picked from commit da893908feb2dcf7c22420b3426ab3ac65c7ca99)

diff --git a/config/hal.c b/config/hal.c
index 6bb449d..4427deb 100644
--- a/config/hal.c
+++ b/config/hal.c
@@ -134,10 +134,11 @@ get_prop_string_array(LibHalContext *hal_ctx, const char *udi, const char *prop)
 
         str = ret;
         for (i = 0; props[i]; i++) {
-            str = strcpy(str, props[i]);
+            strcpy(str, props[i]);
+            str += strlen(props[i]);
             *str++ = ',';
         }
-        *str = '\0';
+        *(str-1) = '\0';
 
         libhal_free_string_array(props);
     }

commit 826ddcc2a27e069d7ba644d3b10253b17068bfe8
Author: Julien Cristau <jcristau@debian.org>
Date:   Sun Dec 2 00:58:05 2007 +0100

    Add patch 44_preferredmode_infinite_loop.diff from upstream git
    
    fixes an infinite loop when PreferredMode is used in xorg.conf.

diff --git a/debian/changelog b/debian/changelog
index b600ad9..cb16609 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,8 +4,10 @@ xorg-server (2:1.4.1~git20071119-2) UNRELEASED; urgency=low
     hardcoding "Debian".
   * debian/control: build-dep on lsb-release.
   * Cherry-pick commit f30abe30 from master: edid quirk for MAX 0x77e monitor.
+  * Add patch 44_preferredmode_infinite_loop.diff from upstream git: fixes an
+    infinite loop when PreferredMode is used in xorg.conf.
 
- -- Julien Cristau <jcristau@debian.org>  Fri, 30 Nov 2007 14:00:16 +0100
+ -- Julien Cristau <jcristau@debian.org>  Sun, 02 Dec 2007 00:56:53 +0100
 
 xorg-server (2:1.4.1~git20071119-1) unstable; urgency=low
 
diff --git a/debian/patches/44_preferredmode_infinite_loop.diff b/debian/patches/44_preferredmode_infinite_loop.diff
new file mode 100644
index 0000000..9ab791d
--- /dev/null
+++ b/debian/patches/44_preferredmode_infinite_loop.diff
@@ -0,0 +1,31 @@
+From 29e0e180729a4f0cc020985a4de4c8bc4b9c7f5f Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp@koto.keithp.com>
+Date: Mon, 22 Oct 2007 13:38:16 -0700
+Subject: [PATCH] Leave hardware-specified preferred modes alone when user preference exists.
+
+Instead of removing the preference bit marking the hardware declared mode
+preference, leave it in place and just move the user preferred mode to the
+front of the list while marking it with the USERPREF bit which will cause it
+to be selected by the initial mode selection code.
+---
+ 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 0a48d5b..bb416fd 100644
+--- a/hw/xfree86/modes/xf86Crtc.c
++++ b/hw/xfree86/modes/xf86Crtc.c
+@@ -1417,9 +1417,8 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
+ 			output->probed_modes = mode;
+ 		    }
+ 		    mode->type |= (M_T_PREFERRED|M_T_USERPREF);
++		    break;
+ 		}
+-		else
+-		    mode->type &= ~M_T_PREFERRED;
+ 	    }
+ 	}
+ 	
+-- 
+1.5.3.6
+
diff --git a/debian/patches/series b/debian/patches/series
index cd09885..08a6b93 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -12,6 +12,7 @@
 21_glx_align_fixes.patch
 41_vbe_filter_less.diff
 43_allow_override_BIOS_EDID_preferred_mode.diff
+44_preferredmode_infinite_loop.diff
 #47_fbdevhw_magic_numbers.diff
 #51_xkb-and-loathing.diff
 91_ttf2pt1

commit b037e4a5abb878ad89e7f27c2b6c23004625f6c3
Author: Peter Harris <peter.harris@hummingbird.com>
Date:   Mon Oct 29 18:05:19 2007 -0400

    Add missing swaps in panoramiXSwap.c
    (cherry picked from commit cb67a10b7f6f564e0345de19316934361ea28720)

diff --git a/Xext/panoramiXSwap.c b/Xext/panoramiXSwap.c
index da445ff..0487471 100644
--- a/Xext/panoramiXSwap.c
+++ b/Xext/panoramiXSwap.c
@@ -70,6 +70,7 @@ SProcPanoramiXGetState(ClientPtr client)
 
  	swaps (&stuff->length, n);	
 	REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
+	swapl (&stuff->window, n);
 	return ProcPanoramiXGetState(client);
 }
 
@@ -81,6 +82,7 @@ SProcPanoramiXGetScreenCount(ClientPtr client)
 
 	swaps (&stuff->length, n);
 	REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
+	swapl (&stuff->window, n);
 	return ProcPanoramiXGetScreenCount(client);
 }
 
@@ -92,6 +94,8 @@ SProcPanoramiXGetScreenSize(ClientPtr client)
 
 	swaps (&stuff->length, n);
 	REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
+	swapl (&stuff->window, n);
+	swapl (&stuff->screen, n);
 	return ProcPanoramiXGetScreenSize(client);
 }
 

commit 3e0993fcf38e47dd42c27a2dcb5dde7d23222ca8
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Nov 30 20:35:26 2007 +0200

    ProcessOtherEvent: Don't do double translation of button events
    
    We already deal with the button mapping in GetPointerEvents, so don't
    do the remapping again in ProcessOtherEvent.
    (cherry picked from commit 7ff002fe3e229330216d7f2ff16cdabe63014bcd)

diff --git a/Xi/exevents.c b/Xi/exevents.c
index 377311e..7cf0c50 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -244,7 +244,7 @@ ProcessOtherEvent(xEventPtr xE, DeviceIntPtr other, int count)
 	    other->valuator->motionHintWindow = NullWindow;
 	b->buttonsDown++;
 	b->motionMask = DeviceButtonMotionMask;
-	xE->u.u.detail = b->map[key];
+	xE->u.u.detail = key;
 	if (xE->u.u.detail == 0)
 	    return;
 	if (xE->u.u.detail <= 5)
@@ -266,7 +266,7 @@ ProcessOtherEvent(xEventPtr xE, DeviceIntPtr other, int count)
 	    other->valuator->motionHintWindow = NullWindow;
         if (b->buttonsDown >= 1 && !--b->buttonsDown)
 	    b->motionMask = 0;
-	xE->u.u.detail = b->map[key];
+	xE->u.u.detail = key;
 	if (xE->u.u.detail == 0)
 	    return;
 	if (xE->u.u.detail <= 5)

commit 1ed6406e3b0a87cc9ba105d4b2cc00807115fa9d
Author: Julien Cristau <jcristau@debian.org>
Date:   Fri Nov 30 14:00:53 2007 +0100

    * Cherry-pick commit f30abe30 from master: edid quirk for MAX 0x77e monitor.

diff --git a/debian/changelog b/debian/changelog
index 28337eb..b600ad9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,8 +3,9 @@ xorg-server (2:1.4.1~git20071119-2) UNRELEASED; urgency=low
   * debian/rules: Use lsb_release -i -s to get the vendor name, instead of
     hardcoding "Debian".
   * debian/control: build-dep on lsb-release.
+  * Cherry-pick commit f30abe30 from master: edid quirk for MAX 0x77e monitor.
 
- -- Julien Cristau <jcristau@debian.org>  Fri, 23 Nov 2007 22:14:06 +0100
+ -- Julien Cristau <jcristau@debian.org>  Fri, 30 Nov 2007 14:00:16 +0100
 
 xorg-server (2:1.4.1~git20071119-1) unstable; urgency=low
 
diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c
index 8b5e69d..44bff4d 100644
--- a/hw/xfree86/modes/xf86EdidModes.c
+++ b/hw/xfree86/modes/xf86EdidModes.c
@@ -60,7 +60,8 @@ static Bool quirk_prefer_large_60 (int scrnIndex, xf86MonPtr DDC)
 {
     /* Belinea 10 15 55 */
     if (memcmp (DDC->vendor.name, "MAX", 4) == 0 &&
-	DDC->vendor.prod_id == 1516)
+	((DDC->vendor.prod_id == 1516) ||
+	(DDC->vendor.prod_id == 0x77e)))
 	return TRUE;
     
     /* Acer AL1706 */

commit 73c32263aa7b5309092cec4b6e2e93fa71a387be
Author: Julien Cristau <jcristau@debian.org>
Date:   Fri Nov 23 22:15:02 2007 +0100

    Don't hardcode "Debian" as the vendor name.
    
    * debian/rules: Use lsb_release -i -s to get the vendor name, instead of
      hardcoding "Debian".
    * debian/control: build-dep on lsb-release.

diff --git a/debian/changelog b/debian/changelog
index 93abc92..28337eb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+xorg-server (2:1.4.1~git20071119-2) UNRELEASED; urgency=low
+
+  * debian/rules: Use lsb_release -i -s to get the vendor name, instead of
+    hardcoding "Debian".
+  * debian/control: build-dep on lsb-release.
+
+ -- Julien Cristau <jcristau@debian.org>  Fri, 23 Nov 2007 22:14:06 +0100
+
 xorg-server (2:1.4.1~git20071119-1) unstable; urgency=low
 
   * Ship a .orig.tar.gz that's been autoreconf'ed. Closes: #451891
diff --git a/debian/control b/debian/control
index eaf887c..8907850 100644
--- a/debian/control
+++ b/debian/control
@@ -8,7 +8,7 @@ Uploaders: David Nusinow <dnusinow@debian.org>, Steve Langasek <vorlon@debian.or
 # x11proto-xf86dri-dev and libdrm-dev are for DRI support for the Xorg server.
 # x11proto-print-dev and libfreetype6-dev are for Xprint
 # everything on is for the DMX and Xnest servers.
-Build-Depends: debhelper (>= 4.0.0), pkg-config, bison, flex,
+Build-Depends: debhelper (>= 4.0.0), lsb-release, pkg-config, bison, flex,
  x11proto-bigreqs-dev, x11proto-composite-dev (>= 1:0.4), x11proto-core-dev (>= 7.0.9),
  x11proto-damage-dev (>= 1.1), x11proto-evie-dev, x11proto-fixes-dev (>= 4.0),
  x11proto-kb-dev (>= 1.0.3), x11proto-xinerama-dev, x11proto-randr-dev (>= 1.2),
diff --git a/debian/rules b/debian/rules
index a474d4f..ab4e4f7 100755
--- a/debian/rules
+++ b/debian/rules
@@ -44,6 +44,8 @@ endif
 
 INSTALL=/usr/bin/install
 
+VENDOR = $(shell lsb_release -i -s)
+
 # disable-static is so we don't get libfoo.a for modules.  now if only we could
 # kill the .las.
 confflags += --disable-static \
@@ -69,7 +71,7 @@ confflags += --disable-static \
 	     --with-xkb-output=/var/lib/xkb \
 	     --enable-xfree86-utils \
 	     --with-os-name="$(shell uname)" \
-	     --with-os-vendor="Debian ($(SOURCE_NAME) $(SOURCE_VERSION))" \
+	     --with-os-vendor="$(VENDOR) ($(SOURCE_NAME) $(SOURCE_VERSION))" \
 	     --with-int10=x86emu \
 	     --disable-type1
 



Reply to: