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]
