Hello community,

here is the log from the commit of package xorg-x11-server for openSUSE:Factory 
checked in at 2012-07-10 14:18:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xorg-x11-server (Old)
 and      /work/SRC/openSUSE:Factory/.xorg-x11-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xorg-x11-server", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/xorg-x11-server/xorg-x11-server.changes  
2012-06-26 17:43:14.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.xorg-x11-server.new/xorg-x11-server.changes     
2012-07-10 14:18:15.000000000 +0200
@@ -1,0 +2,8 @@
+Mon Jul  9 21:28:59 UTC 2012 - [email protected]
+
+- Update to Version 1.12.3
+  + The third stable update to the X.Org X server 1.12 series is now available.
+    A few smaller changes only since the second RC, some memory leak fixes and 
two
+    fixes to avoid out-of-bounds array access.
+
+-------------------------------------------------------------------

Old:
----
  xorg-server-1.12.2.tar.bz2

New:
----
  xorg-server-1.12.3.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xorg-x11-server.spec ++++++
--- /var/tmp/diff_new_pack.b7Fpm9/_old  2012-07-10 14:18:28.000000000 +0200
+++ /var/tmp/diff_new_pack.b7Fpm9/_new  2012-07-10 14:18:28.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           xorg-x11-server
-%define dirsuffix 1.12.2
+%define dirsuffix 1.12.3
 %define vnc 1
 Summary:        X
 License:        GPL-2.0+ ; MIT

++++++ xorg-server-1.12.2.tar.bz2 -> xorg-server-1.12.3.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/Xi/extinit.c 
new/xorg-server-1.12.3/Xi/extinit.c
--- old/xorg-server-1.12.2/Xi/extinit.c 2012-05-29 22:05:17.000000000 +0200
+++ new/xorg-server-1.12.3/Xi/extinit.c 2012-07-09 02:44:01.000000000 +0200
@@ -365,7 +365,7 @@
 
 extern XExtensionVersion XIVersion;
 
-Mask PropagateMask[MAXDEVICES];
+Mask PropagateMask[EMASKSIZE];
 
 /*****************************************************************
  *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/Xi/stubs.c 
new/xorg-server-1.12.3/Xi/stubs.c
--- old/xorg-server-1.12.2/Xi/stubs.c   2012-05-29 22:05:17.000000000 +0200
+++ new/xorg-server-1.12.3/Xi/stubs.c   2012-07-09 02:44:01.000000000 +0200
@@ -141,4 +141,5 @@
 void
 DeleteInputDeviceRequest(DeviceIntPtr dev)
 {
+    RemoveDevice(dev, TRUE);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/Xi/xiquerydevice.c 
new/xorg-server-1.12.3/Xi/xiquerydevice.c
--- old/xorg-server-1.12.2/Xi/xiquerydevice.c   2012-05-29 22:05:17.000000000 
+0200
+++ new/xorg-server-1.12.3/Xi/xiquerydevice.c   2012-07-09 02:44:01.000000000 
+0200
@@ -430,7 +430,7 @@
 {
     touch->type = XITouchClass;
     touch->length = sizeof(xXITouchInfo) >> 2;
-    touch->sourceid = touch->sourceid;
+    touch->sourceid = dev->touch->sourceid;
     touch->mode = dev->touch->mode;
     touch->num_touches = dev->touch->num_touches;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/configure.ac 
new/xorg-server-1.12.3/configure.ac
--- old/xorg-server-1.12.2/configure.ac 2012-05-29 22:05:17.000000000 +0200
+++ new/xorg-server-1.12.3/configure.ac 2012-07-09 02:44:01.000000000 +0200
@@ -26,8 +26,8 @@
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.12.2, 
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2012-05-29"
+AC_INIT([xorg-server], 1.12.3, 
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2012-07-09"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AM_MAINTAINER_MODE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/dix/getevents.c 
new/xorg-server-1.12.3/dix/getevents.c
--- old/xorg-server-1.12.2/dix/getevents.c      2012-05-29 22:05:17.000000000 
+0200
+++ new/xorg-server-1.12.3/dix/getevents.c      2012-07-09 02:44:01.000000000 
+0200
@@ -35,6 +35,7 @@
 #include <X11/keysym.h>
 #include <X11/Xproto.h>
 #include <math.h>
+#include <limits.h>
 
 #include "misc.h"
 #include "resource.h"
@@ -750,6 +751,29 @@
     }
 }
 
+static void
+add_to_scroll_valuator(DeviceIntPtr dev, ValuatorMask *mask, int valuator, 
double value)
+{
+    double v;
+
+    if (!valuator_mask_fetch_double(mask, valuator, &v))
+        return;
+
+    /* protect against scrolling overflow. INT_MAX for double, because
+     * we'll eventually write this as 32.32 fixed point */
+    if ((value > 0 && v > INT_MAX - value) || (value < 0 && v < INT_MIN - 
value)) {
+        v = 0;
+
+        /* reset last.scroll to avoid a button storm */
+        valuator_mask_set_double(dev->last.scroll, valuator, 0);
+    }
+    else
+        v += value;
+
+    valuator_mask_set_double(mask, valuator, v);
+}
+
+
 /**
  * Move the device's pointer by the values given in @valuators.
  *
@@ -768,13 +792,17 @@
 
         if (!valuator_mask_isset(mask, i))
             continue;
-        val += valuator_mask_get_double(mask, i);
+
+        add_to_scroll_valuator(dev, mask, i, val);
+
         /* x & y need to go over the limits to cross screens if the SD
          * isn't currently attached; otherwise, clip to screen bounds. */
         if (valuator_get_mode(dev, i) == Absolute &&
-            ((i != 0 && i != 1) || clip_xy))
+            ((i != 0 && i != 1) || clip_xy)) {
+            val = valuator_mask_get_double(mask, i);
             clipAxis(dev, i, &val);
-        valuator_mask_set_double(mask, i, val);
+            valuator_mask_set_double(mask, i, val);
+        }
     }
 }
 
@@ -1151,16 +1179,33 @@
 transformAbsolute(DeviceIntPtr dev, ValuatorMask *mask)
 {
     double x, y, ox, oy;
+    int has_x, has_y;
+
+    has_x = valuator_mask_fetch_double(mask, 0, &ox);
+    has_y = valuator_mask_fetch_double(mask, 1, &oy);
+
+    if (!has_x && !has_y)
+        return;
+
+    if (!has_x || !has_y) {
+        struct pixman_f_transform invert;
+
+        /* undo transformation from last event */
+        ox = dev->last.valuators[0];
+        oy = dev->last.valuators[1];
+
+        pixman_f_transform_invert(&invert, &dev->transform);
+        transform(&invert, &ox, &oy);
+
+        x = ox;
+        y = oy;
+    }
 
     if (valuator_mask_isset(mask, 0))
         ox = x = valuator_mask_get_double(mask, 0);
-    else
-        ox = x = dev->last.valuators[0];
 
     if (valuator_mask_isset(mask, 1))
         oy = y = valuator_mask_get_double(mask, 1);
-    else
-        oy = y = dev->last.valuators[1];
 
     transform(&dev->transform, &x, &y);
 
@@ -1474,6 +1519,7 @@
     return num_events;
 }
 
+
 /**
  * Generate a complete series of InternalEvents (filled into the EventList)
  * representing pointer motion, or button presses.  If the device is a slave
@@ -1519,7 +1565,7 @@
      * necessary. This only needs to cater for the XIScrollFlagPreferred
      * axis (if more than one scrolling axis is present) */
     if (type == ButtonPress) {
-        double val, adj;
+        double adj;
         int axis;
         int h_scroll_axis = -1;
         int v_scroll_axis = -1;
@@ -1555,8 +1601,7 @@
 
         if (adj != 0.0 && axis != -1) {
             adj *= pDev->valuator->axes[axis].scroll.increment;
-            val = valuator_mask_get_double(&mask, axis) + adj;
-            valuator_mask_set_double(&mask, axis, val);
+            add_to_scroll_valuator(pDev, &mask, axis, adj);
             type = MotionNotify;
             buttons = 0;
             flags |= POINTER_EMULATED;
@@ -1574,7 +1619,7 @@
     /* Now turn the smooth-scrolling axes back into emulated button presses
      * for legacy clients, based on the integer delta between before and now */
     for (i = 0; i < valuator_mask_size(&mask); i++) {
-        if (i >= pDev->valuator->numAxes)
+        if ( !pDev->valuator || (i >= pDev->valuator->numAxes))
             break;
 
         if (!valuator_mask_isset(&mask, i))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/dix/touch.c 
new/xorg-server-1.12.3/dix/touch.c
--- old/xorg-server-1.12.2/dix/touch.c  2012-05-29 22:05:17.000000000 +0200
+++ new/xorg-server-1.12.3/dix/touch.c  2012-07-09 02:44:01.000000000 +0200
@@ -460,14 +460,17 @@
 void
 TouchEventHistoryReplay(TouchPointInfoPtr ti, DeviceIntPtr dev, XID resource)
 {
-    InternalEvent *tel = InitEventList(GetMaximumEventsNum());
-    ValuatorMask *mask = valuator_mask_new(0);
+    InternalEvent *tel;
+    ValuatorMask *mask;
     int i, nev;
     int flags;
 
     if (!ti->history)
         return;
 
+    tel = InitEventList(GetMaximumEventsNum());
+    mask = valuator_mask_new(0);
+
     valuator_mask_set_double(mask, 0, ti->history[0].valuators.data[0]);
     valuator_mask_set_double(mask, 1, ti->history[0].valuators.data[1]);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/hw/xfree86/common/xf86Config.c 
new/xorg-server-1.12.3/hw/xfree86/common/xf86Config.c
--- old/xorg-server-1.12.2/hw/xfree86/common/xf86Config.c       2012-05-29 
22:05:17.000000000 +0200
+++ new/xorg-server-1.12.3/hw/xfree86/common/xf86Config.c       2012-07-09 
02:44:01.000000000 +0200
@@ -2324,6 +2324,7 @@
 
                 current = dev;
                 free(*dev);
+                *dev = NULL;
 
                 do {
                     *current = *(current + 1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/hw/xfree86/common/xf86Init.c 
new/xorg-server-1.12.3/hw/xfree86/common/xf86Init.c
--- old/xorg-server-1.12.2/hw/xfree86/common/xf86Init.c 2012-05-29 
22:05:17.000000000 +0200
+++ new/xorg-server-1.12.3/hw/xfree86/common/xf86Init.c 2012-07-09 
02:44:01.000000000 +0200
@@ -962,6 +962,7 @@
     }
 #endif
 #endif
+    xf86UnblockSIGIO(0);
 
     beenHere = TRUE;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/hw/xfree86/common/xf86Xinput.c 
new/xorg-server-1.12.3/hw/xfree86/common/xf86Xinput.c
--- old/xorg-server-1.12.2/hw/xfree86/common/xf86Xinput.c       2012-05-29 
22:05:17.000000000 +0200
+++ new/xorg-server-1.12.3/hw/xfree86/common/xf86Xinput.c       2012-07-09 
02:44:01.000000000 +0200
@@ -1059,26 +1059,24 @@
     xf86PostMotionEventM(device, is_absolute, &mask);
 }
 
-void
-xf86PostMotionEventM(DeviceIntPtr device,
-                     int is_absolute, const ValuatorMask *mask)
+static int
+xf86CheckMotionEvent4DGA(DeviceIntPtr device, int is_absolute,
+                         const ValuatorMask *mask)
 {
-    int flags = 0;
-
-    if (valuator_mask_num_valuators(mask) > 0) {
-        if (is_absolute)
-            flags = POINTER_ABSOLUTE;
-        else
-            flags = POINTER_RELATIVE | POINTER_ACCELERATE;
-    }
+    int stolen = 0;
 
 #if XFreeXDGA
+    ScreenPtr scr = NULL;
+    int idx, i;
+
     /* The evdev driver may not always send all axes across. */
-    if (valuator_mask_isset(mask, 0) || valuator_mask_isset(mask, 1))
-        if (miPointerGetScreen(device)) {
-            int index = miPointerGetScreen(device)->myNum;
+    if (valuator_mask_isset(mask, 0) || valuator_mask_isset(mask, 1)) {
+        scr = miPointerGetScreen(device);
+        if (scr) {
             int dx = 0, dy = 0;
 
+            idx = scr->myNum;
+
             if (valuator_mask_isset(mask, 0)) {
                 dx = valuator_mask_get(mask, 0);
                 if (is_absolute)
@@ -1091,11 +1089,75 @@
                     dy -= device->last.valuators[1];
             }
 
-            if (DGAStealMotionEvent(device, index, dx, dy))
-                return;
+            if (DGAStealMotionEvent(device, idx, dx, dy))
+                stolen = 1;
+        }
+    }
+
+    for (i = 2; i < valuator_mask_size(mask); i++) {
+        AxisInfoPtr ax;
+        double incr;
+        int val, button;
+
+        if (i >= device->valuator->numAxes)
+            break;
+
+        if (!valuator_mask_isset(mask, i))
+            continue;
+
+        ax = &device->valuator->axes[i];
+
+        if (ax->scroll.type == SCROLL_TYPE_NONE)
+            continue;
+
+        if (!scr) {
+            scr = miPointerGetScreen(device);
+            if (!scr)
+                break;
+            idx = scr->myNum;
+        }
+
+        incr = ax->scroll.increment;
+        val = valuator_mask_get(mask, i);
+
+        if (ax->scroll.type == SCROLL_TYPE_VERTICAL) {
+            if (incr * val < 0)
+                button = 4; /* up */
+            else
+                button = 5; /* down */
+        } else { /* SCROLL_TYPE_HORIZONTAL */
+            if (incr * val < 0)
+                button = 6; /* left */
+            else
+                button = 7; /* right */
         }
+
+        if (DGAStealButtonEvent(device, idx, button, 1) &&
+                DGAStealButtonEvent(device, idx, button, 0))
+            stolen = 1;
+    }
+
 #endif
 
+    return stolen;
+}
+
+void
+xf86PostMotionEventM(DeviceIntPtr device,
+                     int is_absolute, const ValuatorMask *mask)
+{
+    int flags = 0;
+
+    if (xf86CheckMotionEvent4DGA(device, is_absolute, mask))
+        return;
+
+    if (valuator_mask_num_valuators(mask) > 0) {
+        if (is_absolute)
+            flags = POINTER_ABSOLUTE;
+        else
+            flags = POINTER_RELATIVE | POINTER_ACCELERATE;
+    }
+
     QueuePointerEvents(device, MotionNotify, 0, flags, mask);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/hw/xfree86/common/xf86sbusBus.c 
new/xorg-server-1.12.3/hw/xfree86/common/xf86sbusBus.c
--- old/xorg-server-1.12.2/hw/xfree86/common/xf86sbusBus.c      2012-05-29 
22:05:17.000000000 +0200
+++ new/xorg-server-1.12.3/hw/xfree86/common/xf86sbusBus.c      2012-07-09 
02:44:01.000000000 +0200
@@ -619,8 +619,9 @@
     pScrn->virtualY = psdp->height;
 }
 
-static sbusPaletteKeyIndex;
-static DevPrivateKey sbusPaletteKey = &sbusPaletteKeyIndex;
+static DevPrivateKeyRec sbusPaletteKeyRec;
+#define sbusPaletteKey (&sbusPaletteKeyRec)
+
 typedef struct _sbusCmap {
     sbusDevicePtr psdp;
     CloseScreenProcPtr CloseScreen;
@@ -692,6 +693,9 @@
     struct fbcmap fbcmap;
     unsigned char data[2];
 
+    if (!dixRegisterPrivateKey(sbusPaletteKey, PRIVATE_SCREEN, 0))
+        FatalError("Cannot register sbus private key");
+
     cmap = xnfcalloc(1, sizeof(sbusCmapRec));
     dixSetPrivate(&pScreen->devPrivates, sbusPaletteKey, cmap);
     cmap->psdp = psdp;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/hw/xfree86/doc/ddxDesign.xml 
new/xorg-server-1.12.3/hw/xfree86/doc/ddxDesign.xml
--- old/xorg-server-1.12.2/hw/xfree86/doc/ddxDesign.xml 2012-05-29 
22:05:17.000000000 +0200
+++ new/xorg-server-1.12.3/hw/xfree86/doc/ddxDesign.xml 2012-07-09 
02:44:01.000000000 +0200
@@ -665,11 +665,6 @@
       </para>
 
       <para>
-    The core server contains a list of mandatory modules.  These are loaded
-    first.  Currently the only module on this list is the bitmap font module.
-      </para>
-
-      <para>
     The next set of modules loaded are those specified explicitly in the
     &k.module; section of the config file.
       </para>
@@ -5992,26 +5987,6 @@
              </programlisting>
            </para>
 
-         </blockquote></para></blockquote>
-
-      <blockquote><para>
-         <programlisting>
-    void LoadFont(FontModule *font);
-         </programlisting>
-         <blockquote><para>
-    This registers the entry points for the font rasteriser module
-    identified by <parameter>font</parameter>.  The 
<structname>FontModule</structname>
-    struct is defined as:
-
-             <programlisting>
- typedef struct {
-    InitFont    initFunc;
-    char *      name;
-    pointer     module;
-} FontModule;
-             </programlisting>
-           </para>
-
          </blockquote></para></blockquote>
 
     </sect2>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/hw/xfree86/modes/xf86EdidModes.c 
new/xorg-server-1.12.3/hw/xfree86/modes/xf86EdidModes.c
--- old/xorg-server-1.12.2/hw/xfree86/modes/xf86EdidModes.c     2012-05-29 
22:05:17.000000000 +0200
+++ new/xorg-server-1.12.3/hw/xfree86/modes/xf86EdidModes.c     2012-07-09 
02:44:01.000000000 +0200
@@ -723,7 +723,13 @@
     1920, 1200, 75, 0}, {
     1920, 1200, 85, 0}, {
     1920, 1440, 60, 0}, {
-1920, 1440, 75, 0},};
+    1920, 1440, 75, 0},
+        /* fill up last byte */
+    {
+    0,0,0,0}, {
+    0,0,0,0}, {
+    0,0,0,0}, {
+    0,0,0,0}, };
 
 static DisplayModePtr
 DDCModesFromEstIII(unsigned char *est)
@@ -732,10 +738,11 @@
     int i, j, m;
 
     for (i = 0; i < 6; i++) {
-        for (j = 7; j > 0; j--) {
+        for (j = 7; j >= 0; j--) {
             if (est[i] & (1 << j)) {
                 m = (i * 8) + (7 - j);
-                modes = xf86ModesAdd(modes,
+                if (EstIIIModes[m].w)
+                    modes = xf86ModesAdd(modes,
                                      FindDMTMode(EstIIIModes[m].w,
                                                  EstIIIModes[m].h,
                                                  EstIIIModes[m].r,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/hw/xfree86/utils/man/cvt.man 
new/xorg-server-1.12.3/hw/xfree86/utils/man/cvt.man
--- old/xorg-server-1.12.2/hw/xfree86/utils/man/cvt.man 2012-05-29 
22:05:17.000000000 +0200
+++ new/xorg-server-1.12.3/hw/xfree86/utils/man/cvt.man 2012-07-09 
02:44:01.000000000 +0200
@@ -19,8 +19,8 @@
 .SH OPTIONS
 .TP 8
 .BR refresh
-Provide a vertical refresh rate in kHz.  The CVT standard prefers either 50.0,
-60.0, 75.0 or 85.0kHz.  The default is 60.0kHz.
+Provide a vertical refresh rate in Hz.  The CVT standard prefers either 50.0,
+60.0, 75.0 or 85.0Hz.  The default is 60.0Hz.
 .TP 8
 .BR \-v | \-\-verbose
 Warn verbosely when a given mode does not completely correspond with CVT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/hw/xquartz/X11Application.m 
new/xorg-server-1.12.3/hw/xquartz/X11Application.m
--- old/xorg-server-1.12.2/hw/xquartz/X11Application.m  2012-05-29 
22:05:17.000000000 +0200
+++ new/xorg-server-1.12.3/hw/xquartz/X11Application.m  2012-07-09 
02:44:01.000000000 +0200
@@ -1281,6 +1281,11 @@
 }
 #endif
 
+extern void
+darwinEvents_lock(void);
+extern void
+darwinEvents_unlock(void);
+
 - (void) sendX11NSEvent:(NSEvent *)e
 {
     NSPoint location = NSZeroPoint;
@@ -1293,18 +1298,15 @@
     int modifierFlags;
     BOOL isMouseOrTabletEvent, isTabletEvent;
 
-#ifdef HAVE_LIBDISPATCH
-    static dispatch_once_t once_pred;
-    dispatch_once(&once_pred, ^{
-                      tilt = NSZeroPoint;
-                      darwinTabletCurrent = darwinTabletStylus;
-                  });
-#else
     if (!darwinTabletCurrent) {
+        /* Ensure that the event system is initialized */
+        darwinEvents_lock();
+        darwinEvents_unlock();
+        assert(darwinTabletStylus);
+
         tilt = NSZeroPoint;
         darwinTabletCurrent = darwinTabletStylus;
     }
-#endif
 
     isMouseOrTabletEvent = [e type] == NSLeftMouseDown ||
                            [e type] == NSOtherMouseDown ||
@@ -1593,6 +1595,11 @@
 
     case NSScrollWheel:
     {
+#if MAC_OS_X_VERSION_MAX_ALLOWED < 1050
+        float deltaX = [e deltaX];
+        float deltaY = [e deltaY];
+        BOOL isContinuous = NO;
+#else
         CGFloat deltaX = [e deltaX];
         CGFloat deltaY = [e deltaY];
         CGEventRef cge = [e CGEvent];
@@ -1614,6 +1621,7 @@
             deltaY *= lineHeight / 5.0;
         }
 #endif
+#endif
         
 #if !defined(XPLUGIN_VERSION) || XPLUGIN_VERSION == 0
         /* If we're in the background, we need to send a MotionNotify event
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/hw/xquartz/console_redirect.c 
new/xorg-server-1.12.3/hw/xquartz/console_redirect.c
--- old/xorg-server-1.12.2/hw/xquartz/console_redirect.c        2012-05-29 
22:05:17.000000000 +0200
+++ new/xorg-server-1.12.3/hw/xquartz/console_redirect.c        2012-07-09 
02:44:01.000000000 +0200
@@ -310,6 +310,20 @@
     atexit(redirect_atexit);
 }
 
+#if MAC_OS_X_VERSION_MIN_REQUIRED < 1050
+#define fls(v) xq_fls(v)
+
+static inline int fls(int value) {
+    unsigned int b, v;
+
+    v = *((unsigned int *)&value);
+
+    for(b=0 ; v ; v >>= 1 , b++);
+
+    return b;
+}
+#endif
+
 int
 xq_asl_log_fd(aslclient asl, aslmsg msg, int level, int fd)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/hw/xquartz/quartz.c 
new/xorg-server-1.12.3/hw/xquartz/quartz.c
--- old/xorg-server-1.12.2/hw/xquartz/quartz.c  2012-05-29 22:05:17.000000000 
+0200
+++ new/xorg-server-1.12.3/hw/xquartz/quartz.c  2012-07-09 02:44:01.000000000 
+0200
@@ -69,6 +69,12 @@
 #include <rootlessCommon.h>
 #include <Xplugin.h>
 
+/* Work around a bug on Leopard's headers */
+#if defined (__LP64__) && MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 && 
MAC_OS_X_VERSION_MAX_ALLOWED < 1060
+extern OSErr UpdateSystemActivity(UInt8 activity);
+#define OverallAct 0
+#endif
+
 DevPrivateKeyRec quartzScreenKeyRec;
 int aquaMenuBarHeight = 0;
 QuartzModeProcsPtr quartzProcs = NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/randr/randr.c 
new/xorg-server-1.12.3/randr/randr.c
--- old/xorg-server-1.12.2/randr/randr.c        2012-05-29 22:05:17.000000000 
+0200
+++ new/xorg-server-1.12.3/randr/randr.c        2012-07-09 02:44:01.000000000 
+0200
@@ -416,7 +416,7 @@
     int i;
 
     if (pScrPriv->changed) {
-        UpdateCurrentTime();
+        UpdateCurrentTimeIf();
         if (pScrPriv->configChanged) {
             pScrPriv->lastConfigTime = currentTime;
             pScrPriv->configChanged = FALSE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/xkb/XKBMAlloc.c 
new/xorg-server-1.12.3/xkb/XKBMAlloc.c
--- old/xorg-server-1.12.2/xkb/XKBMAlloc.c      2012-05-29 22:05:17.000000000 
+0200
+++ new/xorg-server-1.12.3/xkb/XKBMAlloc.c      2012-07-09 02:44:01.000000000 
+0200
@@ -375,8 +375,10 @@
         nResize = 0;
         for (nTotal = 1, i = xkb->min_key_code; i <= xkb->max_key_code; i++) {
             width = XkbKeyGroupsWidth(xkb, i);
-            if (width < type->num_levels)
+            if (width < type->num_levels || width >= new_num_lvls) {
+                nTotal += XkbKeyNumSyms(xkb,i);
                 continue;
+            }
             for (match = 0, g = XkbKeyNumGroups(xkb, i) - 1;
                  (g >= 0) && (!match); g--) {
                 if (XkbKeyKeyTypeIndex(xkb, i, g) == type_ndx) {
@@ -384,7 +386,7 @@
                     match = 1;
                 }
             }
-            if ((!match) || (width >= new_num_lvls))
+            if (!match)
                 nTotal += XkbKeyNumSyms(xkb, i);
             else {
                 nTotal += XkbKeyNumGroups(xkb, i) * new_num_lvls;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xorg-server-1.12.2/xkb/xkbAccessX.c 
new/xorg-server-1.12.3/xkb/xkbAccessX.c
--- old/xorg-server-1.12.2/xkb/xkbAccessX.c     2012-05-29 22:05:17.000000000 
+0200
+++ new/xorg-server-1.12.3/xkb/xkbAccessX.c     2012-07-09 02:44:01.000000000 
+0200
@@ -295,10 +295,15 @@
     cn.eventType = 0;
     cn.requestMajor = 0;
     cn.requestMinor = 0;
-    if (xkbi->desc->ctrls->enabled_ctrls & XkbSlowKeysMask)
+    if (xkbi->desc->ctrls->enabled_ctrls & XkbSlowKeysMask) {
         AccessXKRGTurnOff((DeviceIntPtr) arg, &cn);
-    else
+        LogMessage(X_INFO, "XKB SlowKeys are disabled.\n");
+    }
+    else {
         AccessXKRGTurnOn((DeviceIntPtr) arg, XkbSlowKeysMask, &cn);
+        LogMessage(X_INFO, "XKB SlowKeys are now enabled. Hold shift to 
disable.\n");
+    }
+
     return 0;
 }
 

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to