Hello community,

here is the log from the commit of package xorg-x11-server for openSUSE:Factory 
checked in at 2013-12-13 12:01:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xorg-x11-server (Old)
 and      /work/SRC/openSUSE:Factory/.xorg-x11-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xorg-x11-server"

Changes:
--------
--- /work/SRC/openSUSE:Factory/xorg-x11-server/xorg-x11-server.changes  
2013-11-28 16:53:48.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.xorg-x11-server.new/xorg-x11-server.changes     
2013-12-13 12:01:23.000000000 +0100
@@ -1,0 +2,72 @@
+Wed Dec 11 15:26:59 UTC 2013 - [email protected]
+
+- Dropped:
+  * N_0001-Check-harder-for-primary-PCI-device.patch
+    Whith libpciaccess code path irrelevant for Linux. 
+  * N_0001-Fix-segfault-when-killing-X-with-ctrl-alt-backspace.patch
+    Solved differently upstream
+  * N_bug-197858_dpms.diff
+    This one is upstream already - apparently nobody check this when
+    it no longer applied...
+  * N_bug534768-prefer_local_symbols.patch
+    Upstream has a better suggestion how to solve this. However this
+    patch is no longer needed     
+  * N_dpms_screensaver.diff
+    This topic was solved slightly differently upstream - still patch
+    got ported without checking it's context.
+  * N_randr1_1-sig11.diff
+    No longer needed. Problem was fixed differently upstream.
+  * u_vgaHW-no-legacy.patch
+    Problem solved in the nv driver.
+- Renamed:
+  Those patches will go upstream, thus they are prefixed by a u_:
+  * n__confine_to_shape.diff ->  u_confine_to_shape.diff
+  * N_fbdevhw.diff -> u_fbdevhw.diff
+  * n_x86emu-include-order.patch -> u_x86emu-include-order.patch
+  * N_xorg-server-xdmcp.patchA -> u_xorg-server-xdmcp.patch
+  Those patches no longer apply but are kept for reference thus prefixed by b_:
+  * N_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch ->
+    b_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
+  * N_cache-xkbcomp-output-for-fast-start-up.patch ->
+    b_cache-xkbcomp-output-for-fast-start-up.patch
+  * N_sync-fix.patch -> b_sync-fix.patch
+  Those patches came from a foreign source but are not upstream, yet, thus
+  prefix ux_:
+  * u_xserver_xvfb-randr.patch -> ux_xserver_xvfb-randr.patch
+
+
+
+-------------------------------------------------------------------
+Wed Dec 11 00:35:57 UTC 2013 - [email protected]
+
+- Update to version 1.14.99.904 (1.15 RC4):
+  Here's another RC this week. This includes fixes for the GLX regression
+  on OS X and Windows, and fixes for Xinerama and various extensions.
+- Drop superseded patches:
+  + Patch143: 
n_autoconf-On-Linux-give-fbdev-driver-a-higher-precedence-than-vesa.patch
+  
+-------------------------------------------------------------------
+Thu Dec  5 12:18:30 UTC 2013 - [email protected]
+
+- removed no longer applied n_Xvnc-pthread.diff from package
+
+-------------------------------------------------------------------
+Thu Nov 28 14:08:58 UTC 2013 - [email protected]
+
+- Update to 1.14.99.903 (1.15 RC3):
+- Remove upstreamed patches:
+  + Patch228: u_aarch64-support.patch
+  + Patch229: u_disable-acpi-code.patch
+  A new configure option controls this now
+  + Patch240: 
U_revert_dri2_realloc_dri2_drawable_if-pixmap_serial_changes.patch
+  + Patch242: U_randr_dont_directly_set_changed_bits_in_randr_screen.patch
+  + Patch243: U_randr_report_changes_when_we_disconnect_a_GPU_slave.patch
+  + Patch244: u_randr_send_rrproviderchangenotify_event.patch
+  + Patch245: u_randr_send_rrresourcechangenotify_event.patch
+  + Patch246: u_randr_deliver_output_and_crtc_events_of_attached_output.patch
+  + Patch249: U_xserver_enable_grabdevice_by_default_for_non_seat0.patch
+- Drop superseded patches:
+  + Patch16:  N_p_xnest-ignore-getimage-errors.diff
+  + Patch79:  N_edid_data_sanity_check.diff
+
+-------------------------------------------------------------------

Old:
----
  N_0001-Check-harder-for-primary-PCI-device.patch
  N_0001-Fix-segfault-when-killing-X-with-ctrl-alt-backspace.patch
  N_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
  N_bug-197858_dpms.diff
  N_bug534768-prefer_local_symbols.patch
  N_cache-xkbcomp-output-for-fast-start-up.patch
  N_confine_to_shape.diff
  N_dpms_screensaver.diff
  N_edid_data_sanity_check.diff
  N_fbdevhw.diff
  N_p_xnest-ignore-getimage-errors.diff
  N_randr1_1-sig11.diff
  N_sync-fix.patch
  N_x86emu-include-order.patch
  N_xorg-server-xdmcp.patch
  U_randr_dont_directly_set_changed_bits_in_randr_screen.patch
  U_randr_report_changes_when_we_disconnect_a_GPU_slave.patch
  U_revert_dri2_realloc_dri2_drawable_if-pixmap_serial_changes.patch
  U_xserver_enable_grabdevice_by_default_for_non_seat0.patch
  n_Xvnc-pthread.diff
  n_autoconf-On-Linux-give-fbdev-driver-a-higher-precedence-than-vesa.patch
  u_aarch64-support.patch
  u_disable-acpi-code.patch
  u_randr_deliver_output_and_crtc_events_of_attached_output.patch
  u_randr_send_rrproviderchangenotify_event.patch
  u_randr_send_rrresourcechangenotify_event.patch
  u_vgaHW-no-legacy.patch
  u_xserver_xvfb-randr.patch
  xorg-server-1.14.3.901.tar.bz2

New:
----
  b_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
  b_cache-xkbcomp-output-for-fast-start-up.patch
  b_sync-fix.patch
  u_confine_to_shape.diff
  u_fbdevhw.diff
  u_x86emu-include-order.patch
  u_xorg-server-xdmcp.patch
  ux_xserver_xvfb-randr.patch
  xorg-server-1.14.99.904.tar.bz2

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

Other differences:
------------------
++++++ xorg-x11-server.spec ++++++
--- /var/tmp/diff_new_pack.2wtqhJ/_old  2013-12-13 12:01:24.000000000 +0100
+++ /var/tmp/diff_new_pack.2wtqhJ/_new  2013-12-13 12:01:24.000000000 +0100
@@ -18,12 +18,12 @@
 
 Name:           xorg-x11-server
 
-%define dirsuffix 1.14.3.901
+%define dirsuffix 1.14.99.904
 
 Summary:        X
 License:        GPL-2.0+ and MIT
 Group:          System/X11/Servers/XF86_4
-Source0:        
http://xorg.freedesktop.org/archive/individual/xserver/xorg-server-%{dirsuffix}.tar.bz2
+Source0:        xorg-server-%{dirsuffix}.tar.bz2
 Source1:        sysconfig.displaymanager.template
 Source3:        README.updates
 Source4:        xorgcfg.tar.bz2
@@ -37,8 +37,7 @@
 Patch0:         n_xorg-x11-server-rpmmacros.patch
 # PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
 Patch2:         N_p_default-module-path.diff
-# PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch16:        N_p_xnest-ignore-getimage-errors.diff
+
 BuildRequires:  Mesa-devel
 BuildRequires:  bison
 BuildRequires:  flex
@@ -65,8 +64,11 @@
 BuildRequires:  pkgconfig(sm)
 BuildRequires:  pkgconfig(x11)
 BuildRequires:  pkgconfig(xau)
-BuildRequires:  pkgconfig(xau)
 BuildRequires:  pkgconfig(xaw7)
+BuildRequires:  pkgconfig(xcb-aux)
+BuildRequires:  pkgconfig(xcb-icccm)
+BuildRequires:  pkgconfig(xcb-image)
+BuildRequires:  pkgconfig(xcb-keysyms)
 BuildRequires:  pkgconfig(xcmiscproto) >= 1.2.0
 BuildRequires:  pkgconfig(xdmcp)
 BuildRequires:  pkgconfig(xext) >= 1.0.99.4
@@ -82,8 +84,9 @@
 BuildRequires:  pkgconfig(xproto) >= 7.0.17
 BuildRequires:  pkgconfig(xrender)
 BuildRequires:  pkgconfig(xres)
+BuildRequires:  pkgconfig(xshmfence)
 BuildRequires:  pkgconfig(xt)
-BuildRequires:  pkgconfig(xtrans) >= 1.2.2
+BuildRequires:  pkgconfig(xtrans) >= 1.3.1
 BuildRequires:  pkgconfig(xtst) >= 1.0.99.2
 BuildRequires:  pkgconfig(xv)
 ### udev support (broken on openSUSE 11.2, see also bnc #589997)
@@ -114,59 +117,32 @@
 Requires:       xkeyboard-config
 
 # PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch45:        N_bug-197858_dpms.diff
-# PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch77:        N_fbdevhw.diff
-# PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch79:        N_edid_data_sanity_check.diff
+Patch77:        u_fbdevhw.diff
 # PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
 Patch101:       N_zap_warning_xserver.diff
 # PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch103:       N_confine_to_shape.diff
-# PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch106:       N_randr1_1-sig11.diff
+Patch103:       u_confine_to_shape.diff
 # PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
 Patch112:       N_fix-dpi-values.diff
 # PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch127:       N_dpms_screensaver.diff
-# PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch143:       
n_autoconf-On-Linux-give-fbdev-driver-a-higher-precedence-than-vesa.patch
-# PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
 Patch145:       N_driver-autoconfig.diff
 # PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch162:       N_cache-xkbcomp-output-for-fast-start-up.patch
-# PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch200:       N_bug534768-prefer_local_symbols.patch
-# PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch202:       N_0001-Check-harder-for-primary-PCI-device.patch
-# PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch203:       
N_0001-Fix-segfault-when-killing-X-with-ctrl-alt-backspace.patch
+Patch162:       b_cache-xkbcomp-output-for-fast-start-up.patch
 # PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
 Patch206:       N_fix_fglrx_screendepth_issue.patch
 # PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch211:       
N_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
+Patch211:       
b_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch
 # PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch213:       N_xorg-server-xdmcp.patch
+Patch213:       u_xorg-server-xdmcp.patch
 # PATCH-MISSING-TAG -- See 
http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
-Patch222:       N_sync-fix.patch
+Patch222:       b_sync-fix.patch
 # PATCH-FIX-UPSTREAM N_x86emu-include-order.patch [email protected] -- Change 
include order to avoid conflict with system header, remove duplicate definitions
-Patch223:       N_x86emu-include-order.patch
+Patch223:       u_x86emu-include-order.patch
+
+Patch230:       ux_xserver_xvfb-randr.patch
 
-Patch226:       u_vgaHW-no-legacy.patch
-Patch228:       u_aarch64-support.patch
-Patch229:       u_disable-acpi-code.patch
-Patch230:       u_xserver_xvfb-randr.patch
-
-Patch240:       
U_revert_dri2_realloc_dri2_drawable_if-pixmap_serial_changes.patch
-
-Patch242:       U_randr_dont_directly_set_changed_bits_in_randr_screen.patch
-Patch243:       U_randr_report_changes_when_we_disconnect_a_GPU_slave.patch
-Patch244:       u_randr_send_rrproviderchangenotify_event.patch
-Patch245:       u_randr_send_rrresourcechangenotify_event.patch
-Patch246:       u_randr_deliver_output_and_crtc_events_of_attached_output.patch
 Patch247:       
u_randr_allow_rrselectinput_for_providerchange_and_resourcechange_events.patch
 Patch248:       N_randr_fix_abi.patch
-Patch249:       U_xserver_enable_grabdevice_by_default_for_non_seat0.patch
 
 %description
 This package contains the X.Org Server.
@@ -222,24 +198,15 @@
 cp %{SOURCE96} .
 %patch0 -p1
 %patch2
-%patch16 -p1
 
-### Needs to be rebased
-#%patch45 -p0
 %patch77
-%patch79 -p1
 %patch101 -p1
 %patch103
-%patch106 -p1
 %patch112 -p0
-%patch127 -p1
-%patch143 -p1
+
 %patch145 -p0
 ### disabled for now
 #%patch162 -p1
-%patch200 -p1
-%patch202 -p1
-%patch203 -p1
 %patch206 -p0
 ### disabled for now
 #%patch211 -p1
@@ -247,21 +214,9 @@
 ### patch222 might not be applicable anymore
 #%patch222 -p1
 %patch223 -p1
-%patch226 -p0
-%patch228 -p1
-%patch229 -p1
 %patch230 -p1
-
-%patch240 -p1
-
-%patch242 -p1
-%patch243 -p1
-%patch244 -p1
-%patch245 -p1
-%patch246 -p1
 %patch247 -p1
 %patch248 -p1
-%patch249 -p1
 
 %build
 autoreconf -fi
@@ -272,6 +227,7 @@
             --enable-xdm-auth-1 \
             --enable-dri \
             --enable-dri2 \
+            --enable-dri3 \
             --enable-dmx \
             --enable-xnest \
             --enable-kdrive \
@@ -282,6 +238,7 @@
             --enable-record \
             --enable-xcsecurity \
             --with-sha1=libcrypto \
+            --disable-linux-acpi \
 %ifarch s390 s390x
             --disable-xorg \
             --disable-aiglx \
@@ -391,7 +348,7 @@
 %dir %{_sysconfdir}/X11/xorg.conf.d
 %config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/10-evdev.conf
 %dir %{_datadir}/X11/xorg.conf.d
-%{_datadir}/X11/xorg.conf.d/10-evdev.conf
+%{_datadir}/X11/xorg.conf.d/10-*.conf
 %endif
 %dir %{_localstatedir}/lib/X11
 %endif

++++++ b_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch ++++++
>From d1d9d4e5f8f9ac1d22e1258759d6ee9e49c7fe90 Mon Sep 17 00:00:00 2001
From: Egbert Eich <[email protected]>
Date: Fri, 9 Apr 2010 15:10:32 +0200
Subject: [PATCH] Prevent XSync Alarms from senslessly calling CheckTrigger() 
when inactive.

If an XSync Alarm is set to inactive there is no need to check if a trigger
needs to fire. Doing so if the counter is the IdleCounter will put the
server on 100 percent CPU load since the select timeout is set to 0.
---
 xorg-server-1.8.0/Xext/sync.c    |   11 +++++++++--
 xorg-server-1.8.0/Xext/syncsrv.h |    1 +
 2 files changed, 10 insertions(+), 2 deletions(-)

Index: xorg-server-1.8.0/Xext/sync.c
===================================================================
--- xorg-server-1.8.0.orig/Xext/sync.c
+++ xorg-server-1.8.0/Xext/sync.c
@@ -518,6 +518,10 @@ SyncAlarmTriggerFired(SyncTrigger *pTrig
            pAlarm->state = XSyncAlarmInactive;
        }
     }
+    /* Stop server from looping! */
+    if (pAlarm->state == XSyncAlarmInactive)
+       SyncDeleteTriggerFromCounter(&pAlarm->trigger);
+
     /*  The AlarmNotify event has to have the "new state of the alarm"
      *  which we can't be sure of until this point.  However, it has
      *  to have the "old" trigger test value.  That's the reason for
@@ -730,7 +734,7 @@ SyncChangeAlarmAttributes(ClientPtr clie
     XSyncCounter   counter;
     Mask          origmask = mask;
 
-    counter = pAlarm->trigger.pCounter ? pAlarm->trigger.pCounter->id : None;
+    counter = pAlarm->counter_id;
 
     while (mask)
     {
@@ -741,7 +745,7 @@ SyncChangeAlarmAttributes(ClientPtr clie
          case XSyncCACounter:
            mask &= ~XSyncCACounter;
            /* sanity check in SyncInitTrigger */
-           counter = *values++;
+           counter = pAlarm->counter_id = *values++;
            break;
 
          case XSyncCAValueType:
@@ -808,6 +812,14 @@ SyncChangeAlarmAttributes(ClientPtr clie
            return BadMatch;
        }
     }
+    if (pAlarm->state == XSyncAlarmInactive) {
+       /*
+        * If we are inactive the trigger has been deleted from the counter.
+        * Persuade SyncInitTrigger() to readd it.
+        */
+       origmask |= XSyncCACounter;
+       pAlarm->trigger.pCounter = NULL;
+    }
 
     /* postpone this until now, when we're sure nothing else can go wrong */
     if ((status = SyncInitTrigger(client, &pAlarm->trigger, counter,
@@ -815,6 +827,7 @@ SyncChangeAlarmAttributes(ClientPtr clie
        return status;
 
     /* XXX spec does not really say to do this - needs clarification */
+    /* It's the only place where it is set to XSyncAlarmActive! */
     pAlarm->state = XSyncAlarmActive;
     return Success;
 }
@@ -1617,8 +1630,10 @@ ProcSyncCreateAlarm(ClientPtr client)
 
     pAlarm->client = client;
     pAlarm->alarm_id = stuff->id;
+    pAlarm->counter_id = None;
     XSyncIntToValue(&pAlarm->delta, 1L);
     pAlarm->events = TRUE;
+    /* SyncChangeAlarmAttributes() changes this - no need to set this here! */
     pAlarm->state = XSyncAlarmInactive;
     pAlarm->pEventClients = NULL;
     status = SyncChangeAlarmAttributes(client, pAlarm, vmask,
Index: xorg-server-1.8.0/Xext/syncsrv.h
===================================================================
--- xorg-server-1.8.0.orig/Xext/syncsrv.h
+++ xorg-server-1.8.0/Xext/syncsrv.h
@@ -129,6 +129,7 @@ typedef struct _SyncAlarm {
     int                events;
     int                state;
     SyncAlarmClientList *pEventClients;
+    XSyncCounter counter_id;
 } SyncAlarm;
 
 typedef struct {
++++++ b_cache-xkbcomp-output-for-fast-start-up.patch ++++++
>From 0f70ba9d3412b17ac4e08e33e1be3c226c06ea54 Mon Sep 17 00:00:00 2001
From: Yan Li <[email protected]>
Date: Tue, 12 May 2009 17:49:07 +0800
Subject: [PATCH] XKB: cache xkbcomp output for fast start-up v5 for 1.6.1
Organization: Intel

xkbcomp outputs will be cached in files with hashed keymap as
names. This saves boot time for around 1s on commodity netbooks.

Signed-off-by: Yan Li <[email protected]>
================================================================================
--- xorg-server-1.7.99/configure.ac
+++ xorg-server-1.7.99/configure.ac
@@ -527,9 +527,9 @@
 AC_ARG_WITH(xkb-path,         AS_HELP_STRING([--with-xkb-path=PATH], [Path to 
XKB base dir (default: ${datadir}/X11/xkb)]),
                                [ XKBPATH="$withval" ],
                                [ XKBPATH="${datadir}/X11/xkb" ])
-AC_ARG_WITH(xkb-output,       AS_HELP_STRING([--with-xkb-output=PATH], [Path 
to XKB output dir (default: ${datadir}/X11/xkb/compiled)]),
+AC_ARG_WITH(xkb-output,       AS_HELP_STRING([--with-xkb-output=PATH], [Path 
to XKB output dir (default: ${localstatedir}/cache/xkb)]),
                                [ XKBOUTPUT="$withval" ],
-                               [ XKBOUTPUT="compiled" ])
+                               [ XKBOUTPUT="${localstatedir}/cache/xkb" ])
 AC_ARG_WITH(default-xkb-rules, AS_HELP_STRING([--with-default-xkb-rules=RULES],
                                    [Keyboard ruleset (default: base/evdev)]),
                                 [ XKB_DFLT_RULES="$withval" ],
@@ -1160,7 +1160,7 @@
 dnl Make sure XKM_OUTPUT_DIR is an absolute path
 XKBOUTPUT_FIRSTCHAR=`echo $XKBOUTPUT | cut -b 1`
 if [[ x$XKBOUTPUT_FIRSTCHAR != x/ -a x$XKBOUTPUT_FIRSTCHAR != 'x$' ]] ; then
-   XKBOUTPUT="$XKB_BASE_DIRECTORY/$XKBOUTPUT"
+   AC_MSG_ERROR([xkb-output must be an absolute path.])
 fi
 
 dnl XKM_OUTPUT_DIR (used in code) must end in / or file names get hosed
--- xorg-server-1.7.99/xkb/README.compiled
+++ xorg-server-1.7.99/xkb/README.compiled
@@ -4,10 +4,10 @@
 or some other tool might destroy or replace the files in this directory,
 so it is not a safe place to store compiled keymaps for long periods of
 time.  The default keymap for any server is usually stored in:
-     X<num>-default.xkm
-where <num> is the display number of the server in question, which makes
-it possible for several servers *on the same host* to share the same 
-directory.
+     server-<SHA1>.xkm
+
+where <SHA1> is the SHA1 hash of keymap source, so that compiled
+keymap of different keymap sources are stored in different files.
 
 Unless the X server is modified, sharing this directory between servers on
 different hosts could cause problems.
--- xorg-server-1.9.0/xkb/ddxLoad.c.orig        2010-07-14 22:23:17.000000000 
+0200
+++ xorg-server-1.9.0/xkb/ddxLoad.c     2010-08-23 15:23:47.000000000 +0200
@@ -30,6 +30,12 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 #include <xkb-config.h>
 
+#ifdef HAVE_SHA1_IN_LIBMD /* Use libmd for SHA1 */
+# include <sha1.h>
+#else /* Use OpenSSL's libcrypto */
+# include <stddef.h>  /* buggy openssl/sha.h wants size_t */
+# include <openssl/sha.h>
+#endif
 #include <stdio.h>
 #include <ctype.h>
 #include <X11/X.h>
@@ -43,24 +49,13 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #define        XKBSRV_NEED_FILE_FUNCS
 #include <xkbsrv.h>
 #include <X11/extensions/XI.h>
+#include <errno.h>
 #include "xkb.h"
 
 #if defined(CSRG_BASED) || defined(linux) || defined(__GNU__)
 #include <paths.h>
 #endif
 
-       /*
-        * If XKM_OUTPUT_DIR specifies a path without a leading slash, it is
-        * relative to the top-level XKB configuration directory.
-        * Making the server write to a subdirectory of that directory
-        * requires some work in the general case (install procedure
-        * has to create links to /var or somesuch on many machines),
-        * so we just compile into /usr/tmp for now.
-        */
-#ifndef XKM_OUTPUT_DIR
-#define        XKM_OUTPUT_DIR  "compiled/"
-#endif
-
 #define        PRE_ERROR_MSG "\"The XKEYBOARD keymap compiler (xkbcomp) 
reports:\""
 #define        ERROR_PREFIX    "\"> \""
 #define        POST_ERROR_MSG1 "\"Errors from xkbcomp are not fatal to the X 
server\""
@@ -175,6 +170,45 @@ OutputDirectory(
 }
 
 static Bool
+Sha1Asc(char sha1Asc[SHA_DIGEST_LENGTH*2+1], const char * input)
+{
+    int i;
+    unsigned char sha1[SHA_DIGEST_LENGTH];
+
+#ifdef HAVE_SHA1_IN_LIBMD /* Use libmd for SHA1 */
+    SHA1_CTX ctx;
+
+    SHA1Init (&ctx);
+    SHA1Update (&ctx, input, strlen(input));
+    SHA1Final (sha1, &ctx);
+#else /* Use OpenSSL's libcrypto */
+    SHA_CTX ctx;
+    int success;
+
+    success = SHA1_Init (&ctx);
+    if (! success)
+      return BadAlloc;
+
+    success = SHA1_Update (&ctx, input, strlen(input));
+    if (! success)
+      return BadAlloc;
+
+    success = SHA1_Final (sha1, &ctx);
+    if (! success)
+      return BadAlloc;
+#endif
+
+    /* convert sha1 to sha1_asc */
+    for(i=0; i<SHA_DIGEST_LENGTH; ++i) {
+        sprintf(sha1Asc+i*2, "%02X", sha1[i]);
+    }
+
+    return Success;
+}
+
+/* call xkbcomp and compile XKB keymap, return xkm file name in
+   nameRtrn */
+static Bool
 XkbDDXCompileKeymapByNames(    XkbDescPtr              xkb,
                                XkbComponentNamesPtr    names,
                                unsigned                want,
@@ -183,7 +217,11 @@ XkbDDXCompileKeymapByNames(        XkbDescPtr
                                int                     nameRtrnLen)
 {
     FILE *     out;
-    char       *buf = NULL, keymap[PATH_MAX], xkm_output_dir[PATH_MAX];
+    char *     buf = NULL, xkmfile[PATH_MAX], xkm_output_dir[PATH_MAX];
+    char *     tmpXkmFile = NULL;
+    char *     canonicalXkmFileName = NULL;
+    char       sha1Asc[SHA_DIGEST_LENGTH*2+1], xkbKeyMapBuf[100*1024];
+    int                ret, result;
 
     const char *emptystring = "";
     char *xkbbasedirflag = NULL;
@@ -194,15 +232,70 @@ XkbDDXCompileKeymapByNames(       XkbDescPtr
     /* WIN32 has no popen. The input must be stored in a file which is
        used as input for xkbcomp. xkbcomp does not read from stdin. */
     char tmpname[PATH_MAX];
-    const char *xkmfile = tmpname;
+    const char *xkbfile = tmpname;
 #else
-    const char *xkmfile = "-";
+    const char *xkbfile = "-";
+#endif
+
+    /* Write keymap source (xkbfile) to memory buffer `xkbKeyMapBuf',
+       of which SHA1 is generated and used as result xkm file name  */
+    memset(xkbKeyMapBuf, 0, sizeof(xkbKeyMapBuf));
+    out = fmemopen(xkbKeyMapBuf, sizeof(xkbKeyMapBuf), "w");
+    if (NULL == out) {
+        ErrorF("[xkb] Open xkbKeyMapBuf for writing failed\n");
+        return FALSE;
+    }
+    ret = XkbWriteXKBKeymapForNames(out, names, xkb, want, need);
+    if (fclose(out) !=0)
+    {
+        ErrorF("[xkb] XkbWriteXKBKeymapForNames error, perhaps xkbKeyMapBuf is 
too small\n");
+        return FALSE;
+    }
+#ifdef DEBUG
+    if (xkbDebugFlags) {
+       ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n");
+       fputs(xkbKeyMapBuf, stderr);
+    }
 #endif
+    if (!ret) {
+        ErrorF("[xkb] Generating XKB Keymap failed, giving up compiling 
keymap\n");
+        return FALSE;
+    }
 
-    snprintf(keymap, sizeof(keymap), "server-%s", display);
+    DebugF("[xkb] computing SHA1 of keymap\n");
+    if (Success == Sha1Asc(sha1Asc, xkbKeyMapBuf)) {
+        snprintf(xkmfile, sizeof(xkmfile), "server-%s", sha1Asc);
+    }
+    else {
+        ErrorF("[xkb] Computing SHA1 of keymap failed, "
+               "using display name instead as xkm file name\n");
+        snprintf(xkmfile, sizeof(xkmfile), "server-%s", display);
+    }
 
     OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
 
+    /* set nameRtrn, fail if it's too small */
+    if ((strlen(xkmfile)+1 > nameRtrnLen) && nameRtrn) {
+        ErrorF("[xkb] nameRtrn too small to hold xkmfile name\n");
+        return FALSE;
+    }
+    strncpy(nameRtrn, xkmfile, nameRtrnLen);
+
+    /* if the xkm file already exists, reuse it */
+    canonicalXkmFileName = Xprintf("%s%s.xkm", xkm_output_dir, xkmfile);
+    if (access(canonicalXkmFileName, R_OK) == 0) {
+        /* yes, we can reuse the old xkm file */
+        LogMessage(X_INFO, "XKB: reuse xkmfile %s\n", canonicalXkmFileName);
+        result = TRUE;
+        goto _ret;
+    }
+    LogMessage(X_INFO, "XKB: generating xkmfile %s\n", canonicalXkmFileName);
+
+    /* continue to call xkbcomp to compile the keymap. to avoid race
+       condition, we compile it to a tmpfile then rename it to
+       xkmfile */
+
+
 #ifdef WIN32
     strcpy(tmpname, Win32TempDir());
     strcat(tmpname, "\\xkb_XXXXXX");
@@ -225,14 +318,20 @@ XkbDDXCompileKeymapByNames(       XkbDescPtr
        }
     }
 
+    if ( (tmpXkmFile = tempnam(xkm_output_dir, NULL)) == NULL ) {
+       ErrorF("[xkb] Can't generate temp xkm file name");
+       result = FALSE;
+       goto _ret;
+   }
+
     buf = Xprintf("\"%s%sxkbcomp\" -w %d %s -xkm \"%s\" "
-                 "-em1 %s -emp %s -eml %s \"%s%s.xkm\"",
+                 "-em1 %s -emp %s -eml %s \"%s\"",
                  xkbbindir, xkbbindirsep,
                  ( (xkbDebugFlags < 2) ? 1 :
                    ((xkbDebugFlags > 10) ? 10 : (int)xkbDebugFlags) ),
-                 xkbbasedirflag ? xkbbasedirflag : "", xkmfile,
+                 xkbbasedirflag ? xkbbasedirflag : "", xkbfile,
                  PRE_ERROR_MSG, ERROR_PREFIX, POST_ERROR_MSG1,
-                 xkm_output_dir, keymap);
+                 tmpXkmFile);
 
     free(xkbbasedirflag);
 
@@ -240,7 +339,12 @@ XkbDDXCompileKeymapByNames(        XkbDescPtr
         LogMessage(X_ERROR, "XKB: Could not invoke xkbcomp: not enough 
memory\n");
         return FALSE;
     }
-    
+   
+    /* there's a potential race condition between calling tempnam()
+       and invoking xkbcomp to write the result file (potential temp
+       file name conflicts), but since xkbcomp is a standalone
+       program, we have to live with this */
+ 
 #ifndef WIN32
     out= Popen(buf,"w");
 #else
@@ -248,31 +352,42 @@ XkbDDXCompileKeymapByNames(       XkbDescPtr
 #endif
     
     if (out!=NULL) {
-#ifdef DEBUG
-    if (xkbDebugFlags) {
-       ErrorF("[xkb] XkbDDXCompileKeymapByNames compiling keymap:\n");
-       XkbWriteXKBKeymapForNames(stderr,names,xkb,want,need);
-    }
-#endif
-       XkbWriteXKBKeymapForNames(out,names,xkb,want,need);
+       /* write XKBKeyMapBuf to xkbcomp */
+       if (EOF==fputs(xkbKeyMapBuf, out))
+       {
+           ErrorF("[xkb] Sending keymap to xkbcomp failed\n");
+           result = FALSE;
+           goto _ret;
+       }
 #ifndef WIN32
        if (Pclose(out)==0)
 #else
        if (fclose(out)==0 && System(buf) >= 0)
 #endif
        {
+           /* xkbcomp success */
             if (xkbDebugFlags)
                 DebugF("[xkb] xkb executes: %s\n",buf);
-           if (nameRtrn) {
-               strncpy(nameRtrn,keymap,nameRtrnLen);
-               nameRtrn[nameRtrnLen-1]= '\0';
+           /* if canonicalXkmFileName already exists now, we simply
+              overwrite it, this is OK */
+           ret = rename(tmpXkmFile, canonicalXkmFileName);
+           if (0 != ret) {
+               ErrorF("[xkb] Can't rename %s to %s, error: %s\n",
+                       tmpXkmFile, canonicalXkmFileName,
+                       strerror(errno));
+
+               /* in case of error, don't unlink tmpXkmFile, leave it
+                  for debugging */
+
+               result = FALSE;
+               goto _ret;
            }
-            if (buf != NULL)
-                free(buf);
-           return TRUE;
+
+           result = TRUE;
+           goto _ret;
        }
        else
-           LogMessage(X_ERROR, "Error compiling keymap (%s)\n", keymap);
+           LogMessage(X_ERROR, "Error compiling keymap (%s)\n", xkbfile);
 #ifdef WIN32
         /* remove the temporary file */
         unlink(tmpname);
@@ -289,7 +404,17 @@ XkbDDXCompileKeymapByNames(        XkbDescPtr
        nameRtrn[0]= '\0';
     if (buf != NULL)
         free(buf);
-    return FALSE;
+    result = FALSE;
+
+_ret:
+    if (tmpXkmFile)
+       free(tmpXkmFile);
+    if (canonicalXkmFileName)
+       xfree(canonicalXkmFileName);
+    if (buf != NULL)
+       xfree (buf);
+
+    return result;
 }
 
 static FILE *
@@ -373,7 +498,6 @@ unsigned    missing;
        DebugF("Loaded XKB keymap %s, 
defined=0x%x\n",fileName,(*xkbRtrn)->defined);
     }
     fclose(file);
-    (void) unlink (fileName);
     return (need|want)&(~missing);
 }
 
++++++ b_sync-fix.patch ++++++
Index: xorg-server-1.12.1/Xext/sync.c
===================================================================
--- xorg-server-1.12.1.orig/Xext/sync.c
+++ xorg-server-1.12.1/Xext/sync.c
@@ -2615,9 +2615,43 @@ static XSyncValue *pIdleTimeValueGreater
 static void
 IdleTimeQueryValue(pointer pCounter, CARD64 * pValue_return)
 {
-    CARD32 idle = GetTimeInMillis() - lastDeviceEventTime.milliseconds;
+    static CARD32 previousLastDeviceEventTimeMilliseconds = 0;
+    CARD32        now              = GetTimeInMillis();
+    CARD32        idle             = now - lastDeviceEventTime.milliseconds;
+    CARD32        previousIdle     = now - 
previousLastDeviceEventTimeMilliseconds;
+    SyncCounter  *pIdleTimeCounter = (SyncCounter*)pCounter;
 
     XSyncIntsToValue(pValue_return, idle, 0);
+    if (pCounter == NULL)
+    {
+        return;
+    }
+    if (previousLastDeviceEventTimeMilliseconds == 0)
+    {
+        /* initialize static var when this function is invoked the first time. 
*/
+        previousLastDeviceEventTimeMilliseconds = 
lastDeviceEventTime.milliseconds;
+        return;
+    }
+
+    if (previousLastDeviceEventTimeMilliseconds == 
lastDeviceEventTime.milliseconds)
+    {
+        /* no new user event, no need to change idle counter. */
+        return;
+    }
+   previousLastDeviceEventTimeMilliseconds = lastDeviceEventTime.milliseconds;
+
+    /*
+     * Some user event occured; now update idle counter with previous
+     * event time, so idle counter has the most up-to-date value with
+     * respect to previous user event (we need old and new counter
+     * value to compute if a transition occured).  Recompute bracket
+     * values if this is system counter.
+     */
+
+    XSyncIntsToValue  (&pIdleTimeCounter->value, previousIdle, 0);
+    if (IsSystemCounter(pIdleTimeCounter)) {
+        SyncComputeBracketValues(pIdleTimeCounter);
+    }
 }
 
 static void
@@ -2700,7 +2734,7 @@ IdleTimeWakeupHandler(pointer env, int r
     if (!pIdleTimeValueLess && !pIdleTimeValueGreater)
         return;
 
-    IdleTimeQueryValue(NULL, &idle);
+    IdleTimeQueryValue(IdleTimeCounter, &idle);
 
     if ((pIdleTimeValueGreater &&
          XSyncValueGreaterOrEqual(idle, *pIdleTimeValueGreater)) ||
++++++ n_xorg-x11-server-rpmmacros.patch ++++++
--- /var/tmp/diff_new_pack.2wtqhJ/_old  2013-12-13 12:01:24.000000000 +0100
+++ /var/tmp/diff_new_pack.2wtqhJ/_new  2013-12-13 12:01:24.000000000 +0100
@@ -2,9 +2,10 @@
 ===================================================================
 --- xorg-server-1.12.1.orig/configure.ac
 +++ xorg-server-1.12.1/configure.ac
-@@ -2232,4 +2232,5 @@ test/Makefile
+@@ -2232,5 +2232,6 @@ test/Makefile
  test/xi2/Makefile
  xserver.ent
  xorg-server.pc
 +xorg-x11-server.macros
  ])
+ AC_OUTPUT

++++++ u_confine_to_shape.diff ++++++
--- dix/events.c.orig   2012-04-17 11:34:39.714915372 -0500
+++ dix/events.c        2012-04-17 11:26:54.735728478 -0500
@@ -671,32 +671,77 @@
 {
     BoxRec box;
     int x = *px, y = *py;
-    int incx = 1, incy = 1;
+    int         nbox;
+    BoxPtr      pbox;
+    int                d, min = (~0U >> 1), dx2, dy2, x_r, y_r;
 
     if (RegionContainsPoint(shape, x, y, &box))
         return;
-    box = *RegionExtents(shape);
-    /* this is rather crude */
-    do {
-        x += incx;
-        if (x >= box.x2) {
-            incx = -1;
-            x = *px - 1;
+
+    for (nbox = REGION_NUM_RECTS (shape),
+            pbox = REGION_RECTS(shape);
+         nbox--;
+         pbox++)
+    {
+        if (pbox->x1 < x && pbox->x2 > x) {
+            d = pbox->y1 - y;
+            if (d >= 0) {
+                d *= d;
+                if (d < min) {
+                    *px = x;
+                    *py = pbox->y1 + 1;
+                    min = d;
+                }
+            } else {
+                d = pbox->y2 - y; d *= d;
+                if (d < min) {
+                    *px = x;
+                    *py = pbox->y2 - 1;
+                    min = d;
+                }
+            }
         }
-        else if (x < box.x1) {
-            incx = 1;
-            x = *px;
-            y += incy;
-            if (y >= box.y2) {
-                incy = -1;
-                y = *py - 1;
+        else if (pbox->y1 < y && pbox->y2 > y) {
+            d = pbox->x1 - x;
+            if (d >= 0) {
+                d *= d;
+                if (d < min) {
+                    *px = pbox->x1 + 1;
+                    *py = y;
+                    min = d;
+                }
+            } else {
+                d = pbox->x2 - x; d *= d;               
+                if (d < min) {
+                    *px = pbox->x2 - 1;
+                    *py = y;
+                    min = d;
+                }
+            }
+        } else {
+            dx2 = pbox->x1 - x; 
+            if (dx2 >= 0) {
+                dx2 *= dx2;
+                x_r = pbox->x1 + 1;
+            } else {
+                dx2 = pbox->x2 - x; dx2 *= dx2;
+                x_r = pbox->x2 - 1;
+            }
+            dy2 = pbox->y1 - y; 
+            if (dy2 >= 0) {
+                dy2 *= dy2;
+                y_r = pbox->y1 + 1;
+            } else {
+                dy2 = pbox->y2 - y; dy2 *= dy2;
+                y_r = pbox->y2 - 1;
+            }
+            if ((d = dx2 + dy2) < min) {
+                *px = x_r;
+                *py = y_r;
+                min = d;
             }
-            else if (y < box.y1)
-                return;         /* should never get here! */
         }
-    } while (!RegionContainsPoint(shape, x, y, &box));
-    *px = x;
-    *py = y;
+    }
 }
 
 static void
++++++ u_fbdevhw.diff ++++++
Index: hw/xfree86/fbdevhw/fbdevhw.c
===================================================================
--- hw/xfree86/fbdevhw/fbdevhw.c.orig
+++ hw/xfree86/fbdevhw/fbdevhw.c
@@ -858,9 +858,10 @@ fbdevHWDPMSSet(ScrnInfoPtr pScrn, int mo
         return;
     }
 
+    /* Novell Bug #146462 */
     if (-1 == ioctl(fPtr->fd, FBIOBLANK, (void *) fbmode))
-        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                   "FBIOBLANK: %s\n", strerror(errno));
+        xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                   "FBIOBLANK: %s (Screen blanking not supported by vesafb of 
Linux Kernel)\n", strerror(errno));
 }
 
 Bool
@@ -875,9 +876,10 @@ fbdevHWSaveScreen(ScreenPtr pScreen, int
 
     unblank = xf86IsUnblank(mode);
 
+    /* Novell Bug #146462 */
     if (-1 == ioctl(fPtr->fd, FBIOBLANK, (void *) (1 - unblank))) {
-        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                   "FBIOBLANK: %s\n", strerror(errno));
+        xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                   "FBIOBLANK: %s (Screen blanking not supported by vesafb of 
Linux Kernel)\n", strerror(errno));
         return FALSE;
     }
 
++++++ u_x86emu-include-order.patch ++++++
Subject: [PATCH] Change include order to avoid conflict with system header
From: Andreas Schwab <[email protected]>

R_SP is also defined in <sys/ucontext.h> on m68k.
Also remove duplicate definitions.

Signed-off-by: Andreas Schwab <[email protected]>

Index: xorg-server-1.14.3/hw/xfree86/int10/xf86x86emu.c
===================================================================
--- xorg-server-1.14.3.orig/hw/xfree86/int10/xf86x86emu.c
+++ xorg-server-1.14.3/hw/xfree86/int10/xf86x86emu.c
@@ -7,7 +7,6 @@
 #include <xorg-config.h>
 #endif
 
-#include <x86emu.h>
 #include "xf86.h"
 #include "compiler.h"
 #include "xf86_OSproc.h"
@@ -15,6 +14,7 @@
 #define _INT10_PRIVATE
 #include "xf86int10.h"
 #include "int10Defines.h"
+#include <x86emu.h>
 
 #define M _X86EMU_env
 
Index: xorg-server-1.14.3/hw/xfree86/x86emu/x86emu/regs.h
===================================================================
--- xorg-server-1.14.3.orig/hw/xfree86/x86emu/x86emu/regs.h
+++ xorg-server-1.14.3/hw/xfree86/x86emu/x86emu/regs.h
@@ -147,14 +147,6 @@ struct i386_segment_regs {
 #define R_FLG spc.FLAGS
 
 /* special registers */
-#define R_SP  spc.SP.I16_reg.x_reg
-#define R_BP  spc.BP.I16_reg.x_reg
-#define R_SI  spc.SI.I16_reg.x_reg
-#define R_DI  spc.DI.I16_reg.x_reg
-#define R_IP  spc.IP.I16_reg.x_reg
-#define R_FLG spc.FLAGS
-
-/* special registers */
 #define R_ESP  spc.SP.I32_reg.e_reg
 #define R_EBP  spc.BP.I32_reg.e_reg
 #define R_ESI  spc.SI.I32_reg.e_reg
++++++ u_xorg-server-xdmcp.patch ++++++
Index: xorg-server-1.12.1/os/access.c
===================================================================
--- xorg-server-1.12.1.orig/os/access.c
+++ xorg-server-1.12.1/os/access.c
@@ -714,7 +714,9 @@ DefineSelf(int fd)
 
             /* 
              * ignore 'localhost' entries as they're not useful
-             * on the other end of the wire
+             * on the other end of the wire and because on hosts
+            * with shared home dirs they'll result in conflicting
+            * entries in ~/.Xauthority
              */
             if (ifr->ifa_flags & IFF_LOOPBACK)
                 continue;
@@ -735,6 +737,14 @@ DefineSelf(int fd)
             else if (family == FamilyInternet6 &&
                      IN6_IS_ADDR_LOOPBACK((struct in6_addr *) addr))
                 continue;
+
+           /* Ignore IPv6 link local addresses (fe80::/10), because
+            * they need a scope identifier, which we have no way
+            * of telling to the other end.
+            */
+           if (family == FamilyInternet6 &&
+                           IN6_IS_ADDR_LINKLOCAL((struct in6_addr *)addr))
+                   continue;
 #endif
             XdmcpRegisterConnection(family, (char *) addr, len);
 #if defined(IPv6) && defined(AF_INET6)
++++++ ux_xserver_xvfb-randr.patch ++++++
Author: Lambros Lambrou <[email protected]>
Subject: xvfb: add randr support
Patch-Mainline: To be upstreamed
References: bnc#823410 fdo#26391
Signed-off-by: Michal Srb <[email protected]>

--- a/hw/vfb/InitOutput.c
+++ b/hw/vfb/InitOutput.c
@@ -66,6 +66,7 @@
 #include "dix.h"
 #include "miline.h"
 #include "glx_extinit.h"
+#include "randrstr.h"
 
 #define VFB_DEFAULT_WIDTH      1280
 #define VFB_DEFAULT_HEIGHT     1024
@@ -812,6 +813,165 @@
 }
 
 static Bool
+vfbRROutputValidateMode(ScreenPtr           pScreen,
+                        RROutputPtr         output,
+                        RRModePtr           mode)
+{
+    rrScrPriv(pScreen);
+
+    if (pScrPriv->minWidth <= mode->mode.width &&
+        pScrPriv->maxWidth >= mode->mode.width &&
+        pScrPriv->minHeight <= mode->mode.height &&
+        pScrPriv->maxHeight >= mode->mode.height)
+        return TRUE;
+    else
+        return FALSE;
+}
+
+static Bool
+vfbRRScreenSetSize(ScreenPtr  pScreen,
+                   CARD16     width,
+                   CARD16     height,
+                   CARD32     mmWidth,
+                   CARD32     mmHeight)
+{
+    WindowPtr root = pScreen->root;
+    WindowPtr layer;
+    WindowPtr child;
+    BoxRec box;
+
+    pScreen->width = width;
+    pScreen->height = height;
+    pScreen->mmWidth = mmWidth;
+    pScreen->mmHeight = mmHeight;
+
+    // Resize the root window & adjust its clipping
+    box.x1 = 0;
+    box.y1 = 0;
+    box.x2 = pScreen->width;
+    box.y2 = pScreen->height;
+    REGION_INIT(pScreen, &root->winSize, &box, 1);
+    REGION_INIT(pScreen, &root->borderSize, &box, 1);
+    REGION_RESET(pScreen, &root->borderClip, &box);
+    root->drawable.width = pScreen->width;
+    root->drawable.height = pScreen->height;
+    REGION_BREAK (pScreen, &root->clipList);
+
+    // Update the clipping regions of all windows
+    for (child = root->firstChild; child; child = child->nextSib)
+        (*pScreen->MarkOverlappedWindows)(child, child, &layer);
+
+    if (root->firstChild)
+    {
+        (*pScreen->MarkOverlappedWindows)(root->firstChild,
+                                          root->firstChild,
+                                          (WindowPtr *)NULL);
+    }
+    else
+    {
+        (*pScreen->MarkWindow) (root);
+    }
+
+    (*pScreen->ValidateTree)(root, NullWindow, VTOther);
+    (*pScreen->HandleExposures)(root);
+
+    // Reposition top-level windows to fit new root size
+    // XXX I assume this is what it does, but I'm not sure
+    ResizeChildrenWinSize (root, 0, 0, 0, 0);
+
+
+    // Check the pointer position
+    WindowsRestructured ();
+
+    RRScreenSizeNotify (pScreen);
+    RRTellChanged(pScreen);
+
+    // Flush resulting events, etc to clients
+    FlushAllOutput ();
+
+    return TRUE;
+}
+
+static Bool
+vfbRRCrtcSet(ScreenPtr pScreen,
+             RRCrtcPtr crtc,
+             RRModePtr mode,
+             int       x,
+             int       y,
+             Rotation  rotation,
+             int       numOutput,
+             RROutputPtr *outputs)
+{
+  return RRCrtcNotify(crtc, mode, x, y, rotation, NULL, numOutput, outputs);
+}
+
+static Bool
+vfbRRGetInfo(ScreenPtr pScreen, Rotation *rotations)
+{
+    return TRUE;
+}
+
+static Bool
+vfbRandRInit(ScreenPtr pScreen)
+{
+    rrScrPrivPtr pScrPriv;
+#if RANDR_12_INTERFACE
+    RRModePtr  mode;
+    RRCrtcPtr  crtc;
+    RROutputPtr        output;
+    xRRModeInfo modeInfo;
+    char       name[64];
+#endif
+
+    if (!RRScreenInit (pScreen))
+       return FALSE;
+    pScrPriv = rrGetScrPriv(pScreen);
+    pScrPriv->rrGetInfo = vfbRRGetInfo;
+#if RANDR_12_INTERFACE
+    pScrPriv->rrCrtcSet = vfbRRCrtcSet;
+    pScrPriv->rrScreenSetSize = vfbRRScreenSetSize;
+    pScrPriv->rrOutputSetProperty = NULL;
+#if RANDR_13_INTERFACE
+    pScrPriv->rrOutputGetProperty = NULL;
+#endif
+    pScrPriv->rrOutputValidateMode = vfbRROutputValidateMode;
+    pScrPriv->rrModeDestroy = NULL;
+
+    RRScreenSetSizeRange (pScreen,
+                         1, 1,
+                         pScreen->width, pScreen->height);
+
+    sprintf (name, "%dx%d", pScreen->width, pScreen->height);
+    memset (&modeInfo, '\0', sizeof (modeInfo));
+    modeInfo.width = pScreen->width;
+    modeInfo.height = pScreen->height;
+    modeInfo.nameLength = strlen (name);
+
+    mode = RRModeGet (&modeInfo, name);
+    if (!mode)
+       return FALSE;
+
+    crtc = RRCrtcCreate (pScreen, NULL);
+    if (!crtc)
+       return FALSE;
+
+    output = RROutputCreate (pScreen, "screen", 6, NULL);
+    if (!output)
+       return FALSE;
+    if (!RROutputSetClones (output, NULL, 0))
+       return FALSE;
+    if (!RROutputSetModes (output, &mode, 1, 0))
+       return FALSE;
+    if (!RROutputSetCrtcs (output, &crtc, 1))
+       return FALSE;
+    if (!RROutputSetConnection (output, RR_Connected))
+       return FALSE;
+    RRCrtcNotify (crtc, mode, 0, 0, RR_Rotate_0, NULL, 1, &output);
+#endif
+    return TRUE;
+}
+
+static Bool
 vfbScreenInit(ScreenPtr pScreen, int argc, char **argv)
 {
     vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum];
@@ -885,6 +1045,9 @@
     if (!ret)
         return FALSE;
 
+    if (!vfbRandRInit(pScreen))
+       return FALSE;
+
     pScreen->InstallColormap = vfbInstallColormap;
     pScreen->UninstallColormap = vfbUninstallColormap;
     pScreen->ListInstalledColormaps = vfbListInstalledColormaps;
++++++ xorg-server-1.14.3.901.tar.bz2 -> xorg-server-1.14.99.904.tar.bz2 ++++++
++++ 170420 lines of diff (skipped)

++++++ xorg-server-provides ++++++
--- /var/tmp/diff_new_pack.2wtqhJ/_old  2013-12-13 12:01:28.000000000 +0100
+++ /var/tmp/diff_new_pack.2wtqhJ/_new  2013-12-13 12:01:28.000000000 +0100
@@ -1,4 +1,4 @@
-Provides: X11_ABI_XINPUT = 19.1
-Provides: X11_ABI_VIDEODRV = 14.1
+Provides: X11_ABI_XINPUT = 20.0
+Provides: X11_ABI_VIDEODRV = 15.0
 Provides: X11_ABI_ANSIC = 0.4
-Provides: X11_ABI_EXTENSION = 7.0
+Provides: X11_ABI_EXTENSION = 8.0

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

Reply via email to