diff -Nru xorg-server-1.18.3/aclocal.m4 xorg-server-1.18.4/aclocal.m4 --- xorg-server-1.18.3/aclocal.m4 2016-04-04 18:39:48.000000000 +0000 +++ xorg-server-1.18.4/aclocal.m4 2016-07-19 17:27:24.000000000 +0000 @@ -410,32 +410,63 @@ AC_DEFUN([XORG_FONTDIR],[XORG_FONTSUBDIR([FONTDIR], [fontdir], [$1])]) -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 1 (pkg-config-0.24) -# -# Copyright © 2004 Scott James Remnant . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# PKG_PROG_PKG_CONFIG([MIN-VERSION]) -# ---------------------------------- +dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +dnl serial 11 (pkg-config-0.29) +dnl +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) @@ -457,18 +488,19 @@ PKG_CONFIG="" fi fi[]dnl -])# PKG_PROG_PKG_CONFIG +])dnl PKG_PROG_PKG_CONFIG -# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -# Check to see whether a particular set of modules exists. Similar -# to PKG_CHECK_MODULES(), but does not set variables or print errors. -# -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -# only at the first occurence in configure.ac, so if the first place -# it's called might be skipped (such as if it is within an "if", you -# have to call PKG_CHECK_EXISTS manually -# -------------------------------------------------------------- +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ @@ -478,8 +510,10 @@ $3])dnl fi]) -# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -# --------------------------------------------- +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" @@ -491,10 +525,11 @@ else pkg_failed=untried fi[]dnl -])# _PKG_CONFIG +])dnl _PKG_CONFIG -# _PKG_SHORT_ERRORS_SUPPORTED -# ----------------------------- +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -502,19 +537,17 @@ else _pkg_short_errors_supported=no fi[]dnl -])# _PKG_SHORT_ERRORS_SUPPORTED +])dnl _PKG_SHORT_ERRORS_SUPPORTED -# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -# [ACTION-IF-NOT-FOUND]) -# -# -# Note that if there is a possibility the first call to -# PKG_CHECK_MODULES might not happen, you should be sure to include an -# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac -# -# -# -------------------------------------------------------------- +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl @@ -568,16 +601,40 @@ AC_MSG_RESULT([yes]) $3 fi[]dnl -])# PKG_CHECK_MODULES +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC -# PKG_INSTALLDIR(DIRECTORY) -# ------------------------- -# Substitutes the variable pkgconfigdir as the location where a module -# should install pkg-config .pc files. By default the directory is -# $libdir/pkgconfig, but the default can be changed by passing -# DIRECTORY. The user can override through the --with-pkgconfigdir -# parameter. +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], @@ -588,16 +645,18 @@ AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) -]) dnl PKG_INSTALLDIR +])dnl PKG_INSTALLDIR -# PKG_NOARCH_INSTALLDIR(DIRECTORY) -# ------------------------- -# Substitutes the variable noarch_pkgconfigdir as the location where a -# module should install arch-independent pkg-config .pc files. By -# default the directory is $datadir/pkgconfig, but the default can be -# changed by passing DIRECTORY. The user can override through the -# --with-noarch-pkgconfigdir parameter. +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], @@ -608,13 +667,15 @@ AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) -]) dnl PKG_NOARCH_INSTALLDIR +])dnl PKG_NOARCH_INSTALLDIR -# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, -# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# ------------------------------------------- -# Retrieves the value of the pkg-config variable for the given module. +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl @@ -623,7 +684,7 @@ AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl -])# PKG_CHECK_VAR +])dnl PKG_CHECK_VAR dnl xorg-macros.m4. Generated from xorg-macros.m4.in xorgversion.m4 by configure. dnl diff -Nru xorg-server-1.18.3/composite/Makefile.in xorg-server-1.18.4/composite/Makefile.in --- xorg-server-1.18.3/composite/Makefile.in 2016-04-04 18:39:50.000000000 +0000 +++ xorg-server-1.18.4/composite/Makefile.in 2016-07-19 17:27:25.000000000 +0000 @@ -231,6 +231,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -463,6 +465,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/config/Makefile.in xorg-server-1.18.4/config/Makefile.in --- xorg-server-1.18.3/config/Makefile.in 2016-04-04 18:39:50.000000000 +0000 +++ xorg-server-1.18.4/config/Makefile.in 2016-07-19 17:27:25.000000000 +0000 @@ -251,6 +251,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -483,6 +485,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/configure xorg-server-1.18.4/configure --- xorg-server-1.18.3/configure 2016-04-04 18:40:00.000000000 +0000 +++ xorg-server-1.18.4/configure 2016-07-19 17:27:31.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for xorg-server 1.18.3. +# Generated by GNU Autoconf 2.69 for xorg-server 1.18.4. # # Report bugs to . # @@ -651,8 +651,8 @@ # Identity of this package. PACKAGE_NAME='xorg-server' PACKAGE_TARNAME='xorg-server' -PACKAGE_VERSION='1.18.3' -PACKAGE_STRING='xorg-server 1.18.3' +PACKAGE_VERSION='1.18.4' +PACKAGE_STRING='xorg-server 1.18.4' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg' PACKAGE_URL='' @@ -1047,7 +1047,10 @@ SECURE_RPC_TRUE INSTALL_SETUID_FALSE INSTALL_SETUID_TRUE +XQUARTZ_SPARKLE_FEED_URL XQUARTZ_SPARKLE +BUNDLE_VERSION_STRING +BUNDLE_VERSION BUNDLE_ID_PREFIX APPLE_APPLICATION_NAME APPLE_APPLICATIONS_DIR @@ -1325,9 +1328,11 @@ with_serverconfig_path with_apple_applications_dir with_apple_application_name -with_launchd_id_prefix with_bundle_id_prefix +with_bundle_version +with_bundle_version_string enable_sparkle +with_sparkle_feed_url enable_visibility enable_aiglx with_khronos_spec_dir @@ -2042,7 +2047,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures xorg-server 1.18.3 to adapt to many kinds of systems. +\`configure' configures xorg-server 1.18.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2112,7 +2117,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xorg-server 1.18.3:";; + short | recursive ) echo "Configuration of xorg-server 1.18.4:";; esac cat <<\_ACEOF @@ -2303,11 +2308,18 @@ /Applications/Utilities) --with-apple-application-name=NAME Name for the .app (default: X11) - --with-launchd-id-prefix=PATH - Deprecated: Use --with-bundle-id-prefix. - --with-bundle-id-prefix=PATH + --with-bundle-id-prefix=RDNS_PREFIX Prefix to use for bundle identifiers (default: org.x) + --with-bundle-version=VERSION + Version to use for X11.app's CFBundleVersion + (default: 1.18.4) + --with-bundle-version-string=VERSION + Version to use for X11.app's + CFBundleShortVersionString (default: 1.18.4) + --with-sparkle-feed-url=URL + URL for the Sparkle feed (default: + https://www.xquartz.org/releases/sparkle/release.xml) --with-khronos-spec-dir=PATH Path to Khronos OpenGL registry database files (default: auto) @@ -2557,7 +2569,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -xorg-server configure 1.18.3 +xorg-server configure 1.18.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3266,7 +3278,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by xorg-server $as_me 1.18.3, which was +It was created by xorg-server $as_me 1.18.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3614,8 +3626,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -RELEASE_DATE="2016-04-04" -RELEASE_NAME="Halloumi" +RELEASE_DATE="2016-07-19" +RELEASE_NAME="Skordalia" am__api_version='1.15' @@ -4133,7 +4145,7 @@ # Define the identity of the package. PACKAGE='xorg-server' - VERSION='1.18.3' + VERSION='1.18.4' cat >>confdefs.h <<_ACEOF @@ -23690,14 +23702,6 @@ -# Check whether --with-launchd-id-prefix was given. -if test "${with_launchd_id_prefix+set}" = set; then : - withval=$with_launchd_id_prefix; BUNDLE_ID_PREFIX="${withval}" -else - BUNDLE_ID_PREFIX="org.x" -fi - - # Check whether --with-bundle-id-prefix was given. if test "${with_bundle_id_prefix+set}" = set; then : withval=$with_bundle_id_prefix; BUNDLE_ID_PREFIX="${withval}" @@ -23709,6 +23713,25 @@ #define BUNDLE_ID_PREFIX "$BUNDLE_ID_PREFIX" _ACEOF + + +# Check whether --with-bundle-version was given. +if test "${with_bundle_version+set}" = set; then : + withval=$with_bundle_version; BUNDLE_VERSION="${withval}" +else + BUNDLE_VERSION="1.18.4" +fi + + + +# Check whether --with-bundle-version-string was given. +if test "${with_bundle_version_string+set}" = set; then : + withval=$with_bundle_version_string; BUNDLE_VERSION_STRING="${withval}" +else + BUNDLE_VERSION_STRING="${PACKAGE_VERSION}" +fi + + # Check whether --enable-sparkle was given. if test "${enable_sparkle+set}" = set; then : enableval=$enable_sparkle; XQUARTZ_SPARKLE="${enableval}" @@ -23717,6 +23740,15 @@ fi + +# Check whether --with-sparkle-feed-url was given. +if test "${with_sparkle_feed_url+set}" = set; then : + withval=$with_sparkle_feed_url; XQUARTZ_SPARKLE_FEED_URL="${withval}" +else + XQUARTZ_SPARKLE_FEED_URL="https://www.xquartz.org/releases/sparkle/release.xml" +fi + + # Check whether --enable-visibility was given. if test "${enable_visibility+set}" = set; then : enableval=$enable_visibility; SYMBOL_VISIBILITY=$enableval @@ -25232,7 +25264,7 @@ fi SAVE_LIBS=$LIBS SAVE_CFLAGS=$CFLAGS - CFLAGS=$UDEV_CFLAGS + CFLAGS="$CFLAGS $UDEV_CFLAGS" LIBS=$UDEV_LIBS for ac_func in udev_monitor_filter_add_match_tag do : @@ -26420,7 +26452,7 @@ if test "x$DRI2" = xyes; then save_CFLAGS=$CFLAGS - CFLAGS="$GL_CFLAGS $LIBDRM_CFLAGS" + CFLAGS="$CFLAGS $GL_CFLAGS $LIBDRM_CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -33099,7 +33131,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by xorg-server $as_me 1.18.3, which was +This file was extended by xorg-server $as_me 1.18.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -33165,7 +33197,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -xorg-server config.status 1.18.3 +xorg-server config.status 1.18.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru xorg-server-1.18.3/configure.ac xorg-server-1.18.4/configure.ac --- xorg-server-1.18.3/configure.ac 2016-04-04 18:36:43.000000000 +0000 +++ xorg-server-1.18.4/configure.ac 2016-07-19 17:27:07.000000000 +0000 @@ -26,9 +26,9 @@ dnl Process this file with autoconf to create configure. AC_PREREQ(2.60) -AC_INIT([xorg-server], 1.18.3, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2016-04-04" -RELEASE_NAME="Halloumi" +AC_INIT([xorg-server], 1.18.4, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2016-07-19" +RELEASE_NAME="Skordalia" AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) @@ -555,17 +555,27 @@ [ APPLE_APPLICATION_NAME="${withval}" ], [ APPLE_APPLICATION_NAME="X11" ]) AC_SUBST([APPLE_APPLICATION_NAME]) -AC_ARG_WITH(launchd-id-prefix, AS_HELP_STRING([--with-launchd-id-prefix=PATH], [Deprecated: Use --with-bundle-id-prefix.]), - [ BUNDLE_ID_PREFIX="${withval}" ], - [ BUNDLE_ID_PREFIX="org.x" ]) -AC_ARG_WITH(bundle-id-prefix, AS_HELP_STRING([--with-bundle-id-prefix=PATH], [Prefix to use for bundle identifiers (default: org.x)]), +AC_ARG_WITH(bundle-id-prefix, AS_HELP_STRING([--with-bundle-id-prefix=RDNS_PREFIX], [Prefix to use for bundle identifiers (default: org.x)]), [ BUNDLE_ID_PREFIX="${withval}" ]) AC_SUBST([BUNDLE_ID_PREFIX]) AC_DEFINE_UNQUOTED(BUNDLE_ID_PREFIX, "$BUNDLE_ID_PREFIX", [Prefix to use for bundle identifiers]) +m4_define(DEFAULT_BUNDLE_VERSION, m4_esyscmd([echo ]AC_PACKAGE_VERSION[ | cut -f1-3 -d. | tr -d '\n'])) +AC_ARG_WITH(bundle-version, AS_HELP_STRING([--with-bundle-version=VERSION], [Version to use for X11.app's CFBundleVersion (default: ]DEFAULT_BUNDLE_VERSION[)]), + [ BUNDLE_VERSION="${withval}" ], + [ BUNDLE_VERSION="DEFAULT_BUNDLE_VERSION" ]) +AC_SUBST([BUNDLE_VERSION]) +AC_ARG_WITH(bundle-version-string, AS_HELP_STRING([--with-bundle-version-string=VERSION], [Version to use for X11.app's CFBundleShortVersionString (default: ]AC_PACKAGE_VERSION[)]), + [ BUNDLE_VERSION_STRING="${withval}" ], + [ BUNDLE_VERSION_STRING="${PACKAGE_VERSION}" ]) +AC_SUBST([BUNDLE_VERSION_STRING]) AC_ARG_ENABLE(sparkle,AS_HELP_STRING([--enable-sparkle], [Enable updating of X11.app using the Sparkle Framework (default: disabled)]), [ XQUARTZ_SPARKLE="${enableval}" ], [ XQUARTZ_SPARKLE="no" ]) AC_SUBST([XQUARTZ_SPARKLE]) +AC_ARG_WITH(sparkle-feed-url, AS_HELP_STRING([--with-sparkle-feed-url=URL], [URL for the Sparkle feed (default: https://www.xquartz.org/releases/sparkle/release.xml)]), + [ XQUARTZ_SPARKLE_FEED_URL="${withval}" ], + [ XQUARTZ_SPARKLE_FEED_URL="https://www.xquartz.org/releases/sparkle/release.xml" ]) +AC_SUBST([XQUARTZ_SPARKLE_FEED_URL]) AC_ARG_ENABLE(visibility, AS_HELP_STRING([--enable-visibility], [Enable symbol visibility (default: auto)]), [SYMBOL_VISIBILITY=$enableval], [SYMBOL_VISIBILITY=auto]) @@ -880,7 +890,7 @@ fi SAVE_LIBS=$LIBS SAVE_CFLAGS=$CFLAGS - CFLAGS=$UDEV_CFLAGS + CFLAGS="$CFLAGS $UDEV_CFLAGS" LIBS=$UDEV_LIBS AC_CHECK_FUNCS([udev_monitor_filter_add_match_tag]) AC_CHECK_FUNCS([udev_enumerate_add_match_tag]) @@ -1293,7 +1303,7 @@ if test "x$DRI2" = xyes; then save_CFLAGS=$CFLAGS - CFLAGS="$GL_CFLAGS $LIBDRM_CFLAGS" + CFLAGS="$CFLAGS $GL_CFLAGS $LIBDRM_CFLAGS" AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include #include #ifndef __DRI_DRI2 diff -Nru xorg-server-1.18.3/damageext/Makefile.in xorg-server-1.18.4/damageext/Makefile.in --- xorg-server-1.18.3/damageext/Makefile.in 2016-04-04 18:39:50.000000000 +0000 +++ xorg-server-1.18.4/damageext/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -198,6 +198,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -430,6 +432,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/dbe/Makefile.in xorg-server-1.18.4/dbe/Makefile.in --- xorg-server-1.18.3/dbe/Makefile.in 2016-04-04 18:39:50.000000000 +0000 +++ xorg-server-1.18.4/dbe/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -230,6 +230,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -462,6 +464,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/debian/changelog xorg-server-1.18.4/debian/changelog --- xorg-server-1.18.3/debian/changelog 2017-07-17 17:03:32.000000000 +0000 +++ xorg-server-1.18.4/debian/changelog 2017-07-17 17:03:33.000000000 +0000 @@ -1,3 +1,79 @@ +xorg-server (2:1.18.4-0ubuntu0.3) xenial-security; urgency=medium + + * SECURITY UPDATE: DoS and possible code execution in endianness + conversion of X Events + - debian/patches/CVE-2017-10971-1.patch: do not try to swap + GenericEvent in Xi/sendexev.c. + - debian/patches/CVE-2017-10971-2.patch: verify all events in + ProcXSendExtensionEvent in Xi/sendexev.c. + - debian/patches/CVE-2017-10971-3.patch: disallow GenericEvent in + SendEvent request in dix/events.c, dix/swapreq.c. + - CVE-2017-10971 + * SECURITY UPDATE: information leak in XEvent handling + - debian/patches/CVE-2017-10972.patch: zero target buffer in + SProcXSendExtensionEvent in Xi/sendexev.c. + - CVE-2017-10972 + * SECURITY UPDATE: MIT-MAGIC-COOKIES timing attack + - debian/patches/CVE-2017-2624.patch: use timingsafe_memcmp() in + configure.ac, include/dix-config.h.in, include/os.h, + os/mitauth.c, os/timingsafe_memcmp.c. + - CVE-2017-2624 + + -- Marc Deslauriers Mon, 17 Jul 2017 09:38:58 -0400 + +xorg-server (2:1.18.4-0ubuntu0.2) xenial; urgency=medium + + * modesetting-unifdef-slave-support.diff: Fix modesetting slave output + names. (LP: #1636397) + + -- Timo Aaltonen Tue, 01 Nov 2016 10:08:51 +0200 + +xorg-server (2:1.18.4-0ubuntu0.1) xenial; urgency=medium + + * New upstream bugfix release. (LP: #1619142) + * randr-adjust-masters-last-set-time.diff, + randr-do-not-check-the-screen-size.diff: + Fix issues changing display mode on prime setups. (LP: #1586260) + * os-treat-ssh-as-a-non-local-client.diff: Dropped, upstream. + * drm_device_keep_trying.patch: Dropped, shouldn't be needed anymore, + and causes issues on non-x86 archs. (LP: #1581076) + * debian/patches/xmir.patch: backport XMir fixes from Ubuntu "Yakkety Yak" + - fix button/menu focus failures (lp: #1590553) + - ignore 'unnkown 11 event' (lp: #1617925) + - don't call epoxy every frame (lp: #1617932) + - fix unclickable parts of the screen after rotation (lp: #1613708) + - fix key repeat issues (lp: #1591356) + + -- Timo Aaltonen Thu, 01 Sep 2016 10:28:26 +0300 + +xorg-server (2:1.18.3-1ubuntu2.3) xenial; urgency=medium + + [ Timo Aaltonen ] + * control: Add Conflicts/Replaces on xserver-xorg-video-glamoregl. + (LP: #1574320) + + [ Łukasz 'sil2100' Zemczak ] + * debian/control, debian/rules: + - Build xmir for arm64 (LP: #1604851). + + -- Timo Aaltonen Thu, 21 Jul 2016 08:27:07 +0300 + +xorg-server (2:1.18.3-1ubuntu2.2) xenial; urgency=medium + + * debian/patches/xmir.patch: + - Fix recently added keymap code + * debian/patches/xmir-fixes.diff: + - Merged into xmir.patch + + -- Robert Ancell Wed, 04 May 2016 12:19:14 +1200 + +xorg-server (2:1.18.3-1ubuntu2.1) xenial; urgency=medium + + * debian/patches/xmir.patch: + - Pass keymap from Mir to Xkb (LP: #1566487) + + -- Robert Ancell Fri, 29 Apr 2016 15:43:38 +0200 + xorg-server (2:1.18.3-1ubuntu2) xenial; urgency=medium * Disable 190_cache-xkbcomp_output_for_fast_start_up.patch for now, diff -Nru xorg-server-1.18.3/debian/control xorg-server-1.18.4/debian/control --- xorg-server-1.18.3/debian/control 2017-07-17 17:03:32.000000000 +0000 +++ xorg-server-1.18.4/debian/control 2017-07-17 17:03:33.000000000 +0000 @@ -103,7 +103,7 @@ # systemd-daemon libsystemd-dev [linux-any], # XMir - libmirclient-dev (>= 0.13.1) [!arm64 !powerpc !ppc64el !s390x], + libmirclient-dev (>= 0.13.1) [!powerpc !ppc64el !s390x], mir-client-platform-mesa-dev, Standards-Version: 3.9.6 Vcs-Git: https://anonscm.debian.org/git/pkg-xorg/xserver/xorg-server.git @@ -156,10 +156,12 @@ xserver-xorg (<< 1:7.7+10~), systemd (<< 226-4~), Replaces: + xserver-xorg-video-glamoregl, xserver-xorg-video-modesetting, xserver-xorg (<< 1:7.7+10~), Conflicts: xserver-xorg-input-evtouch, + xserver-xorg-video-glamoregl, xserver-xorg-video-modesetting, Provides: ${videoabi}, @@ -222,7 +224,7 @@ libxkbfile-dev, libpciaccess-dev, mesa-common-dev, - libmirclient-dev [!arm64 !powerpc !ppc64el], + libmirclient-dev [!powerpc !ppc64el], mir-client-platform-mesa-dev, ${misc:Depends}, Description: Xorg X server - development files @@ -382,7 +384,7 @@ This package provides files necessary for all X.Org based X servers. Package: xmir -Architecture: amd64 armhf i386 +Architecture: amd64 arm64 armhf i386 Depends: xserver-common (>= ${source:Version}), ${shlibs:Depends}, diff -Nru xorg-server-1.18.3/debian/patches/CVE-2017-10971-1.patch xorg-server-1.18.4/debian/patches/CVE-2017-10971-1.patch --- xorg-server-1.18.3/debian/patches/CVE-2017-10971-1.patch 1970-01-01 00:00:00.000000000 +0000 +++ xorg-server-1.18.4/debian/patches/CVE-2017-10971-1.patch 2017-07-17 17:03:33.000000000 +0000 @@ -0,0 +1,41 @@ +From ba336b24052122b136486961c82deac76bbde455 Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Wed, 24 May 2017 15:54:42 +0300 +Subject: Xi: Do not try to swap GenericEvent. + +The SProcXSendExtensionEvent must not attempt to swap GenericEvent because +it is assuming that the event has fixed size and gives the swapping function +xEvent-sized buffer. + +A GenericEvent would be later rejected by ProcXSendExtensionEvent anyway. + +Signed-off-by: Michal Srb +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer + +diff --git a/Xi/sendexev.c b/Xi/sendexev.c +index 5e63bfc..5c2e0fc 100644 +--- a/Xi/sendexev.c ++++ b/Xi/sendexev.c +@@ -95,9 +95,17 @@ SProcXSendExtensionEvent(ClientPtr client) + + eventP = (xEvent *) &stuff[1]; + for (i = 0; i < stuff->num_events; i++, eventP++) { ++ if (eventP->u.u.type == GenericEvent) { ++ client->errorValue = eventP->u.u.type; ++ return BadValue; ++ } ++ + proc = EventSwapVector[eventP->u.u.type & 0177]; +- if (proc == NotImplemented) /* no swapping proc; invalid event type? */ ++ /* no swapping proc; invalid event type? */ ++ if (proc == NotImplemented) { ++ client->errorValue = eventP->u.u.type; + return BadValue; ++ } + (*proc) (eventP, &eventT); + *eventP = eventT; + } +-- +cgit v0.10.2 + diff -Nru xorg-server-1.18.3/debian/patches/CVE-2017-10971-2.patch xorg-server-1.18.4/debian/patches/CVE-2017-10971-2.patch --- xorg-server-1.18.3/debian/patches/CVE-2017-10971-2.patch 1970-01-01 00:00:00.000000000 +0000 +++ xorg-server-1.18.4/debian/patches/CVE-2017-10971-2.patch 2017-07-17 17:03:33.000000000 +0000 @@ -0,0 +1,43 @@ +From 8caed4df36b1f802b4992edcfd282cbeeec35d9d Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Wed, 24 May 2017 15:54:41 +0300 +Subject: Xi: Verify all events in ProcXSendExtensionEvent. + +The requirement is that events have type in range +EXTENSION_EVENT_BASE..lastEvent, but it was tested +only for first event of all. + +Signed-off-by: Michal Srb +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer + +Index: xorg-server-1.19.3/Xi/sendexev.c +=================================================================== +--- xorg-server-1.19.3.orig/Xi/sendexev.c 2017-07-17 09:33:47.024571967 -0400 ++++ xorg-server-1.19.3/Xi/sendexev.c 2017-07-17 09:33:47.024571967 -0400 +@@ -125,7 +125,7 @@ SProcXSendExtensionEvent(ClientPtr clien + int + ProcXSendExtensionEvent(ClientPtr client) + { +- int ret; ++ int ret, i; + DeviceIntPtr dev; + xEvent *first; + XEventClass *list; +@@ -149,10 +149,12 @@ ProcXSendExtensionEvent(ClientPtr client + /* The client's event type must be one defined by an extension. */ + + first = ((xEvent *) &stuff[1]); +- if (!((EXTENSION_EVENT_BASE <= first->u.u.type) && +- (first->u.u.type < lastEvent))) { +- client->errorValue = first->u.u.type; +- return BadValue; ++ for (i = 0; i < stuff->num_events; i++) { ++ if (!((EXTENSION_EVENT_BASE <= first[i].u.u.type) && ++ (first[i].u.u.type < lastEvent))) { ++ client->errorValue = first[i].u.u.type; ++ return BadValue; ++ } + } + + list = (XEventClass *) (first + stuff->num_events); diff -Nru xorg-server-1.18.3/debian/patches/CVE-2017-10971-3.patch xorg-server-1.18.4/debian/patches/CVE-2017-10971-3.patch --- xorg-server-1.18.3/debian/patches/CVE-2017-10971-3.patch 1970-01-01 00:00:00.000000000 +0000 +++ xorg-server-1.18.4/debian/patches/CVE-2017-10971-3.patch 2017-07-17 17:03:33.000000000 +0000 @@ -0,0 +1,63 @@ +From 215f894965df5fb0bb45b107d84524e700d2073c Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Wed, 24 May 2017 15:54:40 +0300 +Subject: dix: Disallow GenericEvent in SendEvent request. + +The SendEvent request holds xEvent which is exactly 32 bytes long, no more, +no less. Both ProcSendEvent and SProcSendEvent verify that the received data +exactly match the request size. However nothing stops the client from passing +in event with xEvent::type = GenericEvent and any value of +xGenericEvent::length. + +In the case of ProcSendEvent, the event will be eventually passed to +WriteEventsToClient which will see that it is Generic event and copy the +arbitrary length from the receive buffer (and possibly past it) and send it to +the other client. This allows clients to copy unitialized heap memory out of X +server or to crash it. + +In case of SProcSendEvent, it will attempt to swap the incoming event by +calling a swapping function from the EventSwapVector array. The swapped event +is written to target buffer, which in this case is local xEvent variable. The +xEvent variable is 32 bytes long, but the swapping functions for GenericEvents +expect that the target buffer has size matching the size of the source +GenericEvent. This allows clients to cause stack buffer overflows. + +Signed-off-by: Michal Srb +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer + +Index: xorg-server-1.18.4/dix/events.c +=================================================================== +--- xorg-server-1.18.4.orig/dix/events.c 2017-07-17 09:38:38.656585566 -0400 ++++ xorg-server-1.18.4/dix/events.c 2017-07-17 09:38:38.632585565 -0400 +@@ -5355,6 +5355,12 @@ ProcSendEvent(ClientPtr client) + client->errorValue = stuff->event.u.u.type; + return BadValue; + } ++ /* Generic events can have variable size, but SendEvent request holds ++ exactly 32B of event data. */ ++ if (stuff->event.u.u.type == GenericEvent) { ++ client->errorValue = stuff->event.u.u.type; ++ return BadValue; ++ } + if (stuff->event.u.u.type == ClientMessage && + stuff->event.u.u.detail != 8 && + stuff->event.u.u.detail != 16 && stuff->event.u.u.detail != 32) { +Index: xorg-server-1.18.4/dix/swapreq.c +=================================================================== +--- xorg-server-1.18.4.orig/dix/swapreq.c 2017-07-17 09:38:38.656585566 -0400 ++++ xorg-server-1.18.4/dix/swapreq.c 2017-07-17 09:38:38.636585565 -0400 +@@ -292,6 +292,13 @@ SProcSendEvent(ClientPtr client) + swapl(&stuff->destination); + swapl(&stuff->eventMask); + ++ /* Generic events can have variable size, but SendEvent request holds ++ exactly 32B of event data. */ ++ if (stuff->event.u.u.type == GenericEvent) { ++ client->errorValue = stuff->event.u.u.type; ++ return BadValue; ++ } ++ + /* Swap event */ + proc = EventSwapVector[stuff->event.u.u.type & 0177]; + if (!proc || proc == NotImplemented) /* no swapping proc; invalid event type? */ diff -Nru xorg-server-1.18.3/debian/patches/CVE-2017-10972.patch xorg-server-1.18.4/debian/patches/CVE-2017-10972.patch --- xorg-server-1.18.3/debian/patches/CVE-2017-10972.patch 1970-01-01 00:00:00.000000000 +0000 +++ xorg-server-1.18.4/debian/patches/CVE-2017-10972.patch 2017-07-17 17:03:33.000000000 +0000 @@ -0,0 +1,35 @@ +From 05442de962d3dc624f79fc1a00eca3ffc5489ced Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Wed, 24 May 2017 15:54:39 +0300 +Subject: Xi: Zero target buffer in SProcXSendExtensionEvent. + +Make sure that the xEvent eventT is initialized with zeros, the same way as +in SProcSendEvent. + +Some event swapping functions do not overwrite all 32 bytes of xEvent +structure, for example XSecurityAuthorizationRevoked. Two cooperating +clients, one swapped and the other not, can send +XSecurityAuthorizationRevoked event to each other to retrieve old stack data +from X server. This can be potentialy misused to go around ASLR or +stack-protector. + +Signed-off-by: Michal Srb +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer + +diff --git a/Xi/sendexev.c b/Xi/sendexev.c +index 11d8202..1cf118a 100644 +--- a/Xi/sendexev.c ++++ b/Xi/sendexev.c +@@ -78,7 +78,7 @@ SProcXSendExtensionEvent(ClientPtr client) + { + CARD32 *p; + int i; +- xEvent eventT; ++ xEvent eventT = { .u.u.type = 0 }; + xEvent *eventP; + EventSwapPtr proc; + +-- +cgit v0.10.2 + diff -Nru xorg-server-1.18.3/debian/patches/CVE-2017-2624.patch xorg-server-1.18.4/debian/patches/CVE-2017-2624.patch --- xorg-server-1.18.3/debian/patches/CVE-2017-2624.patch 1970-01-01 00:00:00.000000000 +0000 +++ xorg-server-1.18.4/debian/patches/CVE-2017-2624.patch 2017-07-17 17:03:33.000000000 +0000 @@ -0,0 +1,119 @@ +Backport of: + +From d7ac755f0b618eb1259d93c8a16ec6e39a18627c Mon Sep 17 00:00:00 2001 +From: Matthieu Herrb +Date: Tue, 28 Feb 2017 19:18:25 +0100 +Subject: Use timingsafe_memcmp() to compare MIT-MAGIC-COOKIES CVE-2017-2624 + +Provide the function definition for systems that don't have it. + +Signed-off-by: Matthieu Herrb +Reviewed-by: Alan Coopersmith + +Index: xorg-server-1.18.4/configure.ac +=================================================================== +--- xorg-server-1.18.4.orig/configure.ac 2017-07-17 10:23:07.040709996 -0400 ++++ xorg-server-1.18.4/configure.ac 2017-07-17 10:23:29.656711051 -0400 +@@ -220,7 +220,8 @@ AC_CHECK_FUNCS([backtrace ffs geteuid ge + getdtablesize getifaddrs getpeereid getpeerucred getprogname getzoneid \ + mmap posix_fallocate seteuid shmctl64 strncasecmp vasprintf vsnprintf \ + walkcontext]) +-AC_REPLACE_FUNCS([reallocarray strcasecmp strcasestr strlcat strlcpy strndup]) ++AC_REPLACE_FUNCS([reallocarray strcasecmp strcasestr strlcat strlcpy strndup\ ++ timingsafe_memcmp]) + + AC_CHECK_DECLS([program_invocation_short_name], [], [], [[#include ]]) + +Index: xorg-server-1.18.4/include/dix-config.h.in +=================================================================== +--- xorg-server-1.18.4.orig/include/dix-config.h.in 2017-07-17 10:23:07.040709996 -0400 ++++ xorg-server-1.18.4/include/dix-config.h.in 2017-07-17 10:23:07.036709996 -0400 +@@ -232,6 +232,9 @@ + /* Define to 1 if you have the header file. */ + #undef HAVE_SYS_UTSNAME_H + ++/* Define to 1 if you have the `timingsafe_memcmp' function. */ ++#undef HAVE_TIMINGSAFE_MEMCMP ++ + /* Define to 1 if you have the header file. */ + #undef HAVE_TSLIB_H + +Index: xorg-server-1.18.4/include/os.h +=================================================================== +--- xorg-server-1.18.4.orig/include/os.h 2017-07-17 10:23:07.040709996 -0400 ++++ xorg-server-1.18.4/include/os.h 2017-07-17 10:23:07.036709996 -0400 +@@ -590,6 +590,11 @@ extern _X_EXPORT char * + strndup(const char *str, size_t n); + #endif + ++#ifndef HAVE_TIMINGSAFE_MEMCMP ++extern _X_EXPORT int ++timingsafe_memcmp(const void *b1, const void *b2, size_t len); ++#endif ++ + /* Logging. */ + typedef enum _LogParameter { + XLOG_FLUSH, +Index: xorg-server-1.18.4/os/mitauth.c +=================================================================== +--- xorg-server-1.18.4.orig/os/mitauth.c 2017-07-17 10:23:07.040709996 -0400 ++++ xorg-server-1.18.4/os/mitauth.c 2017-07-17 10:23:07.036709996 -0400 +@@ -76,7 +76,7 @@ MitCheckCookie(unsigned short data_lengt + + for (auth = mit_auth; auth; auth = auth->next) { + if (data_length == auth->len && +- memcmp(data, auth->data, (int) data_length) == 0) ++ timingsafe_memcmp(data, auth->data, (int) data_length) == 0) + return auth->id; + } + *reason = "Invalid MIT-MAGIC-COOKIE-1 key"; +Index: xorg-server-1.18.4/os/timingsafe_memcmp.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ xorg-server-1.18.4/os/timingsafe_memcmp.c 2017-07-17 10:23:07.036709996 -0400 +@@ -0,0 +1,45 @@ ++/* ++ * Copyright (c) 2014 Google Inc. ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#include ++#include ++ ++int ++timingsafe_memcmp(const void *b1, const void *b2, size_t len) ++{ ++ const unsigned char *p1 = b1, *p2 = b2; ++ size_t i; ++ int res = 0, done = 0; ++ ++ for (i = 0; i < len; i++) { ++ /* lt is -1 if p1[i] < p2[i]; else 0. */ ++ int lt = (p1[i] - p2[i]) >> CHAR_BIT; ++ ++ /* gt is -1 if p1[i] > p2[i]; else 0. */ ++ int gt = (p2[i] - p1[i]) >> CHAR_BIT; ++ ++ /* cmp is 1 if p1[i] > p2[i]; -1 if p1[i] < p2[i]; else 0. */ ++ int cmp = lt - gt; ++ ++ /* set res = cmp if !done. */ ++ res |= cmp & ~done; ++ ++ /* set done if p1[i] != p2[i]. */ ++ done |= lt | gt; ++ } ++ ++ return (res); ++} diff -Nru xorg-server-1.18.3/debian/patches/drm_device_keep_trying.patch xorg-server-1.18.4/debian/patches/drm_device_keep_trying.patch --- xorg-server-1.18.3/debian/patches/drm_device_keep_trying.patch 2017-07-17 17:03:32.000000000 +0000 +++ xorg-server-1.18.4/debian/patches/drm_device_keep_trying.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,153 +0,0 @@ -From: Maarten Lankhorst -Subject: [PATCH] do not use drmGetBusid to grab the pci-id name - -The kernel returns EACCES or EAGAIN on drm open when the drm device is -currently unavailable, such as if it is in use by another process -(e.g. plymouth), or hasn't finished initializing (e.g. on a really fast -SSD). Because the probing is done before a vt switch is completed, -we have no way to ensure that we can own DRM master. This results -in failing to boot. - -Also attrib->unowned is not initialized, always initialize it to fix -a valgrind warning, and to prevent adding the same device a second time -after a vt switch. - -Fixes: https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/982889 - -Signed-off-by: Bryce Harrington ---- - hw/xfree86/os-support/linux/lnx_platform.c | 29 +++++++++++++++++++++++++--- - 1 file changed, 26 insertions(+), 3 deletions(-) - ---- a/config/udev.c -+++ b/config/udev.c -@@ -126,7 +126,7 @@ device_added(struct udev_device *udev_de - if (xf86_find_platform_device_by_devnum(major(devnum), minor(devnum))) - return; - -- LogMessage(X_INFO, "config/udev: Adding drm device (%s)\n", path); -+ LogMessage(X_INFO, "config/udev: Adding drm device (%s) %s %s\n", path, sysname, syspath); - - config_udev_odev_setup_attribs(path, syspath, major(devnum), - minor(devnum), NewGPUDeviceRequest); -@@ -465,18 +465,54 @@ config_udev_fini(void) - - #ifdef CONFIG_UDEV_KMS - -+static Bool -+get_pci_busid(const char *in, char *pci_str) -+{ -+ int ret, domain, bus, dev, func; -+ ret = sscanf(in, "/%04x:%02x:%02x.%d/drm/card%*d", &domain, &bus, &dev, &func); -+ if (ret != 4) -+ return FALSE; -+ sprintf(pci_str, "pci:%04x:%02x:%02x.%d", domain, bus, dev, func); -+ return TRUE; -+} -+ - static void - config_udev_odev_setup_attribs(const char *path, const char *syspath, - int major, int minor, - config_odev_probe_proc_ptr probe_callback) - { - struct OdevAttributes *attribs = config_odev_allocate_attributes(); -+ const char *platform; - - attribs->path = XNFstrdup(path); - attribs->syspath = XNFstrdup(syspath); - attribs->major = major; - attribs->minor = minor; - -+ if (strstr(syspath, "/devices/pci")) { -+ char pci_str[17]; -+ const char *end = strstr(syspath, "/drm/card"); -+ if (strstr(syspath, "/usb")) -+ attribs->busid = strdup(""); -+ else if (get_pci_busid(end - 13, pci_str)) -+ attribs->busid = strdup(pci_str); -+ } else if ((platform = strstr(syspath, "/devices/platform/"))) { -+ /* OMAP relies on this, modesetting doesn't use it */ -+ const char *end; -+ platform += 18; -+ end = strchr(platform, '.'); -+ if (end) { -+ char *busid; -+ int ret; -+ -+ ret = asprintf(&busid, "platform:%.*s:%02li", -+ (int)(end - platform), platform, strtol(end + 1, NULL, 10)); -+ if (ret >= 0) { -+ attribs->busid = busid; -+ } -+ } -+ } -+ - /* ownership of attribs is passed to probe layer */ - probe_callback(attribs); - } ---- a/hw/xfree86/os-support/linux/lnx_platform.c -+++ b/hw/xfree86/os-support/linux/lnx_platform.c -@@ -23,11 +23,8 @@ - static Bool - get_drm_info(struct OdevAttributes *attribs, char *path, int delayed_index) - { -- drmSetVersion sv; - drmVersionPtr v; -- char *buf; - int major, minor, fd; -- int err = 0; - Bool paused, server_fd = FALSE; - - major = attribs->major; -@@ -51,18 +48,6 @@ get_drm_info(struct OdevAttributes *attr - if (fd == -1) - return FALSE; - -- sv.drm_di_major = 1; -- sv.drm_di_minor = 4; -- sv.drm_dd_major = -1; /* Don't care */ -- sv.drm_dd_minor = -1; /* Don't care */ -- -- err = drmSetInterfaceVersion(fd, &sv); -- if (err) { -- xf86Msg(X_ERROR, "%s: failed to set DRM interface version 1.4: %s\n", -- path, strerror(-err)); -- goto out; -- } -- - /* for a delayed probe we've already added the device */ - if (delayed_index == -1) { - xf86_add_platform_device(attribs, FALSE); -@@ -72,10 +57,6 @@ get_drm_info(struct OdevAttributes *attr - if (server_fd) - xf86_platform_devices[delayed_index].flags |= XF86_PDEV_SERVER_FD; - -- buf = drmGetBusid(fd); -- xf86_platform_odev_attributes(delayed_index)->busid = XNFstrdup(buf); -- drmFreeBusid(buf); -- - v = drmGetVersion(fd); - if (!v) { - xf86Msg(X_ERROR, "%s: failed to query DRM version\n", path); -@@ -88,7 +69,7 @@ get_drm_info(struct OdevAttributes *attr - out: - if (!server_fd) - close(fd); -- return (err == 0); -+ return TRUE; - } - - Bool -@@ -158,8 +139,11 @@ xf86PlatformDeviceProbe(struct OdevAttri - break; - } - -- if (i != xf86_num_platform_devices) -+ if (i != xf86_num_platform_devices) { -+ LogMessage(X_INFO, "config/udev: Ignoring already known drm device (%s)\n", -+ path); - goto out_free; -+ } - - LogMessage(X_INFO, "xfree86: Adding drm device (%s)\n", path); - diff -Nru xorg-server-1.18.3/debian/patches/modesetting-unifdef-slave-support.diff xorg-server-1.18.4/debian/patches/modesetting-unifdef-slave-support.diff --- xorg-server-1.18.3/debian/patches/modesetting-unifdef-slave-support.diff 1970-01-01 00:00:00.000000000 +0000 +++ xorg-server-1.18.4/debian/patches/modesetting-unifdef-slave-support.diff 2017-07-17 17:03:33.000000000 +0000 @@ -0,0 +1,27 @@ +Subject: [PATCH xserver] modesetting: unifdef MODESETTING_OUTPUT_SLAVE_SUPPORT +From: Nikhil Mahale +Date: 22.10.2016 15:10 + +Commit c7e8d4a6ee9542f56cd241cf7a960fb8223a6b22 had already +unifdef MODESETTING_OUTPUT_SLAVE_SUPPORT but commit +9257b1252da9092ddc676fec9aabe2b33dfad272 didn't +notice that. + +Signed-off-by: Nikhil Mahale +--- + hw/xfree86/drivers/modesetting/drmmode_display.c | 2 -- + 1 file changed, 2 deletions(-) + +--- a/hw/xfree86/drivers/modesetting/drmmode_display.c ++++ b/hw/xfree86/drivers/modesetting/drmmode_display.c +@@ -1401,10 +1401,8 @@ drmmode_create_name(ScrnInfoPtr pScrn, d + fallback: + if (koutput->connector_type >= MS_ARRAY_SIZE(output_names)) + snprintf(name, 32, "Unknown%d-%d", koutput->connector_type, koutput->connector_type_id); +-#ifdef MODESETTING_OUTPUT_SLAVE_SUPPORT + else if (pScrn->is_gpu) + snprintf(name, 32, "%s-%d-%d", output_names[koutput->connector_type], pScrn->scrnIndex - GPU_SCREEN_OFFSET + 1, koutput->connector_type_id); +-#endif + else + snprintf(name, 32, "%s-%d", output_names[koutput->connector_type], koutput->connector_type_id); + } diff -Nru xorg-server-1.18.3/debian/patches/os-treat-ssh-as-a-non-local-client.diff xorg-server-1.18.4/debian/patches/os-treat-ssh-as-a-non-local-client.diff --- xorg-server-1.18.3/debian/patches/os-treat-ssh-as-a-non-local-client.diff 2017-07-17 17:03:32.000000000 +0000 +++ xorg-server-1.18.4/debian/patches/os-treat-ssh-as-a-non-local-client.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -commit adefbaee499b9679c6cac21f52ec6545af2b36b5 -Author: Adam Jackson -Date: Mon Mar 28 18:11:09 2016 +0900 - - os: Treat ssh as a non-local client (v4) - - By the time we get to ComputeLocalClient, we've already done - NextAvailableClient → ReserveClientIds → DetermineClientCmd (assuming - we're built with #define CLIENTIDS), so we can look up the name of the - client process and refuse to treat ssh's X forwarding as if it were - local. - - v2: (Michel Dänzer) - * Only match "ssh" itself, not other executable names starting with - that prefix. - * Ignore executable path for the match. - v3: (Michel Dänzer) - * Use GetClientCmdName (Mark Kettenis) - * Perform check on Windows as well, but only ignore path on Cygwin - (Martin Peres, Emil Velikov, Jon Turney) - v4: (Michel Dänzer) - * Cut of any colon and whatever comes after it. (Adam Jackson) - * Add bugzilla reference. - - Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93261 - - Signed-off-by: Adam Jackson - Signed-off-by: Michel Dänzer - -diff --git a/os/access.c b/os/access.c -index 8b2177f..58f95a9 100644 ---- a/os/access.c -+++ b/os/access.c -@@ -173,6 +173,10 @@ SOFTWARE. - - #endif /* WIN32 */ - -+#if !defined(WIN32) || defined(__CYGWIN__) -+#include -+#endif -+ - #define X_INCLUDE_NETDB_H - #include - -@@ -1080,9 +1084,8 @@ ResetHosts(const char *display) - } - } - --/* Is client on the local host */ --Bool --ComputeLocalClient(ClientPtr client) -+static Bool -+xtransLocalClient(ClientPtr client) - { - int alen, family, notused; - Xtransaddr *from = NULL; -@@ -1115,6 +1118,40 @@ ComputeLocalClient(ClientPtr client) - return FALSE; - } - -+/* Is client on the local host */ -+Bool -+ComputeLocalClient(ClientPtr client) -+{ -+ const char *cmdname = GetClientCmdName(client); -+ -+ if (!xtransLocalClient(client)) -+ return FALSE; -+ -+ /* If the executable name is "ssh", assume that this client connection -+ * is forwarded from another host via SSH -+ */ -+ if (cmdname) { -+ char **cmd; -+ Bool ret; -+ -+ /* Cut off any colon and whatever comes after it, see -+ * https://lists.freedesktop.org/archives/xorg-devel/2015-December/048164.html -+ */ -+ cmd = xstrtokenize(cmdname, ":"); -+ -+#if !defined(WIN32) || defined(__CYGWIN__) -+ cmd[0] = basename(cmd[0]); -+#endif -+ -+ ret = strcmp(cmd[0], "ssh") != 0; -+ free(cmd); -+ -+ return ret; -+ } -+ -+ return TRUE; -+} -+ - /* - * Return the uid and all gids of a connected local client - * Allocates a LocalClientCredRec - caller must call FreeLocalClientCreds diff -Nru xorg-server-1.18.3/debian/patches/randr-adjust-masters-last-set-time.diff xorg-server-1.18.4/debian/patches/randr-adjust-masters-last-set-time.diff --- xorg-server-1.18.3/debian/patches/randr-adjust-masters-last-set-time.diff 1970-01-01 00:00:00.000000000 +0000 +++ xorg-server-1.18.4/debian/patches/randr-adjust-masters-last-set-time.diff 2017-07-17 17:03:33.000000000 +0000 @@ -0,0 +1,39 @@ +Subject: [PATCH xserver] randr: Adjust master's last set time with slaves +From: Nikhil Mahale +Date: 20.05.2016 08:01 +To: +CC: Nikhil Mahale + +In prime configurations master's last set time may not be latest +and greatest, adjust it with slaves last set time, pick up greatest +one. Otherwise xserver may end with events which has +lastSetTime < lastConfigTime even if that's not +the case and confuse xrandr client. + +Signed-off-by: Nikhil Mahale +--- + randr/randr.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/randr/randr.c b/randr/randr.c +index 3aabb19..c07def1 100644 +--- a/randr/randr.c ++++ b/randr/randr.c +@@ -584,6 +585,15 @@ RRTellChanged(ScreenPtr pScreen) + mastersp = pScrPriv; + } + ++ xorg_list_for_each_entry(iter, &master->output_slave_list, output_head) { ++ pSlaveScrPriv = rrGetScrPriv(iter); ++ ++ if (CompareTimeStamps(mastersp->lastSetTime, ++ pSlaveScrPriv->lastSetTime) == EARLIER) { ++ mastersp->lastSetTime = pSlaveScrPriv->lastSetTime; ++ } ++ } ++ + if (mastersp->changed) { + UpdateCurrentTimeIf(); + if (mastersp->configChanged) { +-- 2.8.2 ----------------------------------------------------------------------------------- This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. ----------------------------------------------------------------------------------- _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel + diff -Nru xorg-server-1.18.3/debian/patches/randr-do-not-check-the-screen-size.diff xorg-server-1.18.4/debian/patches/randr-do-not-check-the-screen-size.diff --- xorg-server-1.18.3/debian/patches/randr-do-not-check-the-screen-size.diff 1970-01-01 00:00:00.000000000 +0000 +++ xorg-server-1.18.4/debian/patches/randr-do-not-check-the-screen-size.diff 2017-07-17 17:03:33.000000000 +0000 @@ -0,0 +1,87 @@ +Subject: [PATCH xserver] randr: Do not check the screen size bound for gpu screens +From: Nikhil Mahale +Date: 20.05.2016 08:00 +To: +CC: Nikhil Mahale + +For gpu screen, CrtcSet set/adjust the master screen size along +mode in following callstack - + + ProcRRSetCrtcConfig() + | + -> RRCrtcSet() + | + -> rrCheckPixmapBounding() + | + -> pScrPriv->rrScreenSetSize() + +Checking screen size bound for gpus screen cause some configurations +to fails, e.g + + $ xrandr --output eDP --mode 1920x1080 --pos 0x0 --output HDMI \ + --mode 2560x1440 --pos 0x0 + + Here xrandr utility first sets screen size to 2560x1440 which + gets resized to 1920x1080 on RRSetCrtcConfig request for eDP, + and then RRSetCrtcConfig request for HDMI fails because + of failure of screen bound check. + +Signed-off-by: Nikhil Mahale +--- + randr/rrcrtc.c | 19 ++++++------------- + 1 file changed, 6 insertions(+), 13 deletions(-) + +diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c +index 566a3db..82db9a8 100644 +--- a/randr/rrcrtc.c ++++ b/randr/rrcrtc.c +@@ -1176,27 +1176,20 @@ ProcRRSetCrtcConfig(ClientPtr client) + + #ifdef RANDR_12_INTERFACE + /* ++ * For gpu screen, CrtcSet set/adjust the master screen size along ++ * with mode. ++ * + * Check screen size bounds if the DDX provides a 1.2 interface + * for setting screen size. Else, assume the CrtcSet sets + * the size along with the mode. If the driver supports transforms, + * then it must allow crtcs to display a subset of the screen, so + * only do this check for drivers without transform support. + */ +- if (pScrPriv->rrScreenSetSize && !crtc->transforms) { ++ if (!pScreen->isGPU && pScrPriv->rrScreenSetSize && !crtc->transforms) { + int source_width; + int source_height; + PictTransform transform; + struct pixman_f_transform f_transform, f_inverse; +- int width, height; +- +- if (pScreen->isGPU) { +- width = pScreen->current_master->width; +- height = pScreen->current_master->height; +- } +- else { +- width = pScreen->width; +- height = pScreen->height; +- } + + RRTransformCompute(stuff->x, stuff->y, + mode->mode.width, mode->mode.height, +@@ -1206,13 +1199,13 @@ ProcRRSetCrtcConfig(ClientPtr client) + + RRModeGetScanoutSize(mode, &transform, &source_width, + &source_height); +- if (stuff->x + source_width > width) { ++ if (stuff->x + source_width > pScreen->width) { + client->errorValue = stuff->x; + free(outputs); + return BadValue; + } + +- if (stuff->y + source_height > height) { ++ if (stuff->y + source_height > pScreen->height) { + client->errorValue = stuff->y; + free(outputs); + return BadValue; +-- 2.8.2 ----------------------------------------------------------------------------------- This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. ----------------------------------------------------------------------------------- _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel + diff -Nru xorg-server-1.18.3/debian/patches/series xorg-server-1.18.4/debian/patches/series --- xorg-server-1.18.3/debian/patches/series 2017-07-17 17:03:32.000000000 +0000 +++ xorg-server-1.18.4/debian/patches/series 2017-07-17 17:03:33.000000000 +0000 @@ -5,7 +5,6 @@ 03_static-nettle.diff 05_Revert-Unload-submodules.diff #08_xfree86_fix_ia64_inx_outx.diff -os-treat-ssh-as-a-non-local-client.diff ## Ubuntu patches, not upstreamable @@ -48,6 +47,12 @@ xmir.patch xmir-desktop-file-hint-flag.patch -drm_device_keep_trying.patch xi2-resize-touch.patch -xmir-fixes.diff +randr-adjust-masters-last-set-time.diff +randr-do-not-check-the-screen-size.diff +modesetting-unifdef-slave-support.diff +CVE-2017-10971-1.patch +CVE-2017-10971-2.patch +CVE-2017-10971-3.patch +CVE-2017-10972.patch +CVE-2017-2624.patch diff -Nru xorg-server-1.18.3/debian/patches/xmir-fixes.diff xorg-server-1.18.4/debian/patches/xmir-fixes.diff --- xorg-server-1.18.3/debian/patches/xmir-fixes.diff 2017-07-17 17:03:32.000000000 +0000 +++ xorg-server-1.18.4/debian/patches/xmir-fixes.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,149 +0,0 @@ -Description: port xmir to 1.18 - ---- a/hw/xmir/xmir-output.c -+++ b/hw/xmir/xmir-output.c -@@ -327,10 +327,10 @@ xmir_output_handle_resize(struct xmir_wi - - if (xmir_screen->glamor) { - glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(pixmap); -- glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb); -+ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); - glClearColor(0., 0., 0., 1.); - glClear(GL_COLOR_BUFFER_BIT); -- glamor_copy_n_to_n_nf(&screen->root->drawable, &pixmap->drawable, -+ glamor_copy(&screen->root->drawable, &pixmap->drawable, - NULL, ©_box, 1, 0, 0, FALSE, FALSE, 0, NULL); - glBindFramebuffer(GL_FRAMEBUFFER, 0); - } else { ---- a/hw/xmir/xmir.c -+++ b/hw/xmir/xmir.c -@@ -1246,7 +1246,7 @@ xmir_create_screen_resources(ScreenPtr s - if (xmir_screen->glamor && !xmir_screen->rootless) { - glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(screen->devPrivate); - -- glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb); -+ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); - glClear(GL_COLOR_BUFFER_BIT); - glBindFramebuffer(GL_FRAMEBUFFER, 0); - ---- a/hw/xmir/xmir-glamor.c -+++ b/hw/xmir/xmir-glamor.c -@@ -220,7 +220,7 @@ xmir_glamor_copy_egl_tex(int fbo, Drawab - - pixmap_priv_get_scale(src_pixmap_priv, &src_xscale, &src_yscale); - -- if (src_pixmap_priv->base.gl_fbo == GLAMOR_FBO_UNATTACHED) -+ if (src_pixmap_priv->gl_fbo == GLAMOR_FBO_UNATTACHED) - FatalError("aeiou\n"); - - glViewport(dx, dy, width + dx, height + dy); -@@ -231,7 +231,7 @@ xmir_glamor_copy_egl_tex(int fbo, Drawab - - if (!fbo) { - glActiveTexture(GL_TEXTURE0); -- glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->base.fbo->tex); -+ glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->fbo->tex); - - if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); -@@ -272,13 +272,8 @@ xmir_glamor_copy_egl_tex(int fbo, Drawab - _tx1 = v_from_x_coord_x(dst_xscale, dbox.x1); - _tx2 = v_from_x_coord_x(dst_xscale, dbox.x2); - -- if (xmir_screen->gbm) { -- _ty1 = v_from_x_coord_y_inverted(dst_yscale, dbox.y1); -- _ty2 = v_from_x_coord_y_inverted(dst_yscale, dbox.y2); -- } else { -- _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); -- _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); -- } -+ _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); -+ _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); - - /* upper left */ - vertices[0] = _tx1; -@@ -317,13 +312,8 @@ xmir_glamor_copy_egl_tex(int fbo, Drawab - _tx1 = v_from_x_coord_x(dst_xscale, dbox.x1); - _tx2 = v_from_x_coord_x(dst_xscale, dbox.x2); - -- if (xmir_screen->gbm) { -- _ty1 = v_from_x_coord_y_inverted(dst_yscale, dbox.y1); -- _ty2 = v_from_x_coord_y_inverted(dst_yscale, dbox.y2); -- } else { -- _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); -- _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); -- } -+ _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); -+ _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); - - /* upper right */ - vertices[0] = _tx2; -@@ -368,7 +358,7 @@ xmir_glamor_copy_egl_common(DrawablePtr - DebugF("Box: (%i,%i)->(%i,%i)\n", ext->x1, ext->y1, ext->x2, ext->y2); - - if (epoxy_has_gl_extension("GL_EXT_framebuffer_blit") && !xmir_screen->doubled && !orientation) { -- glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->base.fbo->fb); -+ glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->fbo->fb); - - glBlitFramebuffer(ext->x1, ext->y2, ext->x2, ext->y1, - ext->x1 + dx, ext->y2 + dy, ext->x2 + dx, ext->y1 + dy, -@@ -404,7 +394,7 @@ xmir_glamor_copy_gbm(struct xmir_screen - PixmapPtr from = screen->GetWindowPixmap(window); - glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(back); - -- glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb); -+ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); - xmir_glamor_copy_egl_common(&window->drawable, from, glamor_get_pixmap_private(from), - RegionExtents(dirty), - back->drawable.width, back->drawable.height, 0, 0, xmir_win->orientation); -@@ -607,9 +597,9 @@ xmir_glamor_copy_egl_queue(struct xmir_s - * rotating back and forth. - */ - glamor_set_pixmap_type(src_pixmap, GLAMOR_TEXTURE_DRM); -- src_pixmap_priv->base.fbo->external = TRUE; -+ src_pixmap_priv->fbo->external = TRUE; - -- xmir_win->image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_GL_TEXTURE_2D_KHR, (EGLClientBuffer)(intptr_t)src_pixmap_priv->base.fbo->tex, attribs); -+ xmir_win->image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_GL_TEXTURE_2D_KHR, (EGLClientBuffer)(intptr_t)src_pixmap_priv->fbo->tex, attribs); - if (!xmir_win->image) { - GLint error; - ErrorF("eglCreateImageKHR failed with %x\n", eglGetError()); -@@ -1016,7 +1006,7 @@ glamor_egl_dri3_fd_name_from_tex(ScreenP - } - - unsigned int --glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h) -+glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h, Bool linear) - { - return 0; - } -@@ -1144,10 +1134,7 @@ xmir_glamor_init(struct xmir_screen *xmi - } - - if (!glamor_init(screen, -- GLAMOR_INVERTED_Y_AXIS | - GLAMOR_USE_EGL_SCREEN | -- GLAMOR_USE_SCREEN | -- GLAMOR_USE_PICTURE_SCREEN | - GLAMOR_NO_DRI3)) { - ErrorF("Failed to initialize glamor\n"); - return FALSE; ---- a/hw/xmir/xmir-input.c -+++ b/hw/xmir/xmir-input.c -@@ -378,15 +378,13 @@ xmir_window_handle_input_event(struct xm - case mir_input_event_type_key: { - MirKeyboardEvent const *kev; - MirKeyboardAction action; -- ValuatorMask mask; - - kev = mir_input_event_get_keyboard_event(ev); - action = mir_keyboard_event_action(kev); - -- valuator_mask_zero(&mask); - QueueKeyboardEvents(xmir_input->keyboard, - action == mir_keyboard_action_up ? KeyRelease : KeyPress, -- mir_keyboard_event_scan_code(kev) + 8, &mask); -+ mir_keyboard_event_scan_code(kev) + 8); - break; - } - case mir_input_event_type_touch: { diff -Nru xorg-server-1.18.3/debian/patches/xmir.patch xorg-server-1.18.4/debian/patches/xmir.patch --- xorg-server-1.18.3/debian/patches/xmir.patch 2017-07-17 17:03:32.000000000 +0000 +++ xorg-server-1.18.4/debian/patches/xmir.patch 2017-07-17 17:03:33.000000000 +0000 @@ -1,7 +1,7 @@ -From efc26decfbefc45cdb36110c019272fbaf41284f Mon Sep 17 00:00:00 2001 +From 8467ede06b3b40fae1d362d73cfa313737e0defc Mon Sep 17 00:00:00 2001 From: Robert Ancell -Date: Fri, 15 May 2015 14:58:59 +1200 -Subject: [PATCH 1/3] XMir DDX +Date: Fri, 29 Apr 2016 14:57:53 +0200 +Subject: [PATCH xserver 1/3] XMir DDX Contributions from: Maarten Lankhorst @@ -9,26 +9,27 @@ Robert Ancell Andreas Pokorny Daniel van Vugt + Chris Townsend --- configure.ac | 25 + hw/Makefile.am | 9 +- hw/xmir/.gitignore | 1 + hw/xmir/Makefile.am | 61 ++ hw/xmir/dri2/Makefile.am | 14 + - hw/xmir/dri2/dri2.c | 1398 ++++++++++++++++++++++++++++++++++++++ - hw/xmir/dri2/dri2.h | 364 ++++++++++ - hw/xmir/dri2/dri2ext.c | 683 +++++++++++++++++++ + hw/xmir/dri2/dri2.c | 1398 ++++++++++++++++++++++++++++++++++ + hw/xmir/dri2/dri2.h | 364 +++++++++ + hw/xmir/dri2/dri2ext.c | 683 +++++++++++++++++ hw/xmir/dri2/dri2int.h | 26 + hw/xmir/xmir-cursor.c | 210 ++++++ - hw/xmir/xmir-cvt.c | 304 +++++++++ - hw/xmir/xmir-dri2.c | 545 +++++++++++++++ - hw/xmir/xmir-glamor.c | 1173 ++++++++++++++++++++++++++++++++ - hw/xmir/xmir-input.c | 566 ++++++++++++++++ - hw/xmir/xmir-output.c | 449 +++++++++++++ - hw/xmir/xmir-thread-proxy.c | 109 +++ - hw/xmir/xmir.c | 1564 +++++++++++++++++++++++++++++++++++++++++++ - hw/xmir/xmir.h | 226 +++++++ - 18 files changed, 7725 insertions(+), 2 deletions(-) + hw/xmir/xmir-cvt.c | 304 ++++++++ + hw/xmir/xmir-dri2.c | 551 ++++++++++++++ + hw/xmir/xmir-glamor.c | 1164 +++++++++++++++++++++++++++++ + hw/xmir/xmir-input.c | 611 +++++++++++++++ + hw/xmir/xmir-output.c | 476 ++++++++++++ + hw/xmir/xmir-thread-proxy.c | 115 +++ + hw/xmir/xmir.c | 1729 +++++++++++++++++++++++++++++++++++++++++++ + hw/xmir/xmir.h | 232 ++++++ + 18 files changed, 7971 insertions(+), 2 deletions(-) create mode 100644 hw/xmir/.gitignore create mode 100644 hw/xmir/Makefile.am create mode 100644 hw/xmir/dri2/Makefile.am @@ -46,11 +47,9 @@ create mode 100644 hw/xmir/xmir.c create mode 100644 hw/xmir/xmir.h -diff --git a/configure.ac b/configure.ac -index d8f0e74..56355fd 100644 --- a/configure.ac +++ b/configure.ac -@@ -624,6 +624,7 @@ AC_ARG_ENABLE(xvfb, AS_HELP_STRING([--enable-xvfb], [Build Xvfb server +@@ -633,6 +633,7 @@ AC_ARG_ENABLE(xnest, AS_HELP_STRING([--enable-xnest], [Build Xnest server (default: auto)]), [XNEST=$enableval], [XNEST=auto]) AC_ARG_ENABLE(xquartz, AS_HELP_STRING([--enable-xquartz], [Build Xquartz server for OS-X (default: auto)]), [XQUARTZ=$enableval], [XQUARTZ=auto]) AC_ARG_ENABLE(xwayland, AS_HELP_STRING([--enable-xwayland], [Build Xwayland server (default: auto)]), [XWAYLAND=$enableval], [XWAYLAND=auto]) @@ -58,7 +57,7 @@ AC_ARG_ENABLE(standalone-xpbproxy, AS_HELP_STRING([--enable-standalone-xpbproxy], [Build a standalone xpbproxy (in addition to the one integrated into Xquartz as a separate thread) (default: no)]), [STANDALONE_XPBPROXY=$enableval], [STANDALONE_XPBPROXY=no]) AC_ARG_ENABLE(xwin, AS_HELP_STRING([--enable-xwin], [Build XWin server (default: auto)]), [XWIN=$enableval], [XWIN=auto]) AC_ARG_ENABLE(glamor, AS_HELP_STRING([--enable-glamor], [Build glamor dix module (default: no)]), [GLAMOR=$enableval], [GLAMOR=no]) -@@ -745,6 +746,7 @@ case $host_os in +@@ -751,6 +752,7 @@ XVFB=no XNEST=no XWAYLAND=no @@ -66,7 +65,7 @@ COMPOSITE=no DGA=no -@@ -2474,6 +2476,27 @@ if test "x$XWAYLAND" = xyes; then +@@ -2503,6 +2505,27 @@ [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH]) fi @@ -94,7 +93,7 @@ dnl and the rest of these are generic, so they're in config.h dnl -@@ -2622,6 +2645,8 @@ hw/kdrive/fbdev/Makefile +@@ -2651,6 +2674,8 @@ hw/kdrive/linux/Makefile hw/kdrive/src/Makefile hw/xwayland/Makefile @@ -103,11 +102,9 @@ test/Makefile test/xi1/Makefile test/xi2/Makefile -diff --git a/hw/Makefile.am b/hw/Makefile.am -index 19895dc..b7b958c 100644 --- a/hw/Makefile.am +++ b/hw/Makefile.am -@@ -30,6 +30,10 @@ if XWAYLAND +@@ -30,6 +30,10 @@ XWAYLAND_SUBDIRS = xwayland endif @@ -118,7 +115,7 @@ SUBDIRS = \ $(XORG_SUBDIRS) \ $(XWIN_SUBDIRS) \ -@@ -38,9 +42,10 @@ SUBDIRS = \ +@@ -38,9 +42,10 @@ $(DMX_SUBDIRS) \ $(KDRIVE_SUBDIRS) \ $(XQUARTZ_SUBDIRS) \ @@ -131,16 +128,10 @@ relink: $(AM_V_at)for i in $(SUBDIRS) ; do $(MAKE) -C $$i relink || exit 1 ; done -diff --git a/hw/xmir/.gitignore b/hw/xmir/.gitignore -new file mode 100644 -index 0000000..b6a16d4 --- /dev/null +++ b/hw/xmir/.gitignore @@ -0,0 +1 @@ +Xmir -diff --git a/hw/xmir/Makefile.am b/hw/xmir/Makefile.am -new file mode 100644 -index 0000000..be5225e --- /dev/null +++ b/hw/xmir/Makefile.am @@ -0,0 +1,61 @@ @@ -205,9 +196,6 @@ + +relink: + $(AM_V_at)rm -f Xmir$(EXEEXT) && $(MAKE) Xmir$(EXEEXT) -diff --git a/hw/xmir/dri2/Makefile.am b/hw/xmir/dri2/Makefile.am -new file mode 100644 -index 0000000..696240c --- /dev/null +++ b/hw/xmir/dri2/Makefile.am @@ -0,0 +1,14 @@ @@ -225,9 +213,6 @@ + dri2ext.c \ + dri2int.h + -diff --git a/hw/xmir/dri2/dri2.c b/hw/xmir/dri2/dri2.c -new file mode 100644 -index 0000000..6aa19ba --- /dev/null +++ b/hw/xmir/dri2/dri2.c @@ -0,0 +1,1398 @@ @@ -1629,9 +1614,6 @@ + *is_param_recognized = FALSE; + return Success; +} -diff --git a/hw/xmir/dri2/dri2.h b/hw/xmir/dri2/dri2.h -new file mode 100644 -index 0000000..318898b --- /dev/null +++ b/hw/xmir/dri2/dri2.h @@ -0,0 +1,364 @@ @@ -1999,9 +1981,6 @@ +extern Bool noDRI2Extension; + +#endif -diff --git a/hw/xmir/dri2/dri2ext.c b/hw/xmir/dri2/dri2ext.c -new file mode 100644 -index 0000000..befbb82 --- /dev/null +++ b/hw/xmir/dri2/dri2ext.c @@ -0,0 +1,683 @@ @@ -2688,9 +2667,6 @@ + + DRI2ModuleSetup(); +} -diff --git a/hw/xmir/dri2/dri2int.h b/hw/xmir/dri2/dri2int.h -new file mode 100644 -index 0000000..7f53eba --- /dev/null +++ b/hw/xmir/dri2/dri2int.h @@ -0,0 +1,26 @@ @@ -2720,9 +2696,6 @@ + */ + +extern Bool DRI2ModuleSetup(void); -diff --git a/hw/xmir/xmir-cursor.c b/hw/xmir/xmir-cursor.c -new file mode 100644 -index 0000000..81873a4 --- /dev/null +++ b/hw/xmir/xmir-cursor.c @@ -0,0 +1,210 @@ @@ -2936,9 +2909,6 @@ + &xmir_pointer_sprite_funcs, + &xmir_pointer_screen_funcs, TRUE); +} -diff --git a/hw/xmir/xmir-cvt.c b/hw/xmir/xmir-cvt.c -new file mode 100644 -index 0000000..6070d77 --- /dev/null +++ b/hw/xmir/xmir-cvt.c @@ -0,0 +1,304 @@ @@ -3246,12 +3216,9 @@ + + return RRModeGet(&modeinfo, name); +} -diff --git a/hw/xmir/xmir-dri2.c b/hw/xmir/xmir-dri2.c -new file mode 100644 -index 0000000..b24d4b9 --- /dev/null +++ b/hw/xmir/xmir-dri2.c -@@ -0,0 +1,545 @@ +@@ -0,0 +1,551 @@ +/* + * Copyright © 2015 Canonical Ltd + * @@ -3743,10 +3710,16 @@ + +static int xmir_dri_get_msc(DrawablePtr draw, CARD64 *ust, CARD64 *msc) +{ -+ /* TODO: Implement this? -+ * At least doing nothing like this is enough to shut up Chromium -+ * error messages. -+ */ ++ /* TODO: Implement this properly after Mir implements it. */ ++ const uint64_t now_us = GetTimeInMicros(); ++ const uint64_t fake_frame_rate_hz = 60; ++ const uint64_t fake_frame_time_us = 1000000 / fake_frame_rate_hz; ++ const uint64_t fake_msc = now_us / fake_frame_time_us; ++ const uint64_t fake_ust = fake_msc * fake_frame_time_us; ++ if (ust) ++ *(uint64_t*)ust = fake_ust; ++ if (msc) ++ *(uint64_t*)msc = fake_msc; + return Success; +} + @@ -3797,12 +3770,9 @@ + ret = DRI2ScreenInit(xmir_screen->screen, &xmir_screen->dri2); + return ret; +} -diff --git a/hw/xmir/xmir-glamor.c b/hw/xmir/xmir-glamor.c -new file mode 100644 -index 0000000..2438013 --- /dev/null +++ b/hw/xmir/xmir-glamor.c -@@ -0,0 +1,1173 @@ +@@ -0,0 +1,1164 @@ +/* + * Copyright © 2015 Canonical Ltd + * @@ -4025,7 +3995,7 @@ + + pixmap_priv_get_scale(src_pixmap_priv, &src_xscale, &src_yscale); + -+ if (src_pixmap_priv->base.gl_fbo == GLAMOR_FBO_UNATTACHED) ++ if (src_pixmap_priv->gl_fbo == GLAMOR_FBO_UNATTACHED) + FatalError("aeiou\n"); + + glViewport(dx, dy, width + dx, height + dy); @@ -4036,7 +4006,7 @@ + + if (!fbo) { + glActiveTexture(GL_TEXTURE0); -+ glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->base.fbo->tex); ++ glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->fbo->tex); + + if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); @@ -4077,13 +4047,8 @@ + _tx1 = v_from_x_coord_x(dst_xscale, dbox.x1); + _tx2 = v_from_x_coord_x(dst_xscale, dbox.x2); + -+ if (xmir_screen->gbm) { -+ _ty1 = v_from_x_coord_y_inverted(dst_yscale, dbox.y1); -+ _ty2 = v_from_x_coord_y_inverted(dst_yscale, dbox.y2); -+ } else { -+ _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); -+ _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); -+ } ++ _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); ++ _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); + + /* upper left */ + vertices[0] = _tx1; @@ -4122,13 +4087,8 @@ + _tx1 = v_from_x_coord_x(dst_xscale, dbox.x1); + _tx2 = v_from_x_coord_x(dst_xscale, dbox.x2); + -+ if (xmir_screen->gbm) { -+ _ty1 = v_from_x_coord_y_inverted(dst_yscale, dbox.y1); -+ _ty2 = v_from_x_coord_y_inverted(dst_yscale, dbox.y2); -+ } else { -+ _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); -+ _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); -+ } ++ _ty1 = v_from_x_coord_y(dst_yscale, dbox.y1); ++ _ty2 = v_from_x_coord_y(dst_yscale, dbox.y2); + + /* upper right */ + vertices[0] = _tx2; @@ -4172,8 +4132,9 @@ + struct xmir_screen *xmir_screen = xmir_screen_get(src->pScreen); + DebugF("Box: (%i,%i)->(%i,%i)\n", ext->x1, ext->y1, ext->x2, ext->y2); + -+ if (epoxy_has_gl_extension("GL_EXT_framebuffer_blit") && !xmir_screen->doubled && !orientation) { -+ glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->base.fbo->fb); ++ if (xmir_screen->glamor_has_GL_EXT_framebuffer_blit && ++ !xmir_screen->doubled && !orientation) { ++ glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->fbo->fb); + + glBlitFramebuffer(ext->x1, ext->y2, ext->x2, ext->y1, + ext->x1 + dx, ext->y2 + dy, ext->x2 + dx, ext->y1 + dy, @@ -4209,7 +4170,7 @@ + PixmapPtr from = screen->GetWindowPixmap(window); + glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(back); + -+ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb); ++ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); + xmir_glamor_copy_egl_common(&window->drawable, from, glamor_get_pixmap_private(from), + RegionExtents(dirty), + back->drawable.width, back->drawable.height, 0, 0, xmir_win->orientation); @@ -4412,9 +4373,9 @@ + * rotating back and forth. + */ + glamor_set_pixmap_type(src_pixmap, GLAMOR_TEXTURE_DRM); -+ src_pixmap_priv->base.fbo->external = TRUE; ++ src_pixmap_priv->fbo->external = TRUE; + -+ xmir_win->image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_GL_TEXTURE_2D_KHR, (EGLClientBuffer)(intptr_t)src_pixmap_priv->base.fbo->tex, attribs); ++ xmir_win->image = eglCreateImageKHR(xmir_screen->egl_display, xmir_screen->egl_context, EGL_GL_TEXTURE_2D_KHR, (EGLClientBuffer)(intptr_t)src_pixmap_priv->fbo->tex, attribs); + if (!xmir_win->image) { + GLint error; + ErrorF("eglCreateImageKHR failed with %x\n", eglGetError()); @@ -4651,6 +4612,9 @@ + return FALSE; + } + ++ xmir_screen->glamor_has_GL_EXT_framebuffer_blit = ++ epoxy_has_gl_extension("GL_EXT_framebuffer_blit"); ++ + if (!xmir_screen->gbm && xmir_screen->glamor != glamor_egl_sync) { + xmir_screen->swap_context = eglCreateContext(xmir_screen->egl_display, egl_config, EGL_NO_CONTEXT, gles2_attribs); + if (!xmir_screen->swap_context) { @@ -4821,7 +4785,7 @@ +} + +unsigned int -+glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h) ++glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h, Bool linear) +{ + return 0; +} @@ -4949,10 +4913,7 @@ + } + + if (!glamor_init(screen, -+ GLAMOR_INVERTED_Y_AXIS | + GLAMOR_USE_EGL_SCREEN | -+ GLAMOR_USE_SCREEN | -+ GLAMOR_USE_PICTURE_SCREEN | + GLAMOR_NO_DRI3)) { + ErrorF("Failed to initialize glamor\n"); + return FALSE; @@ -4976,12 +4937,9 @@ + + return TRUE; +} -diff --git a/hw/xmir/xmir-input.c b/hw/xmir/xmir-input.c -new file mode 100644 -index 0000000..727fc56 --- /dev/null +++ b/hw/xmir/xmir-input.c -@@ -0,0 +1,566 @@ +@@ -0,0 +1,609 @@ +/* + * Copyright © 2015 Canonical Ltd + * @@ -5026,7 +4984,7 @@ +xmir_pointer_proc(DeviceIntPtr device, int what) +{ +#define NBUTTONS 10 -+#define NAXES 2 ++#define NAXES 4 + BYTE map[NBUTTONS + 1]; + int i = 0; + Atom btn_labels[NBUTTONS] = { 0 }; @@ -5050,8 +5008,10 @@ + + axes_labels[0] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_X); + axes_labels[1] = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_Y); ++ axes_labels[2] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_HWHEEL); ++ axes_labels[3] = XIGetKnownProperty(AXIS_LABEL_PROP_REL_WHEEL); + -+ if (!InitValuatorClassDeviceStruct(device, 2, btn_labels, ++ if (!InitValuatorClassDeviceStruct(device, NAXES, btn_labels, + GetMotionHistorySize(), Absolute)) + return BadValue; + @@ -5060,6 +5020,13 @@ + 0, 0xFFFF, 10000, 0, 10000, Absolute); + InitValuatorAxisStruct(device, 1, axes_labels[1], + 0, 0xFFFF, 10000, 0, 10000, Absolute); ++ InitValuatorAxisStruct(device, 2, axes_labels[2], ++ NO_AXIS_LIMITS, NO_AXIS_LIMITS, 0, 0, 0, Relative); ++ InitValuatorAxisStruct(device, 3, axes_labels[3], ++ NO_AXIS_LIMITS, NO_AXIS_LIMITS, 0, 0, 0, Relative); ++ ++ SetScrollValuator(device, 2, SCROLL_TYPE_HORIZONTAL, 1.0, SCROLL_FLAG_NONE); ++ SetScrollValuator(device, 3, SCROLL_TYPE_VERTICAL, 1.0, SCROLL_FLAG_PREFERRED); + + if (!InitPtrFeedbackClassDeviceStruct(device, xmir_pointer_control)) + return BadValue; @@ -5204,7 +5171,7 @@ +{ + int sx = mir_pointer_event_axis_value(pev, mir_pointer_axis_x); + int sy = mir_pointer_event_axis_value(pev, mir_pointer_axis_y); -+ int vscroll = 0; ++ float vscroll, hscroll; + ValuatorMask mask; + + pointer_ensure_focus(xmir_input, xmir_window, xmir_input->pointer, sx, sy); @@ -5214,17 +5181,17 @@ + valuator_mask_zero(&mask); + valuator_mask_set(&mask, 0, sx); + valuator_mask_set(&mask, 1, sy); -+ + QueuePointerEvents(xmir_input->pointer, MotionNotify, 0, + POINTER_ABSOLUTE | POINTER_SCREEN, &mask); + -+ /* Mouse wheel: Moving the wheel is a press+release of button 4/5 */ + vscroll = mir_pointer_event_axis_value(pev, mir_pointer_axis_vscroll); -+ if (vscroll) { -+ int button = vscroll < 0 ? 5 : 4; ++ hscroll = mir_pointer_event_axis_value(pev, mir_pointer_axis_hscroll); ++ if (vscroll || hscroll) { + valuator_mask_zero(&mask); -+ QueuePointerEvents(xmir_input->pointer, ButtonPress, button, 0, &mask); -+ QueuePointerEvents(xmir_input->pointer, ButtonRelease, button, 0, &mask); ++ valuator_mask_set_double(&mask, 3, -vscroll); ++ valuator_mask_set_double(&mask, 2, hscroll); ++ QueuePointerEvents(xmir_input->pointer, MotionNotify, 0, ++ POINTER_RELATIVE, &mask); + } +} + @@ -5360,17 +5327,23 @@ +{ + switch (mir_input_event_get_type(ev)) { + case mir_input_event_type_key: { -+ MirKeyboardEvent const *kev; -+ MirKeyboardAction action; -+ ValuatorMask mask; -+ -+ kev = mir_input_event_get_keyboard_event(ev); -+ action = mir_keyboard_event_action(kev); ++ MirKeyboardEvent const *kev = mir_input_event_get_keyboard_event(ev); ++ MirKeyboardAction action = mir_keyboard_event_action(kev); ++ int code = mir_keyboard_event_scan_code(kev) + 8; + -+ valuator_mask_zero(&mask); -+ QueueKeyboardEvents(xmir_input->keyboard, -+ action == mir_keyboard_action_up ? KeyRelease : KeyPress, -+ mir_keyboard_event_scan_code(kev) + 8, &mask); ++ /* ++ * Note: mir_keyboard_action_repeat must KeyRelease then KeyPress ++ * because it is already preceded by mir_keyboard_action_down and will ++ * be followed by mir_keyboard_action_up. ++ */ ++ if (action == mir_keyboard_action_up || ++ action == mir_keyboard_action_repeat) { ++ QueueKeyboardEvents(xmir_input->keyboard, KeyRelease, code); ++ } ++ if (action == mir_keyboard_action_down || ++ action == mir_keyboard_action_repeat) { ++ QueueKeyboardEvents(xmir_input->keyboard, KeyPress, code); ++ } + break; + } + case mir_input_event_type_touch: { @@ -5451,6 +5424,31 @@ +} + +static void ++xmir_handle_keymap_event(struct xmir_input *xmir_input, ++ MirKeymapEvent const* ev) ++{ ++ char * buffer = NULL; ++ size_t length = 0; ++ DeviceIntPtr master; ++ XkbDescPtr xkb; ++ XkbChangesRec changes = { 0 }; ++ ++ mir_keymap_event_get_keymap_buffer(ev, (char const **)&buffer, &length); ++ ++ xkb = XkbCompileKeymapFromString(xmir_input->keyboard, buffer, length); ++ ++ XkbUpdateDescActions(xkb, xkb->min_key_code, XkbNumKeys(xkb), &changes); ++ ++ XkbDeviceApplyKeymap(xmir_input->keyboard, xkb); ++ ++ master = GetMaster(xmir_input->keyboard, MASTER_KEYBOARD); ++ if (master && master->lastSlave == xmir_input->keyboard) ++ XkbDeviceApplyKeymap(master, xkb); ++ ++ XkbFreeKeyboard(xkb, XkbAllComponentsMask, TRUE); ++} ++ ++static void +xmir_handle_surface_event_in_main_thread(struct xmir_screen *xmir_screen, + struct xmir_window *xmir_window, + void *arg) @@ -5490,6 +5488,9 @@ + break; + case mir_event_type_surface_output: + break; ++ case mir_event_type_keymap: ++ xmir_handle_keymap_event(xmir_input, mir_event_get_keymap_event(ev)); ++ break; + default: + ErrorF("Received an unknown %u event\n", mir_event_get_type(ev)); + break; @@ -5548,12 +5549,9 @@ + + mieqFini(); +} -diff --git a/hw/xmir/xmir-output.c b/hw/xmir/xmir-output.c -new file mode 100644 -index 0000000..bde0940 --- /dev/null +++ b/hw/xmir/xmir-output.c -@@ -0,0 +1,449 @@ +@@ -0,0 +1,476 @@ +/* + * Copyright © 2015 Canonical Ltd + * @@ -5678,8 +5676,8 @@ + /* Odd resolutions like 1366x768 don't show correctly otherwise */ + randr_mode->mode.width = mode->horizontal_resolution; + randr_mode->mode.height = mode->vertical_resolution; -+ sprintf(randr_mode->name, "%dx%d@%.1fHz", -+ randr_mode->mode.width, randr_mode->mode.height, mode->refresh_rate); ++ sprintf(randr_mode->name, "%dx%d", ++ randr_mode->mode.width, randr_mode->mode.height); + + RROutputSetPhysicalSize(xmir_output->randr_output, mir_output->physical_width_mm, mir_output->physical_height_mm); + RROutputSetModes(xmir_output->randr_output, &randr_mode, 1, 1); @@ -5700,6 +5698,33 @@ +} + +static void ++xmir_screen_update_windowed_output(struct xmir_screen *xmir_screen) ++{ ++ struct xmir_output *xmir_output = xmir_screen->windowed; ++ RRModePtr randr_mode; ++ ++ RROutputSetConnection(xmir_output->randr_output, RR_Connected); ++ RROutputSetSubpixelOrder(xmir_output->randr_output, SubPixelUnknown); ++ ++ xmir_output->width = xmir_screen->screen->width; ++ xmir_output->height = xmir_screen->screen->height; ++ xmir_output->x = 0; ++ xmir_output->y = 0; ++ ++ randr_mode = xmir_cvt(xmir_output->width, xmir_output->height, 60, 0, 0); ++ randr_mode->mode.width = xmir_output->width; ++ randr_mode->mode.height = xmir_output->height; ++ sprintf(randr_mode->name, "%dx%d", ++ randr_mode->mode.width, randr_mode->mode.height); ++ ++ RROutputSetPhysicalSize(xmir_output->randr_output, 0, 0); ++ RROutputSetModes(xmir_output->randr_output, &randr_mode, 1, 1); ++ RRCrtcNotify(xmir_output->randr_crtc, randr_mode, ++ xmir_output->x, xmir_output->y, ++ RR_Rotate_0, NULL, 1, &xmir_output->randr_output); ++} ++ ++static void +xmir_output_screen_resized(struct xmir_screen *xmir_screen) +{ + ScreenPtr screen = xmir_screen->screen; @@ -5722,15 +5747,15 @@ + update_desktop_dimensions(); +} + -+static void -+xmir_output_create(struct xmir_screen *xmir_screen, MirDisplayOutput *mir_output, const char *name) ++static struct xmir_output* ++xmir_output_create(struct xmir_screen *xmir_screen, const char *name) +{ + struct xmir_output *xmir_output; + + xmir_output = calloc(sizeof *xmir_output, 1); + if (xmir_output == NULL) { + FatalError("No memory for creating output\n"); -+ return; ++ return NULL; + } + + xmir_output->xmir_screen = xmir_screen; @@ -5740,8 +5765,7 @@ + RRCrtcGammaSetSize(xmir_output->randr_crtc, 256); + RROutputSetCrtcs(xmir_output->randr_output, &xmir_output->randr_crtc, 1); + xorg_list_append(&xmir_output->link, &xmir_screen->output_list); -+ if (mir_output) -+ xmir_output_update(xmir_output, mir_output); ++ return xmir_output; +} + +void @@ -5859,8 +5883,6 @@ + return; + + if (!xmir_screen->windowed) { -+ xmir_screen->windowed = 1; -+ + XMIR_DEBUG(("Root resized, removing all outputs and inserting fake output\n")); + + while (!xorg_list_is_empty(&xmir_screen->output_list)) { @@ -5870,6 +5892,8 @@ + RROutputDestroy(xmir_output->randr_output); + xmir_output_destroy(xmir_output); + } ++ ++ xmir_screen->windowed = xmir_output_create(xmir_screen, "Windowed"); + } + + XMIR_DEBUG(("Output resized %ix%i with rotation %i\n", @@ -5883,10 +5907,10 @@ + + if (xmir_screen->glamor) { + glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(pixmap); -+ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb); ++ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); + glClearColor(0., 0., 0., 1.); + glClear(GL_COLOR_BUFFER_BIT); -+ glamor_copy_n_to_n_nf(&screen->root->drawable, &pixmap->drawable, ++ glamor_copy(&screen->root->drawable, &pixmap->drawable, + NULL, ©_box, 1, 0, 0, FALSE, FALSE, 0, NULL); + glBindFramebuffer(GL_FRAMEBUFFER, 0); + } else { @@ -5904,16 +5928,12 @@ + int y; + for (y = copy_box.y1; y < copy_box.y2; ++y) { + memcpy(dst, src, line_len); -+ /* Bother filling the edges? + memset(dst+line_len, 0, dst_stride-line_len); -+ */ + src += src_stride; + dst += dst_stride; + } -+ /* Bother filling the edges? + if (y < window_height) + memset(dst, 0, (window_height - y) * dst_stride); -+ */ + } + + screen->width = window_width; @@ -5923,7 +5943,7 @@ + + screen->SetScreenPixmap(pixmap); + -+ SetRootClip(screen, TRUE); ++ SetRootClip(screen, ROOT_CLIP_FULL); + + box.x1 = box.y1 = 0; + box.x2 = window_width; @@ -5943,6 +5963,7 @@ + miPointerSetScreen(pDev, 0, x, y); + } + ++ xmir_screen_update_windowed_output(xmir_screen); + if (ConnectionInfo) + RRScreenSizeNotify(xmir_screen->screen); + update_desktop_dimensions(); @@ -5982,6 +6003,7 @@ + for (i = 0; i < display_config->num_outputs; i++) { + char name[32]; + MirDisplayOutput *mir_output = &display_config->outputs[i]; ++ struct xmir_output *xmir_output; + const char* output_type_str = xmir_get_output_type_str(mir_output); + int type_count = i; + @@ -5989,7 +6011,10 @@ + type_count = output_type_count[mir_output->type]++; + + snprintf(name, sizeof name, "%s-%d", output_type_str, type_count); -+ xmir_output_create(xmir_screen, mir_output, name); ++ xmir_output = xmir_output_create(xmir_screen, name); ++ if (!xmir_output) ++ return FALSE; ++ xmir_output_update(xmir_output, mir_output); + } + + RRScreenSetSizeRange(xmir_screen->screen, 320, 200, INT16_MAX, INT16_MAX); @@ -6003,12 +6028,9 @@ + + return TRUE; +} -diff --git a/hw/xmir/xmir-thread-proxy.c b/hw/xmir/xmir-thread-proxy.c -new file mode 100644 -index 0000000..dbb187f --- /dev/null +++ b/hw/xmir/xmir-thread-proxy.c -@@ -0,0 +1,109 @@ +@@ -0,0 +1,115 @@ +/* + * Copyright © 2012-2015 Canonical Ltd + * @@ -6107,23 +6129,26 @@ +} + +void -+xmir_process_from_eventloop(void) ++xmir_process_from_eventloop_except(const struct xmir_window *w) +{ + for (;;) { + struct message msg; + ssize_t got = read(pipefds[0], &msg, sizeof msg); + if (got < 0) + return; -+ if (got == sizeof(msg)) ++ if (got == sizeof(msg) && w != msg.xmir_window) + msg.callback(msg.xmir_screen, msg.xmir_window, msg.arg); + } +} -diff --git a/hw/xmir/xmir.c b/hw/xmir/xmir.c -new file mode 100644 -index 0000000..033ae92 ++ ++void ++xmir_process_from_eventloop(void) ++{ ++ xmir_process_from_eventloop_except(NULL); ++} --- /dev/null +++ b/hw/xmir/xmir.c -@@ -0,0 +1,1564 @@ +@@ -0,0 +1,1729 @@ +/* + * Copyright © 2015 Canonical Ltd + * @@ -6190,19 +6215,21 @@ + Atom _NET_WM_WINDOW_TYPE_COMBO; + Atom _NET_WM_WINDOW_TYPE_DND; + Atom _NET_WM_WINDOW_TYPE_NORMAL; ++ Atom _MIR_WM_PERSISTENT_ID; +} known_atom; + -+static Atom get_atom(const char *name, Atom *cache) ++static Atom get_atom(const char *name, Atom *cache, Bool create) +{ + if (!*cache) { -+ *cache = MakeAtom(name, strlen(name), False); ++ *cache = MakeAtom(name, strlen(name), create); + if (*cache) + XMIR_DEBUG(("Atom %s = %lu\n", name, (unsigned long)*cache)); + } + return *cache; +} + -+#define GET_ATOM(_a) get_atom(#_a, &known_atom._a) ++#define GET_ATOM(_a) get_atom(#_a, &known_atom._a, False) ++#define MAKE_ATOM(_a) get_atom(#_a, &known_atom._a, True) + +extern __GLXprovider __glXDRI2Provider; + @@ -6210,6 +6237,12 @@ + +static const char get_title_from_top_window[] = "@"; + ++struct xmir_swap { ++ int server_generation; ++ struct xmir_screen *xmir_screen; ++ struct xmir_window *xmir_window; ++}; ++ +static void xmir_handle_buffer_received(MirBufferStream *stream, void *ctx); + +/* Required by GLX module */ @@ -6259,9 +6292,7 @@ +{ + ErrorF("-rootless Run rootless\n"); + ErrorF(" -flatten Flatten rootless X windows into a single surface\n"); -+ ErrorF(" (Unity8 requires -flatten; LP: #1497085)\n"); + ErrorF(" -neverclose Never close the flattened rootless window\n"); -+ ErrorF(" (ugly workaround for Unity8 bug LP: #1501346)\n"); + ErrorF("-title Set window title (@ = automatic)\n"); + ErrorF("-sw disable glamor rendering\n"); + ErrorF("-egl force use of EGL calls, disables DRI2 pass-through\n"); @@ -6430,6 +6461,38 @@ + return 0; +} + ++enum XWMHints_flag { ++ InputHint = 1 ++ /* There are more but not yet required */ ++}; ++ ++typedef struct { ++ long flags; /* marks which fields in this structure are defined */ ++ Bool input; /* does this application rely on the window manager to ++ get keyboard input? */ ++ int initial_state; /* see below */ ++ Pixmap icon_pixmap; /* pixmap to be used as icon */ ++ Window icon_window; /* window to be used as icon */ ++ int icon_x, icon_y; /* initial position of icon */ ++ Pixmap icon_mask; /* icon mask bitmap */ ++ XID window_group; /* id of related window group */ ++ /* this structure may be extended in the future */ ++} XWMHints; ++ ++static XWMHints* ++xmir_get_window_prop_hints(WindowPtr window) ++{ ++ if (window->optional) { ++ PropertyPtr p = window->optional->userProps; ++ while (p) { ++ if (p->propertyName == XA_WM_HINTS) ++ return (XWMHints*)p->data; ++ p = p->next; ++ } ++ } ++ return NULL; ++} ++ +static void +damage_report(DamagePtr pDamage, RegionPtr pRegion, void *data) +{ @@ -6502,9 +6565,14 @@ + line_len = (x2 - x1) * bpp; + for (y = y1; y < y2; ++y) { + memcpy(dst, src, line_len); ++ if (x2 < region.width) ++ memset(dst+x2*bpp, 0, (region.width - x2)*bpp); + src += src_stride; + dst += region.stride; + } ++ ++ if (y2 < region.height) ++ memset(dst, 0, (region.height - y2)*region.stride); +} + +static void @@ -6539,11 +6607,21 @@ + } +} + ++static void ++xmir_swap(struct xmir_screen *xmir_screen, struct xmir_window *xmir_win) ++{ ++ MirBufferStream *stream = mir_surface_get_buffer_stream(xmir_win->surface); ++ struct xmir_swap *swap = calloc(sizeof(struct xmir_swap), 1); ++ swap->server_generation = serverGeneration; ++ swap->xmir_screen = xmir_screen; ++ swap->xmir_window = xmir_win; ++ mir_buffer_stream_swap_buffers(stream, xmir_handle_buffer_received, swap); ++} ++ +void xmir_repaint(struct xmir_window *xmir_win) +{ + struct xmir_screen *xmir_screen = xmir_screen_get(xmir_win->window->drawable.pScreen); + RegionPtr dirty = &xmir_win->region; -+ MirBufferStream *stream = mir_surface_get_buffer_stream(xmir_win->surface); + char wm_name[256]; + WindowPtr named = NULL; + @@ -6578,7 +6656,7 @@ + top_normal = top; + if (xmir_get_window_name(top, wm_name, sizeof wm_name)) + top_named = top; -+ ++ + top = top->firstChild; + } + if (!named) @@ -6600,14 +6678,12 @@ + case glamor_off: + xmir_sw_copy(xmir_screen, xmir_win, dirty); + xmir_win->has_free_buffer = FALSE; -+ mir_buffer_stream_swap_buffers(stream, xmir_handle_buffer_received, -+ xmir_win); ++ xmir_swap(xmir_screen, xmir_win); + break; + case glamor_dri: + xmir_glamor_copy(xmir_screen, xmir_win, dirty); + xmir_win->has_free_buffer = FALSE; -+ mir_buffer_stream_swap_buffers(stream, xmir_handle_buffer_received, -+ xmir_win); ++ xmir_swap(xmir_screen, xmir_win); + break; + case glamor_egl: + case glamor_egl_sync: @@ -6651,6 +6727,9 @@ + xclient_lagging = buf_width != xmir_win->window->drawable.width || + buf_height != xmir_win->window->drawable.height; + ++ if (xserver_lagging || !xorg_list_is_empty(&xmir_win->link_damage)) ++ xmir_repaint(xmir_win); ++ + if (xclient_lagging) { + if (xmir_screen->rootless) { + XID vlist[2] = {buf_width, buf_height}; @@ -6668,9 +6747,6 @@ + */ + } + -+ if (xserver_lagging || !xorg_list_is_empty(&xmir_win->link_damage)) -+ xmir_repaint(xmir_win); -+ + if (xserver_lagging) + DamageDamageRegion(&xmir_win->window->drawable, &xmir_win->region); +} @@ -6678,11 +6754,15 @@ +static void +xmir_handle_buffer_received(MirBufferStream *stream, void *ctx) +{ -+ struct xmir_window *xmir_win = ctx; -+ struct xmir_screen *xmir_screen = xmir_screen_get(xmir_win->window->drawable.pScreen); ++ struct xmir_swap *swap = ctx; ++ struct xmir_screen *xmir_screen = swap->xmir_screen; + -+ xmir_post_to_eventloop(xmir_handle_buffer_available, xmir_screen, -+ xmir_win, 0); ++ if (swap->server_generation == serverGeneration && !xmir_screen->closing) { ++ xmir_post_to_eventloop(xmir_handle_buffer_available, xmir_screen, ++ swap->xmir_window, 0); ++ } ++ ++ free(swap); +} + +static Bool @@ -6736,6 +6816,8 @@ + int mir_height = window->drawable.height / (1 + xmir_screen->doubled); + MirSurfaceSpec* spec = NULL; + WindowPtr wm_transient_for = NULL, positioning_parent = NULL; ++ MirPersistentId *persistent_id = NULL; ++ XWMHints *wm_hints = NULL; + char wm_name[1024]; + + screen->RealizeWindow = xmir_screen->RealizeWindow; @@ -6754,17 +6836,28 @@ + wm_type = xmir_get_window_prop_atom(window, GET_ATOM(_NET_WM_WINDOW_TYPE)); + wm_transient_for = xmir_get_window_prop_window(window, XA_WM_TRANSIENT_FOR); + -+ XMIR_DEBUG(("Realize %swindow %p \"%s\": %dx%d %+d%+d parent=%p\n" ++ XMIR_DEBUG(("Realize %swindow %p id=0x%x \"%s\": %dx%d %+d%+d parent=%p\n" + "\tdepth=%d redir=%u type=%hu class=%u visibility=%u viewable=%u\n" -+ "\toverride=%d _NET_WM_WINDOW_TYPE=%lu WM_TRANSIENT_FOR=%p\n", ++ "\toverride=%d _NET_WM_WINDOW_TYPE=%lu(%s)\n" ++ "\tWM_TRANSIENT_FOR=%p\n", + window == screen->root ? "ROOT " : "", -+ window, wm_name, mir_width, mir_height, ++ window, (int)window->drawable.id, wm_name, mir_width, mir_height, + window->drawable.x, window->drawable.y, + window->parent, + window->drawable.depth, + window->redirectDraw, window->drawable.type, + window->drawable.class, window->visibility, window->viewable, -+ window->overrideRedirect, (unsigned long)wm_type, wm_transient_for)); ++ window->overrideRedirect, ++ (unsigned long)wm_type, NameForAtom(wm_type)?:"", ++ wm_transient_for)); ++ ++ wm_hints = xmir_get_window_prop_hints(window); ++ if (wm_hints) { ++ XMIR_DEBUG(("\tWM_HINTS={flags=0x%lx,input=%s}\n", ++ wm_hints->flags, wm_hints->input?"True":"False")); ++ } else { ++ XMIR_DEBUG(("\tWM_HINTS=\n")); ++ } + + if (!window->viewable) { + return ret; @@ -6899,6 +6992,17 @@ + } + mir_surface_spec_release(spec); + ++ persistent_id = ++ mir_surface_request_persistent_id_sync(xmir_window->surface); ++ if (mir_persistent_id_is_valid(persistent_id)) { ++ const char *str = mir_persistent_id_as_string(persistent_id); ++ dixChangeWindowProperty(serverClient, window, ++ MAKE_ATOM(_MIR_WM_PERSISTENT_ID), ++ XA_STRING, 8, PropModeReplace, ++ strlen(str), (void*)str, FALSE); ++ } ++ mir_persistent_id_release(persistent_id); ++ + xmir_window->has_free_buffer = TRUE; + if (!mir_surface_is_valid(xmir_window->surface)) { + ErrorF("failed to create a surface: %s\n", mir_surface_get_error_message(xmir_window->surface)); @@ -6956,6 +7060,66 @@ + } +} + ++static Window ++xmir_get_current_input_focus(DeviceIntPtr kbd) ++{ ++ Window id = None; ++ FocusClassPtr focus = kbd->focus; ++ if (focus->win == NoneWin) ++ id = None; ++ else if (focus->win == PointerRootWin) ++ id = PointerRoot; ++ else ++ id = focus->win->drawable.id; ++ return id; ++} ++ ++static void ++xmir_handle_focus_event(struct xmir_window *xmir_window, ++ MirSurfaceFocusState state) ++{ ++ struct xmir_screen *xmir_screen = xmir_window->xmir_screen; ++ DeviceIntPtr keyboard = inputInfo.keyboard; /*PickKeyboard(serverClient);*/ ++ ++ if (xmir_screen->destroying_root) ++ return; ++ ++ if (xmir_window->surface) { /* It's a real Mir window */ ++ xmir_screen->last_focus = (state == mir_surface_focused) ? ++ xmir_window->window : NULL; ++ } ++ ++ if (xmir_screen->rootless) { ++ WindowPtr window = xmir_window->window; ++ const XWMHints *hints = xmir_get_window_prop_hints(window); ++ Bool refuse_focus = window->overrideRedirect || ++ (hints && (hints->flags & InputHint) && !hints->input); ++ if (!refuse_focus) { ++ Window id = (state == mir_surface_focused) ? ++ window->drawable.id : None; ++ SetInputFocus(serverClient, keyboard, id, RevertToParent, ++ CurrentTime, False); ++ } ++ } else if (!strcmp(xmir_screen->title, get_title_from_top_window)) { ++ /* ++ * So as to not break default behaviour, we only hack focus within ++ * the root window when in Unity8 invasive mode (-title @). ++ */ ++ Window id = None; ++ if (state == mir_surface_focused) { ++ id = xmir_screen->saved_focus; ++ if (id == None) ++ id = PointerRoot; ++ } else { ++ xmir_screen->saved_focus = xmir_get_current_input_focus(keyboard); ++ id = None; ++ } ++ SetInputFocus(serverClient, keyboard, id, RevertToNone, CurrentTime, ++ False); ++ } ++ /* else normal root window mode -- Xmir does not interfere in focus */ ++} ++ +void +xmir_handle_surface_event(struct xmir_window *xmir_window, MirSurfaceAttrib attr, int val) +{ @@ -6971,10 +7135,7 @@ + break; + case mir_surface_attrib_focus: + XMIR_DEBUG(("Focus: %s\n", xmir_surface_focus_str(val))); -+ if (xmir_window->surface) { /* It's a real Mir window */ -+ xmir_window->xmir_screen->last_focus = -+ (val == mir_surface_focused) ? xmir_window->window : NULL; -+ } ++ xmir_handle_focus_event(xmir_window, (MirSurfaceFocusState)val); + break; + case mir_surface_attrib_dpi: + XMIR_DEBUG(("DPI: %i\n", val)); @@ -7166,8 +7327,7 @@ + xmir_window->surface = NULL; + } + -+ /* drain all events from input and damage to prevent a race condition after mir_surface_release_sync */ -+ xmir_process_from_eventloop(); ++ xmir_process_from_eventloop_except(xmir_window); + + RegionUninit(&xmir_window->region); +} @@ -7201,6 +7361,9 @@ + struct xmir_screen *xmir_screen = xmir_screen_get(screen); + Bool ret; + ++ if (!window->parent) ++ xmir_screen->destroying_root = TRUE; ++ + xmir_unmap_input(xmir_screen, window); + xmir_unmap_surface(xmir_screen, window, TRUE); + @@ -7248,6 +7411,8 @@ + struct xmir_output *xmir_output, *next_xmir_output; + Bool ret; + ++ xmir_screen->closing = TRUE; ++ + if (xmir_screen->glamor && xmir_screen->gbm) + DRI2CloseScreen(screen); + @@ -7369,7 +7534,7 @@ + if (xmir_screen->glamor && !xmir_screen->rootless) { + glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(screen->devPrivate); + -+ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->base.fbo->fb); ++ glBindFramebuffer(GL_FRAMEBUFFER, pixmap_priv->fbo->fb); + glClear(GL_COLOR_BUFFER_BIT); + glBindFramebuffer(GL_FRAMEBUFFER, 0); + @@ -7526,6 +7691,13 @@ + + mir_connection_get_available_surface_formats(xmir_screen->conn, + format, sizeof(format)/sizeof(format[0]), &formats); ++ ++#if 0 /* Emulate the Mir Android graphics platform for LP: #1573470 */ ++ format[0] = mir_pixel_format_abgr_8888; ++ format[1] = mir_pixel_format_xbgr_8888; ++ formats = 2; ++#endif ++ + for (f = 0; f < formats; ++f) { + switch (format[f]) { + case mir_pixel_format_argb_8888: @@ -7550,11 +7722,14 @@ + return FALSE; + } + -+ /* Core DPI cannot report correct values (it's one value, we have multiple displays) -+ * Use the value from the -dpi commandline if set, or 96 otherwise. ++ /* ++ * Core DPI cannot report correct values (it's one value and we might have ++ * multiple displays). Use the value from the -dpi command line if set, or ++ * 96 otherwise. + * -+ * This matches the behaviour of all the desktop Xorg drivers. Clients which -+ * care can use the XRANDR extension to get correct per-output DPI information. ++ * This matches the behaviour of all the desktop Xorg drivers. Clients ++ * which care can use the XRandR extension to get correct per-output DPI ++ * information. + */ + xmir_screen->dpi = monitorResolution > 0 ? monitorResolution : 96; + @@ -7645,6 +7820,21 @@ + xmir_screen->CloseScreen = pScreen->CloseScreen; + pScreen->CloseScreen = xmir_close_screen; + ++ { ++ int v; ++ XMIR_DEBUG(("XMir initialized with %hd visuals:\n", ++ pScreen->numVisuals)); ++ for (v = 0; v < pScreen->numVisuals; ++v) { ++ VisualPtr visual = pScreen->visuals + v; ++ XMIR_DEBUG(("\tVisual id 0x%x: %lx %lx %lx, %hd planes\n", ++ (int)visual->vid, ++ (long)visual->redMask, ++ (long)visual->greenMask, ++ (long)visual->blueMask, ++ visual->nplanes)); ++ } ++ } ++ + return ret; +} + @@ -7688,12 +7878,9 @@ + FatalError("Couldn't add screen\n"); + } +} -diff --git a/hw/xmir/xmir.h b/hw/xmir/xmir.h -new file mode 100644 -index 0000000..0bb4b1d --- /dev/null +++ b/hw/xmir/xmir.h -@@ -0,0 +1,226 @@ +@@ -0,0 +1,232 @@ +/* + * Copyright © 2015 Canonical Ltd + * @@ -7745,11 +7932,12 @@ +#include + +struct xmir_window; ++struct xmir_output; + +struct xmir_screen { + ScreenPtr screen; + -+ int depth, rootless, windowed, doubled; ++ int depth, rootless, doubled; + enum {glamor_off=0, glamor_dri, glamor_egl, glamor_egl_sync} glamor; + + CreateScreenResourcesProcPtr CreateScreenResources; @@ -7786,15 +7974,21 @@ + MirPixelFormat depth24_pixel_format, depth32_pixel_format; + Bool flatten; + Bool neverclose; ++ Bool destroying_root; ++ Bool closing; + const char *title; + MirSurface *neverclosed; + struct xorg_list flattened_list; + struct xmir_window *flatten_top; + WindowPtr last_focus; ++ Window saved_focus; + + int dpi; + + DRI2InfoRec dri2; ++ ++ struct xmir_output *windowed; ++ Bool glamor_has_GL_EXT_framebuffer_blit; +}; + +struct xmir_pixmap { @@ -7847,12 +8041,10 @@ + +struct xmir_output { + struct xorg_list link; -+ struct wl_output *output; + struct xmir_screen *xmir_screen; + RROutputPtr randr_output; + RRCrtcPtr randr_crtc; + int32_t x, y, width, height; -+ Rotation rotation; +}; + +extern Bool xmir_debug_logging; @@ -7910,6 +8102,7 @@ +void xmir_post_to_eventloop(xmir_event_callback *cb, + struct xmir_screen*, struct xmir_window*, void*); +void xmir_process_from_eventloop(void); ++void xmir_process_from_eventloop_except(const struct xmir_window*); + +/* xmir-input.c */ +void xmir_surface_handle_event(MirSurface *surface, MirEvent const* ev, void *context); @@ -7920,6 +8113,3 @@ + (((major) * 10000000) + ((minor) * 100000) + ((patch) * 1000) + snap) + +#endif --- -2.7.0 - diff -Nru xorg-server-1.18.3/debian/rules xorg-server-1.18.4/debian/rules --- xorg-server-1.18.3/debian/rules 2017-07-17 17:03:32.000000000 +0000 +++ xorg-server-1.18.4/debian/rules 2017-07-17 17:03:33.000000000 +0000 @@ -58,7 +58,7 @@ endif # Mir isn't built on PPC -ifneq (,$(filter $(DEB_HOST_ARCH), arm64 powerpc ppc64el s390x)) +ifneq (,$(filter $(DEB_HOST_ARCH), powerpc ppc64el s390x)) build_xmir = --disable-xmir endif diff -Nru xorg-server-1.18.3/dix/cursor.c xorg-server-1.18.4/dix/cursor.c --- xorg-server-1.18.3/dix/cursor.c 2016-03-03 19:01:31.000000000 +0000 +++ xorg-server-1.18.4/dix/cursor.c 2016-07-19 17:13:36.000000000 +0000 @@ -288,6 +288,29 @@ goto error; *ppCurs = pCurs; + + if (argb) { + size_t i, size = bits->width * bits->height; + + for (i = 0; i < size; i++) { + if ((argb[i] & 0xff000000) == 0 && (argb[i] & 0xffffff) != 0) { + /* ARGB data doesn't seem pre-multiplied, fix it */ + for (i = 0; i < size; i++) { + CARD32 a, ar, ag, ab; + + a = argb[i] >> 24; + ar = a * ((argb[i] >> 16) & 0xff) / 0xff; + ag = a * ((argb[i] >> 8) & 0xff) / 0xff; + ab = a * (argb[i] & 0xff) / 0xff; + + argb[i] = a << 24 | ar << 16 | ag << 8 | ab; + } + + break; + } + } + } + return Success; error: diff -Nru xorg-server-1.18.3/dix/devices.c xorg-server-1.18.4/dix/devices.c --- xorg-server-1.18.3/dix/devices.c 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/dix/devices.c 2016-07-19 17:07:29.000000000 +0000 @@ -1682,8 +1682,7 @@ stuff->numKeyPerModifier); if (rc == MappingFailed || rc == -1) return BadValue; - if (rc != Success && rc != MappingSuccess && rc != MappingFailed && - rc != MappingBusy) + if (rc != MappingSuccess && rc != MappingFailed && rc != MappingBusy) return rc; rep.success = rc; diff -Nru xorg-server-1.18.3/dix/enterleave.c xorg-server-1.18.4/dix/enterleave.c --- xorg-server-1.18.3/dix/enterleave.c 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/dix/enterleave.c 2016-07-18 19:08:16.000000000 +0000 @@ -1446,19 +1446,25 @@ if ((to == NullWindow) || (to == PointerRootWin)) { if ((from == NullWindow) || (from == PointerRootWin)) { - if (from == PointerRootWin) + if (from == PointerRootWin) { + DeviceFocusEvent(dev, XI_FocusOut, mode, NotifyPointer, + sprite->win); DeviceFocusOutEvents(dev, sprite->win, GetCurrentRootWindow(dev), mode, NotifyPointer); + } /* Notify all the roots */ for (i = 0; i < nscreens; i++) DeviceFocusEvent(dev, XI_FocusOut, mode, out, screenInfo.screens[i]->root); } else { - if (IsParent(from, sprite->win)) + if (IsParent(from, sprite->win)) { + DeviceFocusEvent(dev, XI_FocusOut, mode, NotifyPointer, + sprite->win); DeviceFocusOutEvents(dev, sprite->win, from, mode, NotifyPointer); + } DeviceFocusEvent(dev, XI_FocusOut, mode, NotifyNonlinear, from); /* next call catches the root too, if the screen changed */ DeviceFocusOutEvents(dev, from, NullWindow, mode, @@ -1476,10 +1482,13 @@ } else { if ((from == NullWindow) || (from == PointerRootWin)) { - if (from == PointerRootWin) + if (from == PointerRootWin) { + DeviceFocusEvent(dev, XI_FocusOut, mode, NotifyPointer, + sprite->win); DeviceFocusOutEvents(dev, sprite->win, GetCurrentRootWindow(dev), mode, NotifyPointer); + } for (i = 0; i < nscreens; i++) DeviceFocusEvent(dev, XI_FocusOut, mode, out, screenInfo.screens[i]->root); @@ -1506,9 +1515,12 @@ if ((IsParent(from, sprite->win)) && (sprite->win != from) && (!IsParent(to, sprite->win)) && - (!IsParent(sprite->win, to))) + (!IsParent(sprite->win, to))) { + DeviceFocusEvent(dev, XI_FocusOut, mode, NotifyPointer, + sprite->win); DeviceFocusOutEvents(dev, sprite->win, from, mode, NotifyPointer); + } DeviceFocusEvent(dev, XI_FocusOut, mode, NotifyInferior, from); DeviceFocusInEvents(dev, from, to, mode, NotifyVirtual); DeviceFocusEvent(dev, XI_FocusIn, mode, NotifyAncestor, to); diff -Nru xorg-server-1.18.3/dix/Makefile.in xorg-server-1.18.4/dix/Makefile.in --- xorg-server-1.18.3/dix/Makefile.in 2016-04-04 18:39:51.000000000 +0000 +++ xorg-server-1.18.4/dix/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -245,6 +245,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -477,6 +479,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/dix/ptrveloc.c xorg-server-1.18.4/dix/ptrveloc.c --- xorg-server-1.18.3/dix/ptrveloc.c 2016-03-03 19:01:31.000000000 +0000 +++ xorg-server-1.18.4/dix/ptrveloc.c 2016-07-19 17:07:29.000000000 +0000 @@ -134,13 +134,19 @@ scheme = *protoScheme; vel = calloc(1, sizeof(DeviceVelocityRec)); schemeData = calloc(1, sizeof(PredictableAccelSchemeRec)); - if (!vel || !schemeData) + if (!vel || !schemeData) { + free(vel); + free(schemeData); return FALSE; + } InitVelocityData(vel); schemeData->vel = vel; scheme.accelData = schemeData; - if (!InitializePredictableAccelerationProperties(dev, vel, schemeData)) + if (!InitializePredictableAccelerationProperties(dev, vel, schemeData)) { + free(vel); + free(schemeData); return FALSE; + } /* all fine, assign scheme to device */ dev->valuator->accelScheme = scheme; return TRUE; diff -Nru xorg-server-1.18.3/doc/dtrace/Makefile.in xorg-server-1.18.4/doc/dtrace/Makefile.in --- xorg-server-1.18.3/doc/dtrace/Makefile.in 2016-04-04 18:39:51.000000000 +0000 +++ xorg-server-1.18.4/doc/dtrace/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -203,6 +203,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -435,6 +437,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/doc/Makefile.in xorg-server-1.18.4/doc/Makefile.in --- xorg-server-1.18.3/doc/Makefile.in 2016-04-04 18:39:51.000000000 +0000 +++ xorg-server-1.18.4/doc/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -232,6 +232,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -464,6 +466,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/dri3/Makefile.in xorg-server-1.18.4/dri3/Makefile.in --- xorg-server-1.18.3/dri3/Makefile.in 2016-04-04 18:39:51.000000000 +0000 +++ xorg-server-1.18.4/dri3/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -228,6 +228,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -460,6 +462,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/exa/exa_glyphs.c xorg-server-1.18.4/exa/exa_glyphs.c --- xorg-server-1.18.3/exa/exa_glyphs.c 2016-03-03 19:01:31.000000000 +0000 +++ xorg-server-1.18.4/exa/exa_glyphs.c 2016-07-18 19:08:16.000000000 +0000 @@ -618,9 +618,9 @@ } static void -exaGlyphsToDst(PicturePtr pSrc, PicturePtr pDst, ExaGlyphBufferPtr buffer) +exaGlyphsToDst(CARD8 op, PicturePtr pSrc, PicturePtr pDst, ExaGlyphBufferPtr buffer) { - exaCompositeRects(PictOpOver, pSrc, buffer->mask, pDst, buffer->count, + exaCompositeRects(op, pSrc, buffer->mask, pDst, buffer->count, buffer->rects); buffer->count = 0; @@ -801,7 +801,7 @@ 0, 0, x - glyph->info.x, y - glyph->info.y) == ExaGlyphNeedFlush) { - exaGlyphsToDst(pSrc, pDst, &buffer); + exaGlyphsToDst(op, pSrc, pDst, &buffer); exaBufferGlyph(pScreen, &buffer, glyph, pSrc, pDst, xSrc + (x - glyph->info.x) - first_xOff, ySrc + (y - glyph->info.y) - first_yOff, @@ -821,7 +821,7 @@ if (maskFormat) exaGlyphsToMask(pMask, &buffer); else - exaGlyphsToDst(pSrc, pDst, &buffer); + exaGlyphsToDst(op, pSrc, pDst, &buffer); } if (maskFormat) { diff -Nru xorg-server-1.18.3/exa/exa_render.c xorg-server-1.18.4/exa/exa_render.c --- xorg-server-1.18.3/exa/exa_render.c 2016-03-03 19:01:31.000000000 +0000 +++ xorg-server-1.18.4/exa/exa_render.c 2016-07-18 19:08:16.000000000 +0000 @@ -1141,7 +1141,8 @@ exaPrepareAccess(pPicture->pDrawable, EXA_PREPARE_DEST); for (; ntrap; ntrap--, traps++) - (*ps->RasterizeTrapezoid) (pPicture, traps, -bounds.x1, -bounds.y1); + if (xTrapezoidValid(traps)) + (*ps->RasterizeTrapezoid) (pPicture, traps, -bounds.x1, -bounds.y1); exaFinishAccess(pPicture->pDrawable, EXA_PREPARE_DEST); xRel = bounds.x1 + xSrc - xDst; diff -Nru xorg-server-1.18.3/exa/Makefile.in xorg-server-1.18.4/exa/Makefile.in --- xorg-server-1.18.3/exa/Makefile.in 2016-04-04 18:39:51.000000000 +0000 +++ xorg-server-1.18.4/exa/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -232,6 +232,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -464,6 +466,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/fb/Makefile.in xorg-server-1.18.4/fb/Makefile.in --- xorg-server-1.18.3/fb/Makefile.in 2016-04-04 18:39:51.000000000 +0000 +++ xorg-server-1.18.4/fb/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -261,6 +261,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -493,6 +495,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/glamor/glamor.c xorg-server-1.18.4/glamor/glamor.c --- xorg-server-1.18.3/glamor/glamor.c 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor.c 2016-07-19 17:14:58.000000000 +0000 @@ -140,6 +140,42 @@ return pixmap_priv->fbo->tex; } +void +glamor_bind_texture(glamor_screen_private *glamor_priv, GLenum texture, + glamor_pixmap_fbo *fbo, Bool destination_red) +{ + glActiveTexture(texture); + glBindTexture(GL_TEXTURE_2D, fbo->tex); + + /* If we're pulling data from a GL_RED texture, then whether we + * want to make it an A,0,0,0 result or a 0,0,0,R result depends + * on whether the destination is also a GL_RED texture. + * + * For GL_RED destinations, we need to leave the bits in the R + * channel. For all other destinations, we need to clear out the R + * channel so that it returns zero for R, G and B. + * + * Note that we're leaving the SWIZZLE_A value alone; for GL_RED + * destinations, that means we'll actually be returning R,0,0,R, + * but it doesn't matter as the bits in the alpha channel aren't + * going anywhere. + */ + + /* Is the operand a GL_RED fbo? + */ + + if (glamor_fbo_red_is_alpha(glamor_priv, fbo)) { + + /* If destination is also GL_RED, then preserve the bits in + * the R channel */ + + if (destination_red) + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_RED); + else + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_ZERO); + } +} + PixmapPtr glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth, unsigned int usage) @@ -816,3 +852,12 @@ } return -1; } + +void +glamor_finish(ScreenPtr screen) +{ + glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); + + glamor_make_current(glamor_priv); + glFinish(); +} diff -Nru xorg-server-1.18.3/glamor/glamor_composite_glyphs.c xorg-server-1.18.4/glamor/glamor_composite_glyphs.c --- xorg-server-1.18.3/glamor/glamor_composite_glyphs.c 2016-03-11 18:43:16.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor_composite_glyphs.c 2016-07-18 19:08:16.000000000 +0000 @@ -246,8 +246,7 @@ glamor_put_vbo_space(drawable->pScreen); glEnable(GL_SCISSOR_TEST); - glActiveTexture(GL_TEXTURE1); - glBindTexture(GL_TEXTURE_2D, atlas_fbo->tex); + glamor_bind_texture(glamor_priv, GL_TEXTURE1, atlas_fbo, FALSE); for (;;) { if (!glamor_use_program_render(prog, op, src, dst)) @@ -558,7 +557,7 @@ if (!atlas) return; if (atlas->atlas) - FreePicture(atlas->atlas, 0); + (*atlas->atlas->drawable.pScreen->DestroyPixmap)(atlas->atlas); free (atlas); } diff -Nru xorg-server-1.18.3/glamor/glamor_compositerects.c xorg-server-1.18.4/glamor/glamor_compositerects.c --- xorg-server-1.18.3/glamor/glamor_compositerects.c 2016-03-23 18:41:23.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor_compositerects.c 2016-07-18 19:08:16.000000000 +0000 @@ -107,7 +107,6 @@ struct glamor_pixmap_private *priv; pixman_region16_t region; pixman_box16_t *boxes; - int dst_x, dst_y; int num_boxes; PicturePtr source = NULL; Bool need_free_region = FALSE; @@ -225,17 +224,18 @@ RegionExtents(®ion)->x2, RegionExtents(®ion)->y2, RegionNumRects(®ion)); - glamor_get_drawable_deltas(dst->pDrawable, pixmap, &dst_x, &dst_y); - pixman_region_translate(®ion, dst_x, dst_y); - - DEBUGF("%s: pixmap +(%d, %d) extents (%d, %d),(%d, %d)\n", - __FUNCTION__, dst_x, dst_y, - RegionExtents(®ion)->x1, RegionExtents(®ion)->y1, - RegionExtents(®ion)->x2, RegionExtents(®ion)->y2); - boxes = pixman_region_rectangles(®ion, &num_boxes); if (op == PictOpSrc || op == PictOpClear) { CARD32 pixel; + int dst_x, dst_y; + + glamor_get_drawable_deltas(dst->pDrawable, pixmap, &dst_x, &dst_y); + pixman_region_translate(®ion, dst_x, dst_y); + + DEBUGF("%s: pixmap +(%d, %d) extents (%d, %d),(%d, %d)\n", + __FUNCTION__, dst_x, dst_y, + RegionExtents(®ion)->x1, RegionExtents(®ion)->y1, + RegionExtents(®ion)->x2, RegionExtents(®ion)->y2); if (op == PictOpClear) pixel = 0; diff -Nru xorg-server-1.18.3/glamor/glamor_copy.c xorg-server-1.18.4/glamor/glamor_copy.c --- xorg-server-1.18.3/glamor/glamor_copy.c 2016-03-11 18:43:16.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor_copy.c 2016-07-18 19:08:16.000000000 +0000 @@ -38,8 +38,8 @@ struct copy_args *args = arg; glamor_pixmap_fbo *src = args->src; - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, src->tex); + glamor_bind_texture(glamor_get_screen_private(dst->drawable.pScreen), + GL_TEXTURE0, src, TRUE); glUniform2f(prog->fill_offset_uniform, args->dx, args->dy); glUniform2f(prog->fill_size_inv_uniform, 1.0f/src->width, 1.0f/src->height); @@ -67,8 +67,8 @@ struct copy_args *args = arg; glamor_pixmap_fbo *src = args->src; - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, src->tex); + glamor_bind_texture(glamor_get_screen_private(dst->drawable.pScreen), + GL_TEXTURE0, src, TRUE); glUniform2f(prog->fill_offset_uniform, args->dx, args->dy); glUniform2f(prog->fill_size_inv_uniform, 1.0f/src->width, 1.0f/src->height); diff -Nru xorg-server-1.18.3/glamor/glamor_dash.c xorg-server-1.18.4/glamor/glamor_dash.c --- xorg-server-1.18.3/glamor/glamor_dash.c 2016-03-11 18:43:16.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor_dash.c 2016-07-18 19:08:16.000000000 +0000 @@ -188,8 +188,7 @@ /* Set the dash pattern as texture 1 */ - glActiveTexture(GL_TEXTURE1); - glBindTexture(GL_TEXTURE_2D, dash_priv->fbo->tex); + glamor_bind_texture(glamor_priv, GL_TEXTURE1, dash_priv->fbo, FALSE); glUniform1i(prog->dash_uniform, 1); glUniform1f(prog->dash_length_uniform, dash_pixmap->drawable.width); diff -Nru xorg-server-1.18.3/glamor/glamor_egl.c xorg-server-1.18.4/glamor/glamor_egl.c --- xorg-server-1.18.3/glamor/glamor_egl.c 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor_egl.c 2016-07-19 17:07:29.000000000 +0000 @@ -823,11 +823,6 @@ glamor_egl->has_gem = glamor_egl_check_has_gem(fd); -#ifndef GLAMOR_GLES2 - eglBindAPI(EGL_OPENGL_API); -#else - eglBindAPI(EGL_OPENGL_ES_API); -#endif if (!eglInitialize (glamor_egl->display, &glamor_egl->major, &glamor_egl->minor)) { xf86DrvMsg(scrn->scrnIndex, X_ERROR, "eglInitialize() failed\n"); @@ -835,6 +830,12 @@ goto error; } +#ifndef GLAMOR_GLES2 + eglBindAPI(EGL_OPENGL_API); +#else + eglBindAPI(EGL_OPENGL_ES_API); +#endif + version = eglQueryString(glamor_egl->display, EGL_VERSION); xf86Msg(X_INFO, "%s: EGL version %s:\n", glamor_name, version); diff -Nru xorg-server-1.18.3/glamor/glamor_fbo.c xorg-server-1.18.4/glamor/glamor_fbo.c --- xorg-server-1.18.3/glamor/glamor_fbo.c 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor_fbo.c 2016-07-19 17:14:58.000000000 +0000 @@ -340,10 +340,8 @@ glBindTexture(GL_TEXTURE_2D, tex); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - if (format == glamor_priv->one_channel_format && format == GL_RED) { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_ZERO); + if (format == glamor_priv->one_channel_format && format == GL_RED) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_RED); - } glamor_priv->suppress_gl_out_of_memory_logging = true; glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0, format, GL_UNSIGNED_BYTE, NULL); diff -Nru xorg-server-1.18.3/glamor/glamor.h xorg-server-1.18.4/glamor/glamor.h --- xorg-server-1.18.3/glamor/glamor.h 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor.h 2016-07-19 17:07:29.000000000 +0000 @@ -342,6 +342,7 @@ extern Bool _X_EXPORT glamor_change_window_attributes(WindowPtr pWin, unsigned long mask); extern void _X_EXPORT glamor_copy_window(WindowPtr window, DDXPointRec old_origin, RegionPtr src_region); +extern _X_EXPORT void glamor_finish(ScreenPtr screen); #define HAS_GLAMOR_TEXT 1 #ifdef GLAMOR_FOR_XORG diff -Nru xorg-server-1.18.3/glamor/glamor_priv.h xorg-server-1.18.4/glamor/glamor_priv.h --- xorg-server-1.18.3/glamor/glamor_priv.h 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor_priv.h 2016-07-19 17:14:58.000000000 +0000 @@ -593,6 +593,34 @@ Bool glamor_pixmap_fbo_fixup(ScreenPtr screen, PixmapPtr pixmap); void glamor_fbo_expire(glamor_screen_private *glamor_priv); +/* Return whether 'picture' is alpha-only */ +static inline Bool glamor_picture_is_alpha(PicturePtr picture) +{ + return picture->format == PICT_a1 || picture->format == PICT_a8; +} + +/* Return whether 'fbo' is storing alpha bits in the red channel */ +static inline Bool +glamor_fbo_red_is_alpha(glamor_screen_private *glamor_priv, glamor_pixmap_fbo *fbo) +{ + /* True when the format is GL_RED (that can only happen when our one channel format is GL_RED */ + return fbo->format == GL_RED; +} + +/* Return whether 'picture' is storing alpha bits in the red channel */ +static inline Bool +glamor_picture_red_is_alpha(PicturePtr picture) +{ + /* True when the picture is alpha only and the screen is using GL_RED for alpha pictures */ + return glamor_picture_is_alpha(picture) && + glamor_get_screen_private(picture->pDrawable->pScreen)->one_channel_format == GL_RED; +} + +void glamor_bind_texture(glamor_screen_private *glamor_priv, + GLenum texture, + glamor_pixmap_fbo *fbo, + Bool destination_red); + glamor_pixmap_fbo *glamor_create_fbo_array(glamor_screen_private *glamor_priv, int w, int h, GLenum format, int flag, int block_w, int block_h, diff -Nru xorg-server-1.18.3/glamor/glamor_program.c xorg-server-1.18.4/glamor/glamor_program.c --- xorg-server-1.18.3/glamor/glamor_program.c 2016-03-16 13:42:27.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor_program.c 2016-07-18 19:08:16.000000000 +0000 @@ -445,6 +445,7 @@ static void glamor_set_blend(CARD8 op, glamor_program_alpha alpha, PicturePtr dst) { + glamor_screen_private *glamor_priv = glamor_get_screen_private(dst->pDrawable->pScreen); GLenum src_blend, dst_blend; struct blendinfo *op_info; @@ -459,6 +460,9 @@ break; } + if (glamor_priv->gl_flavor != GLAMOR_GL_ES2) + glDisable(GL_COLOR_LOGIC_OP); + if (op == PictOpSrc) return; @@ -527,6 +531,7 @@ glamor_set_blend(op, prog->alpha, dst); return glamor_set_texture((PixmapPtr) src->pDrawable, + glamor_picture_red_is_alpha(dst), 0, 0, prog->fill_offset_uniform, prog->fill_size_inv_uniform); @@ -545,7 +550,8 @@ { glamor_set_blend(op, prog->alpha, dst); - return glamor_set_texture_pixmap((PixmapPtr) src->pDrawable); + return glamor_set_texture_pixmap((PixmapPtr) src->pDrawable, + glamor_picture_red_is_alpha(dst)); } static const glamor_facet glamor_source_1x1_picture = { diff -Nru xorg-server-1.18.3/glamor/glamor_render.c xorg-server-1.18.4/glamor/glamor_render.c --- xorg-server-1.18.3/glamor/glamor_render.c 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor_render.c 2016-07-19 17:07:29.000000000 +0000 @@ -105,7 +105,7 @@ /* The texture and the pixmap size is not match eaxctly, so can't sample it directly. * rel_sampler will recalculate the texture coords.*/ const char *rel_sampler = - " vec4 rel_sampler(sampler2D tex_image, vec2 tex, vec4 wh, int repeat)\n" + " vec4 rel_sampler_rgba(sampler2D tex_image, vec2 tex, vec4 wh, int repeat)\n" "{\n" " if (repeat >= RepeatFix) {\n" " tex = rel_tex_coord(tex, wh, repeat);\n" @@ -117,6 +117,19 @@ " }\n" " }\n" " return texture2D(tex_image, tex);\n" + "}\n" + " vec4 rel_sampler_rgbx(sampler2D tex_image, vec2 tex, vec4 wh, int repeat)\n" + "{\n" + " if (repeat >= RepeatFix) {\n" + " tex = rel_tex_coord(tex, wh, repeat);\n" + " if (repeat == RepeatFix + RepeatNone) {\n" + " if (tex.x < 0.0 || tex.x >= 1.0 || \n" + " tex.y < 0.0 || tex.y >= 1.0)\n" + " return vec4(0.0, 0.0, 0.0, 0.0);\n" + " tex = (fract(tex) / wh.xy);\n" + " }\n" + " }\n" + " return vec4(texture2D(tex_image, tex).rgb, 1.0);\n" "}\n"; const char *source_solid_fetch = @@ -131,8 +144,8 @@ "uniform vec4 source_wh;" "vec4 get_source()\n" "{\n" - " return rel_sampler(source_sampler, source_texture,\n" - " source_wh, source_repeat_mode);\n" + " return rel_sampler_rgba(source_sampler, source_texture,\n" + " source_wh, source_repeat_mode);\n" "}\n"; const char *source_pixmap_fetch = "varying vec2 source_texture;\n" @@ -140,9 +153,8 @@ "uniform vec4 source_wh;\n" "vec4 get_source()\n" "{\n" - " return vec4(rel_sampler(source_sampler, source_texture,\n" - " source_wh, source_repeat_mode).rgb,\n" - " 1.0);\n" + " return rel_sampler_rgbx(source_sampler, source_texture,\n" + " source_wh, source_repeat_mode);\n" "}\n"; const char *mask_none = "vec4 get_mask()\n" @@ -161,8 +173,8 @@ "uniform vec4 mask_wh;\n" "vec4 get_mask()\n" "{\n" - " return rel_sampler(mask_sampler, mask_texture,\n" - " mask_wh, mask_repeat_mode);\n" + " return rel_sampler_rgba(mask_sampler, mask_texture,\n" + " mask_wh, mask_repeat_mode);\n" "}\n"; const char *mask_pixmap_fetch = "varying vec2 mask_texture;\n" @@ -170,8 +182,8 @@ "uniform vec4 mask_wh;\n" "vec4 get_mask()\n" "{\n" - " return vec4(rel_sampler(mask_sampler, mask_texture,\n" - " mask_wh, mask_repeat_mode).rgb, 1.0);\n" + " return rel_sampler_rgbx(mask_sampler, mask_texture,\n" + " mask_wh, mask_repeat_mode);\n" "}\n"; const char *dest_swizzle_default = @@ -500,15 +512,24 @@ glamor_set_composite_texture(glamor_screen_private *glamor_priv, int unit, PicturePtr picture, PixmapPtr pixmap, - GLuint wh_location, GLuint repeat_location) + GLuint wh_location, GLuint repeat_location, + glamor_pixmap_private *dest_priv) { glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(pixmap); + glamor_pixmap_fbo *fbo = pixmap_priv->fbo; float wh[4]; int repeat_type; glamor_make_current(glamor_priv); - glActiveTexture(GL_TEXTURE0 + unit); - glBindTexture(GL_TEXTURE_2D, pixmap_priv->fbo->tex); + + /* The red channel swizzling doesn't depend on whether we're using + * 'fbo' as source or mask as we must have the same answer in case + * the same fbo is being used for both. That means the mask + * channel will sometimes get red bits in the R channel, and + * sometimes get zero bits in the R channel, which is harmless. + */ + glamor_bind_texture(glamor_priv, GL_TEXTURE0 + unit, fbo, + glamor_fbo_red_is_alpha(glamor_priv, dest_priv->fbo)); repeat_type = picture->repeatType; switch (picture->repeatType) { case RepeatNone: @@ -557,8 +578,8 @@ * **/ if (glamor_pixmap_priv_is_large(pixmap_priv) || - (glamor_priv->gl_flavor == GLAMOR_GL_ES2 && repeat_type == RepeatNone && - picture->transform)) { + ((!PICT_FORMAT_A(picture->format) || glamor_priv->gl_flavor == GLAMOR_GL_ES2) && + repeat_type == RepeatNone && picture->transform)) { glamor_pixmap_fbo_fix_wh_ratio(wh, pixmap, pixmap_priv); glUniform4fv(wh_location, 1, wh); @@ -1068,7 +1089,8 @@ glamor_set_composite_texture(glamor_priv, 0, shader->source, shader->source_pixmap, shader->source_wh, - shader->source_repeat_mode); + shader->source_repeat_mode, + dest_priv); } if (key->mask != SHADER_MASK_NONE) { @@ -1080,10 +1102,14 @@ glamor_set_composite_texture(glamor_priv, 1, shader->mask, shader->mask_pixmap, shader->mask_wh, - shader->mask_repeat_mode); + shader->mask_repeat_mode, + dest_priv); } } + if (glamor_priv->gl_flavor != GLAMOR_GL_ES2) + glDisable(GL_COLOR_LOGIC_OP); + if (op_info->source_blend == GL_ONE && op_info->dest_blend == GL_ZERO) { glDisable(GL_BLEND); } @@ -1144,12 +1170,12 @@ } } + glamor_make_current(glamor_priv); + glamor_set_destination_pixmap_priv_nc(glamor_priv, dest_pixmap, dest_pixmap_priv); glamor_composite_set_shader_blend(glamor_priv, dest_pixmap_priv, &key, shader, &op_info); glamor_set_alu(screen, GXcopy); - glamor_make_current(glamor_priv); - glamor_priv->has_source_coords = key.source != SHADER_SOURCE_SOLID; glamor_priv->has_mask_coords = (key.mask != SHADER_MASK_NONE && key.mask != SHADER_MASK_SOLID); @@ -1392,6 +1418,36 @@ DEBUGF("clipped (%d %d) (%d %d) (%d %d) width %d height %d \n", x_source, y_source, x_mask, y_mask, x_dest, y_dest, width, height); + /* Is the composite operation equivalent to a copy? */ + if (!mask && !source->alphaMap && !dest->alphaMap + && source->pDrawable && !source->transform + && ((op == PictOpSrc + && (source->format == dest->format + || (PICT_FORMAT_COLOR(dest->format) + && PICT_FORMAT_COLOR(source->format) + && dest->format == PICT_FORMAT(PICT_FORMAT_BPP(source->format), + PICT_FORMAT_TYPE(source->format), + 0, + PICT_FORMAT_R(source->format), + PICT_FORMAT_G(source->format), + PICT_FORMAT_B(source->format))))) + || (op == PictOpOver + && source->format == dest->format + && !PICT_FORMAT_A(source->format))) + && x_source >= 0 && y_source >= 0 + && (x_source + width) <= source->pDrawable->width + && (y_source + height) <= source->pDrawable->height) { + x_source += source->pDrawable->x; + y_source += source->pDrawable->y; + x_dest += dest->pDrawable->x; + y_dest += dest->pDrawable->y; + glamor_copy(source->pDrawable, dest->pDrawable, NULL, + box, nbox, x_source - x_dest, + y_source - y_dest, FALSE, FALSE, 0, NULL); + ok = TRUE; + goto out; + } + /* XXX is it possible source mask have non-zero drawable.x/y? */ if (source && ((!source->pDrawable diff -Nru xorg-server-1.18.3/glamor/glamor_spans.c xorg-server-1.18.4/glamor/glamor_spans.c --- xorg-server-1.18.3/glamor/glamor_spans.c 2016-03-11 18:43:16.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor_spans.c 2016-07-18 19:08:16.000000000 +0000 @@ -294,8 +294,7 @@ BoxPtr box = glamor_pixmap_box_at(pixmap_priv, box_index); glamor_pixmap_fbo *fbo = glamor_pixmap_fbo_at(pixmap_priv, box_index); - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, fbo->tex); + glamor_bind_texture(glamor_priv, GL_TEXTURE0, fbo, TRUE); s = src; for (n = 0; n < numPoints; n++) { diff -Nru xorg-server-1.18.3/glamor/glamor_text.c xorg-server-1.18.4/glamor/glamor_text.c --- xorg-server-1.18.3/glamor/glamor_text.c 2016-03-11 18:43:16.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor_text.c 2016-07-19 17:14:39.000000000 +0000 @@ -446,16 +446,17 @@ glamor_get_drawable_deltas(drawable, pixmap, &off_x, &off_y); if (width >= 0) { - box.x1 = off_x + drawable->x + x; - box.x2 = off_x + drawable->x + x + width; + box.x1 = drawable->x + x; + box.x2 = drawable->x + x + width; } else { - box.x1 = off_x + drawable->x + x + width; - box.x2 = off_x + drawable->x + x; + box.x1 = drawable->x + x + width; + box.x2 = drawable->x + x; } - box.y1 = off_y + drawable->y + y - gc->font->info.fontAscent; - box.y2 = off_y + drawable->y + y + gc->font->info.fontDescent; + box.y1 = drawable->y + y - gc->font->info.fontAscent; + box.y2 = drawable->y + y + gc->font->info.fontDescent; RegionInit(®ion, &box, 1); RegionIntersect(®ion, ®ion, gc->pCompositeClip); + RegionTranslate(®ion, off_x, off_y); glamor_solid_boxes(pixmap, RegionRects(®ion), RegionNumRects(®ion), gc->bgPixel); RegionUninit(®ion); } diff -Nru xorg-server-1.18.3/glamor/glamor_transfer.c xorg-server-1.18.4/glamor/glamor_transfer.c --- xorg-server-1.18.3/glamor/glamor_transfer.c 2016-03-11 18:43:16.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor_transfer.c 2016-07-18 19:08:16.000000000 +0000 @@ -83,8 +83,7 @@ BoxPtr boxes = in_boxes; int nbox = in_nbox; - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, fbo->tex); + glamor_bind_texture(glamor_priv, GL_TEXTURE0, fbo, TRUE); while (nbox--) { diff -Nru xorg-server-1.18.3/glamor/glamor_transform.c xorg-server-1.18.4/glamor/glamor_transform.c --- xorg-server-1.18.3/glamor/glamor_transform.c 2016-03-14 20:14:37.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor_transform.c 2016-07-18 19:08:16.000000000 +0000 @@ -158,7 +158,7 @@ } Bool -glamor_set_texture_pixmap(PixmapPtr texture) +glamor_set_texture_pixmap(PixmapPtr texture, Bool destination_red) { glamor_pixmap_private *texture_priv; @@ -170,8 +170,9 @@ if (glamor_pixmap_priv_is_large(texture_priv)) return FALSE; - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, texture_priv->fbo->tex); + glamor_bind_texture(glamor_get_screen_private(texture->drawable.pScreen), + GL_TEXTURE0, + texture_priv->fbo, destination_red); /* we're not setting the sampler uniform here as we always use * GL_TEXTURE0, and the default value for uniforms is zero. So, @@ -182,12 +183,13 @@ Bool glamor_set_texture(PixmapPtr texture, + Bool destination_red, int off_x, int off_y, GLint offset_uniform, GLint size_inv_uniform) { - if (!glamor_set_texture_pixmap(texture)) + if (!glamor_set_texture_pixmap(texture, destination_red)) return FALSE; glUniform2f(offset_uniform, off_x, off_y); @@ -208,6 +210,7 @@ return FALSE; return glamor_set_texture(gc->tile.pixmap, + TRUE, -gc->patOrg.x, -gc->patOrg.y, offset_uniform, @@ -289,6 +292,7 @@ return FALSE; return glamor_set_texture(stipple, + FALSE, -gc->patOrg.x, -gc->patOrg.y, offset_uniform, diff -Nru xorg-server-1.18.3/glamor/glamor_transform.h xorg-server-1.18.4/glamor/glamor_transform.h --- xorg-server-1.18.3/glamor/glamor_transform.h 2016-03-14 20:14:37.000000000 +0000 +++ xorg-server-1.18.4/glamor/glamor_transform.h 2016-07-18 19:08:16.000000000 +0000 @@ -48,10 +48,12 @@ } Bool -glamor_set_texture_pixmap(PixmapPtr texture); +glamor_set_texture_pixmap(PixmapPtr texture, + Bool destination_red); Bool glamor_set_texture(PixmapPtr texture, + Bool destination_red, int off_x, int off_y, GLint offset_uniform, diff -Nru xorg-server-1.18.3/glamor/Makefile.in xorg-server-1.18.4/glamor/Makefile.in --- xorg-server-1.18.3/glamor/Makefile.in 2016-04-04 18:39:51.000000000 +0000 +++ xorg-server-1.18.4/glamor/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -262,6 +262,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -494,6 +496,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/glx/glxext.c xorg-server-1.18.4/glx/glxext.c --- xorg-server-1.18.3/glx/glxext.c 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/glx/glxext.c 2016-07-19 17:07:29.000000000 +0000 @@ -469,6 +469,12 @@ /* Make this context the current one for the GL. */ if (!cx->isDirect) { + /* + * If it is being forced, it means that this context was already made + * current. So it cannot just be made current again without decrementing + * refcount's + */ + (*cx->loseCurrent) (cx); lastGLContext = cx; if (!(*cx->makeCurrent) (cx)) { /* Bind failed, and set the error code. Bummer */ diff -Nru xorg-server-1.18.3/glx/Makefile.in xorg-server-1.18.4/glx/Makefile.in --- xorg-server-1.18.3/glx/Makefile.in 2016-04-04 18:39:51.000000000 +0000 +++ xorg-server-1.18.4/glx/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -215,6 +215,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -447,6 +449,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/dmx/config/Makefile.in xorg-server-1.18.4/hw/dmx/config/Makefile.in --- xorg-server-1.18.3/hw/dmx/config/Makefile.in 2016-04-04 18:39:52.000000000 +0000 +++ xorg-server-1.18.4/hw/dmx/config/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -282,6 +282,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -514,6 +516,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/dmx/config/man/Makefile.in xorg-server-1.18.4/hw/dmx/config/man/Makefile.in --- xorg-server-1.18.3/hw/dmx/config/man/Makefile.in 2016-04-04 18:39:52.000000000 +0000 +++ xorg-server-1.18.4/hw/dmx/config/man/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -180,6 +180,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -429,6 +431,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/dmx/doc/Makefile.in xorg-server-1.18.4/hw/dmx/doc/Makefile.in --- xorg-server-1.18.3/hw/dmx/doc/Makefile.in 2016-04-04 18:39:52.000000000 +0000 +++ xorg-server-1.18.4/hw/dmx/doc/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -193,6 +193,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -425,6 +427,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/dmx/doxygen/Makefile.in xorg-server-1.18.4/hw/dmx/doxygen/Makefile.in --- xorg-server-1.18.3/hw/dmx/doxygen/Makefile.in 2016-04-04 18:39:52.000000000 +0000 +++ xorg-server-1.18.4/hw/dmx/doxygen/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -174,6 +174,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -406,6 +408,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/dmx/examples/Makefile.in xorg-server-1.18.4/hw/dmx/examples/Makefile.in --- xorg-server-1.18.3/hw/dmx/examples/Makefile.in 2016-04-04 18:39:52.000000000 +0000 +++ xorg-server-1.18.4/hw/dmx/examples/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -303,6 +303,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -535,6 +537,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/dmx/glxProxy/Makefile.in xorg-server-1.18.4/hw/dmx/glxProxy/Makefile.in --- xorg-server-1.18.3/hw/dmx/glxProxy/Makefile.in 2016-04-04 18:39:52.000000000 +0000 +++ xorg-server-1.18.4/hw/dmx/glxProxy/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -209,6 +209,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -441,6 +443,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/dmx/input/Makefile.in xorg-server-1.18.4/hw/dmx/input/Makefile.in --- xorg-server-1.18.3/hw/dmx/input/Makefile.in 2016-04-04 18:39:52.000000000 +0000 +++ xorg-server-1.18.4/hw/dmx/input/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -224,6 +224,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -456,6 +458,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/dmx/Makefile.in xorg-server-1.18.4/hw/dmx/Makefile.in --- xorg-server-1.18.3/hw/dmx/Makefile.in 2016-04-04 18:39:52.000000000 +0000 +++ xorg-server-1.18.4/hw/dmx/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -267,6 +267,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -508,6 +510,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/dmx/man/Makefile.in xorg-server-1.18.4/hw/dmx/man/Makefile.in --- xorg-server-1.18.3/hw/dmx/man/Makefile.in 2016-04-04 18:39:52.000000000 +0000 +++ xorg-server-1.18.4/hw/dmx/man/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -180,6 +180,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -429,6 +431,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/kdrive/ephyr/Makefile.in xorg-server-1.18.4/hw/kdrive/ephyr/Makefile.in --- xorg-server-1.18.3/hw/kdrive/ephyr/Makefile.in 2016-04-04 18:39:52.000000000 +0000 +++ xorg-server-1.18.4/hw/kdrive/ephyr/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -281,6 +281,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -513,6 +515,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/kdrive/ephyr/man/Makefile.in xorg-server-1.18.4/hw/kdrive/ephyr/man/Makefile.in --- xorg-server-1.18.3/hw/kdrive/ephyr/man/Makefile.in 2016-04-04 18:39:52.000000000 +0000 +++ xorg-server-1.18.4/hw/kdrive/ephyr/man/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -180,6 +180,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -429,6 +431,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/kdrive/fake/Makefile.in xorg-server-1.18.4/hw/kdrive/fake/Makefile.in --- xorg-server-1.18.3/hw/kdrive/fake/Makefile.in 2016-04-04 18:39:53.000000000 +0000 +++ xorg-server-1.18.4/hw/kdrive/fake/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -207,6 +207,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -439,6 +441,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/kdrive/fbdev/Makefile.in xorg-server-1.18.4/hw/kdrive/fbdev/Makefile.in --- xorg-server-1.18.3/hw/kdrive/fbdev/Makefile.in 2016-04-04 18:39:53.000000000 +0000 +++ xorg-server-1.18.4/hw/kdrive/fbdev/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -208,6 +208,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -440,6 +442,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/kdrive/linux/keyboard.c xorg-server-1.18.4/hw/kdrive/linux/keyboard.c --- xorg-server-1.18.3/hw/kdrive/linux/keyboard.c 2016-03-03 19:01:31.000000000 +0000 +++ xorg-server-1.18.4/hw/kdrive/linux/keyboard.c 2016-07-18 19:08:16.000000000 +0000 @@ -43,445 +43,6 @@ extern int LinuxConsoleFd; -static const KeySym linux_to_x[256] = { - NoSymbol, NoSymbol, NoSymbol, NoSymbol, - NoSymbol, NoSymbol, NoSymbol, NoSymbol, - XK_BackSpace, XK_Tab, XK_Linefeed, NoSymbol, - NoSymbol, NoSymbol, NoSymbol, NoSymbol, - NoSymbol, NoSymbol, NoSymbol, NoSymbol, - NoSymbol, NoSymbol, NoSymbol, NoSymbol, - NoSymbol, NoSymbol, NoSymbol, XK_Escape, - NoSymbol, NoSymbol, NoSymbol, NoSymbol, - XK_space, XK_exclam, XK_quotedbl, XK_numbersign, - XK_dollar, XK_percent, XK_ampersand, XK_apostrophe, - XK_parenleft, XK_parenright, XK_asterisk, XK_plus, - XK_comma, XK_minus, XK_period, XK_slash, - XK_0, XK_1, XK_2, XK_3, - XK_4, XK_5, XK_6, XK_7, - XK_8, XK_9, XK_colon, XK_semicolon, - XK_less, XK_equal, XK_greater, XK_question, - XK_at, XK_A, XK_B, XK_C, - XK_D, XK_E, XK_F, XK_G, - XK_H, XK_I, XK_J, XK_K, - XK_L, XK_M, XK_N, XK_O, - XK_P, XK_Q, XK_R, XK_S, - XK_T, XK_U, XK_V, XK_W, - XK_X, XK_Y, XK_Z, XK_bracketleft, - XK_backslash, XK_bracketright, XK_asciicircum, XK_underscore, - XK_grave, XK_a, XK_b, XK_c, - XK_d, XK_e, XK_f, XK_g, - XK_h, XK_i, XK_j, XK_k, - XK_l, XK_m, XK_n, XK_o, - XK_p, XK_q, XK_r, XK_s, - XK_t, XK_u, XK_v, XK_w, - XK_x, XK_y, XK_z, XK_braceleft, - XK_bar, XK_braceright, XK_asciitilde, XK_BackSpace, - NoSymbol, NoSymbol, NoSymbol, NoSymbol, - NoSymbol, NoSymbol, NoSymbol, NoSymbol, - NoSymbol, NoSymbol, NoSymbol, NoSymbol, - NoSymbol, NoSymbol, NoSymbol, NoSymbol, - NoSymbol, NoSymbol, NoSymbol, NoSymbol, - NoSymbol, NoSymbol, NoSymbol, NoSymbol, - NoSymbol, NoSymbol, NoSymbol, NoSymbol, - NoSymbol, NoSymbol, NoSymbol, NoSymbol, - XK_nobreakspace, XK_exclamdown, XK_cent, XK_sterling, - XK_currency, XK_yen, XK_brokenbar, XK_section, - XK_diaeresis, XK_copyright, XK_ordfeminine, XK_guillemotleft, - XK_notsign, XK_hyphen, XK_registered, XK_macron, - XK_degree, XK_plusminus, XK_twosuperior, XK_threesuperior, - XK_acute, XK_mu, XK_paragraph, XK_periodcentered, - XK_cedilla, XK_onesuperior, XK_masculine, XK_guillemotright, - XK_onequarter, XK_onehalf, XK_threequarters, XK_questiondown, - XK_Agrave, XK_Aacute, XK_Acircumflex, XK_Atilde, - XK_Adiaeresis, XK_Aring, XK_AE, XK_Ccedilla, - XK_Egrave, XK_Eacute, XK_Ecircumflex, XK_Ediaeresis, - XK_Igrave, XK_Iacute, XK_Icircumflex, XK_Idiaeresis, - XK_ETH, XK_Ntilde, XK_Ograve, XK_Oacute, - XK_Ocircumflex, XK_Otilde, XK_Odiaeresis, XK_multiply, - XK_Ooblique, XK_Ugrave, XK_Uacute, XK_Ucircumflex, - XK_Udiaeresis, XK_Yacute, XK_THORN, XK_ssharp, - XK_agrave, XK_aacute, XK_acircumflex, XK_atilde, - XK_adiaeresis, XK_aring, XK_ae, XK_ccedilla, - XK_egrave, XK_eacute, XK_ecircumflex, XK_ediaeresis, - XK_igrave, XK_iacute, XK_icircumflex, XK_idiaeresis, - XK_eth, XK_ntilde, XK_ograve, XK_oacute, - XK_ocircumflex, XK_otilde, XK_odiaeresis, XK_division, - XK_oslash, XK_ugrave, XK_uacute, XK_ucircumflex, - XK_udiaeresis, XK_yacute, XK_thorn, XK_ydiaeresis -}; - -/* - * Getting a keycode from scancode - * - * With XKB - * -------- - * - * We have to enqueue keyboard events using standard X keycodes which correspond - * to AT scancode + 8; this means that we need to translate the Linux scancode - * provided by the kernel to an AT scancode -- this translation is not linear - * and requires that we use a LUT. - * - * - * Without XKB - * ----------- - * - * We can use custom keycodes, which makes things simpler; we define our custom - * keycodes as Linux scancodes + KD_KEY_OFFSET -*/ - -/* - This LUT translates AT scancodes into Linux ones -- the keymap we create - for the core X keyboard protocol has to be AT-scancode based so that it - corresponds to the Xkb keymap. -*/ -#if 0 -static unsigned char at2lnx[] = { - 0x0, /* no valid scancode */ - 0x01, /* KEY_Escape */ 0x02, /* KEY_1 */ - 0x03, /* KEY_2 */ 0x04, /* KEY_3 */ - 0x05, /* KEY_4 */ 0x06, /* KEY_5 */ - 0x07, /* KEY_6 */ 0x08, /* KEY_7 */ - 0x09, /* KEY_8 */ 0x0a, /* KEY_9 */ - 0x0b, /* KEY_0 */ 0x0c, /* KEY_Minus */ - 0x0d, /* KEY_Equal */ 0x0e, /* KEY_BackSpace */ - 0x0f, /* KEY_Tab */ 0x10, /* KEY_Q */ - 0x11, /* KEY_W */ 0x12, /* KEY_E */ - 0x13, /* KEY_R */ 0x14, /* KEY_T */ - 0x15, /* KEY_Y */ 0x16, /* KEY_U */ - 0x17, /* KEY_I */ 0x18, /* KEY_O */ - 0x19, /* KEY_P */ 0x1a, /* KEY_LBrace */ - 0x1b, /* KEY_RBrace */ 0x1c, /* KEY_Enter */ - 0x1d, /* KEY_LCtrl */ 0x1e, /* KEY_A */ - 0x1f, /* KEY_S */ 0x20, /* KEY_D */ - 0x21, /* KEY_F */ 0x22, /* KEY_G */ - 0x23, /* KEY_H */ 0x24, /* KEY_J */ - 0x25, /* KEY_K */ 0x26, /* KEY_L */ - 0x27, /* KEY_SemiColon */ 0x28, /* KEY_Quote */ - 0x29, /* KEY_Tilde */ 0x2a, /* KEY_ShiftL */ - 0x2b, /* KEY_BSlash */ 0x2c, /* KEY_Z */ - 0x2d, /* KEY_X */ 0x2e, /* KEY_C */ - 0x2f, /* KEY_V */ 0x30, /* KEY_B */ - 0x31, /* KEY_N */ 0x32, /* KEY_M */ - 0x33, /* KEY_Comma */ 0x34, /* KEY_Period */ - 0x35, /* KEY_Slash */ 0x36, /* KEY_ShiftR */ - 0x37, /* KEY_KP_Multiply */ 0x38, /* KEY_Alt */ - 0x39, /* KEY_Space */ 0x3a, /* KEY_CapsLock */ - 0x3b, /* KEY_F1 */ 0x3c, /* KEY_F2 */ - 0x3d, /* KEY_F3 */ 0x3e, /* KEY_F4 */ - 0x3f, /* KEY_F5 */ 0x40, /* KEY_F6 */ - 0x41, /* KEY_F7 */ 0x42, /* KEY_F8 */ - 0x43, /* KEY_F9 */ 0x44, /* KEY_F10 */ - 0x45, /* KEY_NumLock */ 0x46, /* KEY_ScrollLock */ - 0x47, /* KEY_KP_7 */ 0x48, /* KEY_KP_8 */ - 0x49, /* KEY_KP_9 */ 0x4a, /* KEY_KP_Minus */ - 0x4b, /* KEY_KP_4 */ 0x4c, /* KEY_KP_5 */ - 0x4d, /* KEY_KP_6 */ 0x4e, /* KEY_KP_Plus */ - 0x4f, /* KEY_KP_1 */ 0x50, /* KEY_KP_2 */ - 0x51, /* KEY_KP_3 */ 0x52, /* KEY_KP_0 */ - 0x53, /* KEY_KP_Decimal */ 0x54, /* KEY_SysReqest */ - 0x00, /* 0x55 */ 0x56, /* KEY_Less */ - 0x57, /* KEY_F11 */ 0x58, /* KEY_F12 */ - 0x66, /* KEY_Home */ 0x67, /* KEY_Up */ - 0x68, /* KEY_PgUp */ 0x69, /* KEY_Left */ - 0x5d, /* KEY_Begin */ 0x6a, /* KEY_Right */ - 0x6b, /* KEY_End */ 0x6c, /* KEY_Down */ - 0x6d, /* KEY_PgDown */ 0x6e, /* KEY_Insert */ - 0x6f, /* KEY_Delete */ 0x60, /* KEY_KP_Enter */ - 0x61, /* KEY_RCtrl */ 0x77, /* KEY_Pause */ - 0x63, /* KEY_Print */ 0x62, /* KEY_KP_Divide */ - 0x64, /* KEY_AltLang */ 0x65, /* KEY_Break */ - 0x00, /* KEY_LMeta */ 0x00, /* KEY_RMeta */ - 0x7A, /* KEY_Menu/FOCUS_PF11 */ 0x00, /* 0x6e */ - 0x7B, /* FOCUS_PF12 */ 0x00, /* 0x70 */ - 0x00, /* 0x71 */ 0x00, /* 0x72 */ - 0x59, /* FOCUS_PF2 */ 0x78, /* FOCUS_PF9 */ - 0x00, /* 0x75 */ 0x00, /* 0x76 */ - 0x5A, /* FOCUS_PF3 */ 0x5B, /* FOCUS_PF4 */ - 0x5C, /* FOCUS_PF5 */ 0x5D, /* FOCUS_PF6 */ - 0x5E, /* FOCUS_PF7 */ 0x5F, /* FOCUS_PF8 */ - 0x7C, /* JAP_86 */ 0x79, /* FOCUS_PF10 */ - 0x00, /* 0x7f */ -}; - -#define NUM_AT_KEYS (sizeof(at2lnx)/sizeof(at2lnx[0])) -#define LNX_KEY_INDEX(n) n < NUM_AT_KEYS ? at2lnx[n] : 0 - -static unsigned char tbl[KD_MAX_WIDTH] = { - 0, - 1 << KG_SHIFT, - (1 << KG_ALTGR), - (1 << KG_ALTGR) | (1 << KG_SHIFT) -}; -#endif - -static void -readKernelMapping(KdKeyboardInfo * ki) -{ -#if 0 - KeySym *k; - int i, j; - struct kbentry kbe; - int minKeyCode, maxKeyCode; - int row; - int fd; - - if (!ki) - return; - - fd = LinuxConsoleFd; - - minKeyCode = NR_KEYS; - maxKeyCode = 0; - row = 0; - ki->keySyms.mapWidth = KD_MAX_WIDTH; - for (i = 0; i < NR_KEYS && row < KD_MAX_LENGTH; ++i) { - kbe.kb_index = LNX_KEY_INDEX(i); - - k = ki->keySyms.map + row * ki->keySyms.mapWidth; - - for (j = 0; j < ki->keySyms.mapWidth; ++j) { - unsigned short kval; - - k[j] = NoSymbol; - - kbe.kb_table = tbl[j]; - kbe.kb_value = 0; - if (ioctl(fd, KDGKBENT, &kbe)) - continue; - - kval = KVAL(kbe.kb_value); - switch (KTYP(kbe.kb_value)) { - case KT_LATIN: - case KT_LETTER: - k[j] = linux_to_x[kval]; - break; - - case KT_FN: - if (kval <= 19) - k[j] = XK_F1 + kval; - else - switch (kbe.kb_value) { - case K_FIND: - k[j] = XK_Home; /* or XK_Find */ - break; - case K_INSERT: - k[j] = XK_Insert; - break; - case K_REMOVE: - k[j] = XK_Delete; - break; - case K_SELECT: - k[j] = XK_End; /* or XK_Select */ - break; - case K_PGUP: - k[j] = XK_Prior; - break; - case K_PGDN: - k[j] = XK_Next; - break; - case K_HELP: - k[j] = XK_Help; - break; - case K_DO: - k[j] = XK_Execute; - break; - case K_PAUSE: - k[j] = XK_Pause; - break; - case K_MACRO: - k[j] = XK_Menu; - break; - default: - break; - } - break; - - case KT_SPEC: - switch (kbe.kb_value) { - case K_ENTER: - k[j] = XK_Return; - break; - case K_BREAK: - k[j] = XK_Break; - break; - case K_CAPS: - k[j] = XK_Caps_Lock; - break; - case K_NUM: - k[j] = XK_Num_Lock; - break; - case K_HOLD: - k[j] = XK_Scroll_Lock; - break; - case K_COMPOSE: - k[j] = XK_Multi_key; - break; - default: - break; - } - break; - - case KT_PAD: - switch (kbe.kb_value) { - case K_PPLUS: - k[j] = XK_KP_Add; - break; - case K_PMINUS: - k[j] = XK_KP_Subtract; - break; - case K_PSTAR: - k[j] = XK_KP_Multiply; - break; - case K_PSLASH: - k[j] = XK_KP_Divide; - break; - case K_PENTER: - k[j] = XK_KP_Enter; - break; - case K_PCOMMA: - k[j] = XK_KP_Separator; - break; - case K_PDOT: - k[j] = XK_KP_Decimal; - break; - case K_PPLUSMINUS: - k[j] = XK_KP_Subtract; - break; - default: - if (kval <= 9) - k[j] = XK_KP_0 + kval; - break; - } - break; - - /* - * KT_DEAD keys are for accelerated diacritical creation. - */ - case KT_DEAD: - switch (kbe.kb_value) { - case K_DGRAVE: - k[j] = XK_dead_grave; - break; - case K_DACUTE: - k[j] = XK_dead_acute; - break; - case K_DCIRCM: - k[j] = XK_dead_circumflex; - break; - case K_DTILDE: - k[j] = XK_dead_tilde; - break; - case K_DDIERE: - k[j] = XK_dead_diaeresis; - break; - } - break; - - case KT_CUR: - switch (kbe.kb_value) { - case K_DOWN: - k[j] = XK_Down; - break; - case K_LEFT: - k[j] = XK_Left; - break; - case K_RIGHT: - k[j] = XK_Right; - break; - case K_UP: - k[j] = XK_Up; - break; - } - break; - - case KT_SHIFT: - switch (kbe.kb_value) { - case K_ALTGR: - k[j] = XK_Mode_switch; - break; - case K_ALT: - k[j] = (kbe.kb_index == 0x64 ? XK_Alt_R : XK_Alt_L); - break; - case K_CTRL: - k[j] = (kbe.kb_index == 0x61 ? XK_Control_R : XK_Control_L); - break; - case K_CTRLL: - k[j] = XK_Control_L; - break; - case K_CTRLR: - k[j] = XK_Control_R; - break; - case K_SHIFT: - k[j] = (kbe.kb_index == 0x36 ? XK_Shift_R : XK_Shift_L); - break; - case K_SHIFTL: - k[j] = XK_Shift_L; - break; - case K_SHIFTR: - k[j] = XK_Shift_R; - break; - default: - break; - } - break; - - /* - * KT_ASCII keys accumulate a 3 digit decimal number that gets - * emitted when the shift state changes. We can't emulate that. - */ - case KT_ASCII: - break; - - case KT_LOCK: - if (kbe.kb_value == K_SHIFTLOCK) - k[j] = XK_Shift_Lock; - break; - -#ifdef KT_X - case KT_X: - /* depends on new keyboard symbols in file linux/keyboard.h */ - if (kbe.kb_value == K_XMENU) - k[j] = XK_Menu; - if (kbe.kb_value == K_XTELEPHONE) - k[j] = XK_telephone; - break; -#endif -#ifdef KT_XF - case KT_XF: - /* special linux keysyms which map directly to XF86 keysyms */ - k[j] = (kbe.kb_value & 0xFF) + 0x1008FF00; - break; -#endif - - default: - break; - } - if (i < minKeyCode) - minKeyCode = i; - if (i > maxKeyCode) - maxKeyCode = i; - } - - if (minKeyCode == NR_KEYS) - continue; - - if (k[3] == k[2]) - k[3] = NoSymbol; - if (k[2] == k[1]) - k[2] = NoSymbol; - if (k[1] == k[0]) - k[1] = NoSymbol; - if (k[0] == k[2] && k[1] == k[3]) - k[2] = k[3] = NoSymbol; - if (k[3] == k[0] && k[2] == k[1] && k[2] == NoSymbol) - k[3] = NoSymbol; - row++; - } - ki->minScanCode = minKeyCode; - ki->maxScanCode = maxKeyCode; -#endif -} - /* * We need these to handle extended scancodes correctly (I could just use the * numbers below, but this makes the code more readable @@ -759,8 +320,6 @@ free(ki->name); ki->name = strdup("Linux console keyboard"); - readKernelMapping(ki); - return Success; } diff -Nru xorg-server-1.18.3/hw/kdrive/linux/Makefile.in xorg-server-1.18.4/hw/kdrive/linux/Makefile.in --- xorg-server-1.18.3/hw/kdrive/linux/Makefile.in 2016-04-04 18:39:53.000000000 +0000 +++ xorg-server-1.18.4/hw/kdrive/linux/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -209,6 +209,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -441,6 +443,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/kdrive/Makefile.in xorg-server-1.18.4/hw/kdrive/Makefile.in --- xorg-server-1.18.3/hw/kdrive/Makefile.in 2016-04-04 18:39:52.000000000 +0000 +++ xorg-server-1.18.4/hw/kdrive/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -208,6 +208,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -440,6 +442,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/kdrive/src/Makefile.in xorg-server-1.18.4/hw/kdrive/src/Makefile.in --- xorg-server-1.18.3/hw/kdrive/src/Makefile.in 2016-04-04 18:39:53.000000000 +0000 +++ xorg-server-1.18.4/hw/kdrive/src/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -203,6 +203,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -435,6 +437,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/Makefile.in xorg-server-1.18.4/hw/Makefile.in --- xorg-server-1.18.3/hw/Makefile.in 2016-04-04 18:39:51.000000000 +0000 +++ xorg-server-1.18.4/hw/Makefile.in 2016-07-19 17:27:26.000000000 +0000 @@ -208,6 +208,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -440,6 +442,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/vfb/Makefile.in xorg-server-1.18.4/hw/vfb/Makefile.in --- xorg-server-1.18.3/hw/vfb/Makefile.in 2016-04-04 18:39:53.000000000 +0000 +++ xorg-server-1.18.4/hw/vfb/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -250,6 +250,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -482,6 +484,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/vfb/man/Makefile.in xorg-server-1.18.4/hw/vfb/man/Makefile.in --- xorg-server-1.18.3/hw/vfb/man/Makefile.in 2016-04-04 18:39:53.000000000 +0000 +++ xorg-server-1.18.4/hw/vfb/man/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -180,6 +180,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -429,6 +431,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/common/Makefile.in xorg-server-1.18.4/hw/xfree86/common/Makefile.in --- xorg-server-1.18.3/hw/xfree86/common/Makefile.in 2016-04-04 18:39:53.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/common/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -262,6 +262,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -494,6 +496,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/common/xf86Config.c xorg-server-1.18.4/hw/xfree86/common/xf86Config.c --- xorg-server-1.18.3/hw/xfree86/common/xf86Config.c 2016-03-15 16:12:14.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/common/xf86Config.c 2016-07-19 17:14:30.000000000 +0000 @@ -518,33 +518,54 @@ return modulearray; } +static int +is_fallback(const char *s) +{ + /* later entries are less preferred */ + const char *fallback[5] = { "modesetting", "fbdev", "vesa", "wsfb", NULL }; + int i; + + for (i = 0; fallback[i]; i++) + if (strstr(s, fallback[i])) + return i; + + return -1; +} + +static int +driver_sort(const void *_l, const void *_r) +{ + const char *l = *(const char **)_l; + const char *r = *(const char **)_r; + int left = is_fallback(l); + int right = is_fallback(r); + + /* neither is a fallback, asciibetize */ + if (left == -1 && right == -1) + return strcmp(l, r); + + /* left is a fallback */ + if (left >= 0) + return 1; + + /* right is a fallback */ + if (right >= 0) + return -1; + + /* both are fallbacks, which is worse */ + return left - right; +} + static void fixup_video_driver_list(const char **drivers) { - static const char *fallback[5] = { "modesetting", "fbdev", "vesa", "wsfb", NULL }; - const char **end, **drv; - const char *x; - int i; + const char **end; /* walk to the end of the list */ for (end = drivers; *end && **end; end++); end--; - /* - * for each of the fallback drivers, if we find it in the list, - * swap it with the last available non-fallback driver. - */ - for (i = 0; fallback[i]; i++) { - for (drv = drivers; drv != end; drv++) { - if (strstr(*drv, fallback[i])) { - x = *drv; - *drv = *end; - *end = x; - end--; - break; - } - } - } + qsort(drivers, end - drivers, sizeof(const char *), driver_sort); } static const char ** @@ -700,6 +721,7 @@ FLAG_USE_SIGIO, FLAG_AUTO_ADD_GPU, FLAG_MAX_CLIENTS, + FLAG_IGLX, } FlagValues; /** @@ -761,6 +783,8 @@ {0}, FALSE}, {FLAG_MAX_CLIENTS, "MaxClients", OPTV_INTEGER, {0}, FALSE }, + {FLAG_IGLX, "IndirectGLX", OPTV_BOOLEAN, + {0}, FALSE}, {-1, NULL, OPTV_NONE, {0}, FALSE}, }; @@ -943,6 +967,12 @@ xf86Info.aiglx = value; xf86Info.aiglxFrom = X_CONFIG; } + if (xf86Info.iglxFrom != X_CMDLINE) { + if (xf86GetOptValBool(FlagOptions, FLAG_IGLX, &value)) { + enableIndirectGLX = value; + xf86Info.iglxFrom = X_CONFIG; + } + } #endif /* if we're not hotplugging, force some input devices to exist */ diff -Nru xorg-server-1.18.3/hw/xfree86/common/xf86Configure.c xorg-server-1.18.4/hw/xfree86/common/xf86Configure.c --- xorg-server-1.18.3/hw/xfree86/common/xf86Configure.c 2016-03-15 16:12:14.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/common/xf86Configure.c 2016-07-18 19:08:16.000000000 +0000 @@ -264,7 +264,7 @@ ptr->dev_busid = DevToConfig[screennum].GDev.busID; ptr->dev_driver = DevToConfig[screennum].GDev.driver; ptr->dev_ramdac = DevToConfig[screennum].GDev.ramdac; - for (i = 0; (i < MAXDACSPEEDS) && (i < CONF_MAXDACSPEEDS); i++) + for (i = 0; i < MAXDACSPEEDS; i++) ptr->dev_dacSpeeds[i] = DevToConfig[screennum].GDev.dacSpeeds[i]; ptr->dev_videoram = DevToConfig[screennum].GDev.videoRam; ptr->dev_bios_base = DevToConfig[screennum].GDev.BiosBase; diff -Nru xorg-server-1.18.3/hw/xfree86/common/xf86Init.c xorg-server-1.18.4/hw/xfree86/common/xf86Init.c --- xorg-server-1.18.3/hw/xfree86/common/xf86Init.c 2016-03-16 12:52:28.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/common/xf86Init.c 2016-07-19 17:07:29.000000000 +0000 @@ -1457,6 +1457,10 @@ xf86Info.ShareVTs = TRUE; return 1; } + if (!strcmp(argv[i], "-iglx") || !strcmp(argv[i], "+iglx")) { + xf86Info.iglxFrom = X_CMDLINE; + return 0; + } /* OS-specific processing */ return xf86ProcessArgument(argc, argv, i); diff -Nru xorg-server-1.18.3/hw/xfree86/common/xf86Privstr.h xorg-server-1.18.4/hw/xfree86/common/xf86Privstr.h --- xorg-server-1.18.3/hw/xfree86/common/xf86Privstr.h 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/common/xf86Privstr.h 2016-07-19 17:07:29.000000000 +0000 @@ -89,6 +89,7 @@ MessageType randRFrom; Bool aiglx; MessageType aiglxFrom; + MessageType iglxFrom; XF86_GlxVisuals glxVisuals; MessageType glxVisualsFrom; diff -Nru xorg-server-1.18.3/hw/xfree86/ddc/Makefile.in xorg-server-1.18.4/hw/xfree86/ddc/Makefile.in --- xorg-server-1.18.3/hw/xfree86/ddc/Makefile.in 2016-04-04 18:39:53.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/ddc/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -229,6 +229,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -461,6 +463,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/dixmods/Makefile.in xorg-server-1.18.4/hw/xfree86/dixmods/Makefile.in --- xorg-server-1.18.3/hw/xfree86/dixmods/Makefile.in 2016-04-04 18:39:53.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/dixmods/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -271,6 +271,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -503,6 +505,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/doc/Makefile.in xorg-server-1.18.4/hw/xfree86/doc/Makefile.in --- xorg-server-1.18.3/hw/xfree86/doc/Makefile.in 2016-04-04 18:39:53.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/doc/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -172,6 +172,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -404,6 +406,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/dri/Makefile.in xorg-server-1.18.4/hw/xfree86/dri/Makefile.in --- xorg-server-1.18.3/hw/xfree86/dri/Makefile.in 2016-04-04 18:39:54.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/dri/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -228,6 +228,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -460,6 +462,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/dri2/Makefile.in xorg-server-1.18.4/hw/xfree86/dri2/Makefile.in --- xorg-server-1.18.3/hw/xfree86/dri2/Makefile.in 2016-04-04 18:39:54.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/dri2/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -270,6 +270,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -502,6 +504,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/dri2/pci_ids/Makefile.in xorg-server-1.18.4/hw/xfree86/dri2/pci_ids/Makefile.in --- xorg-server-1.18.3/hw/xfree86/dri2/pci_ids/Makefile.in 2016-04-04 18:39:54.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/dri2/pci_ids/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -149,6 +149,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -381,6 +383,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/drivers/Makefile.in xorg-server-1.18.4/hw/xfree86/drivers/Makefile.in --- xorg-server-1.18.3/hw/xfree86/drivers/Makefile.in 2016-04-04 18:39:54.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/drivers/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -210,6 +210,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -442,6 +444,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/drivers/modesetting/driver.c xorg-server-1.18.4/hw/xfree86/drivers/modesetting/driver.c --- xorg-server-1.18.3/hw/xfree86/drivers/modesetting/driver.c 2016-03-15 16:12:14.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/drivers/modesetting/driver.c 2016-07-19 17:12:30.000000000 +0000 @@ -60,6 +60,7 @@ #endif #include "driver.h" +#include "sh3224.h" static void AdjustFrame(ScrnInfoPtr pScrn, int x, int y); static Bool CloseScreen(ScreenPtr pScreen); @@ -501,6 +502,15 @@ /* TODO query connector property to see if this is needed */ ret = drmModeDirtyFB(ms->fd, fb_id, clip, num_cliprects); + + /* if we're swamping it with work, try one at a time */ + if (ret == -EINVAL) { + for (i = 0; i < num_cliprects; i++) { + if ((ret = drmModeDirtyFB(ms->fd, fb_id, &clip[i], 1)) < 0) + break; + } + } + free(clip); DamageEmpty(damage); } @@ -624,7 +634,6 @@ ms = modesettingPTR(pScrn); if (!ms) return; - pScrn->driverPrivate = NULL; if (ms->fd > 0) { modesettingEntPtr ms_ent; @@ -645,6 +654,7 @@ ms_ent->fd = 0; } } + pScrn->driverPrivate = NULL; free(ms->drmmode.Options); free(ms); @@ -662,6 +672,11 @@ ms->drmmode.glamor = FALSE; #ifdef GLAMOR + if (ms->drmmode.force_24_32) { + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Cannot use glamor with 24bpp packed fb\n"); + return; + } + if (!do_glamor) { xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "glamor disabled\n"); return; @@ -809,23 +824,17 @@ return FALSE; ms->drmmode.fd = ms->fd; - pScrn->capabilities = 0; -#ifdef DRM_CAP_PRIME - ret = drmGetCap(ms->fd, DRM_CAP_PRIME, &value); - if (ret == 0) { - if (value & DRM_PRIME_CAP_IMPORT) - pScrn->capabilities |= RR_Capability_SinkOutput; -#if GLAMOR_HAS_GBM_LINEAR - if (value & DRM_PRIME_CAP_EXPORT) - pScrn->capabilities |= RR_Capability_SourceOutput; -#endif - } -#endif drmmode_get_default_bpp(pScrn, &ms->drmmode, &defaultdepth, &defaultbpp); - if (defaultdepth == 24 && defaultbpp == 24) - bppflags = SupportConvert32to24 | Support24bppFb; - else - bppflags = PreferConvert24to32 | SupportConvert24to32 | Support32bppFb; + if (defaultdepth == 24 && defaultbpp == 24) { + ms->drmmode.force_24_32 = TRUE; + ms->drmmode.kbpp = 24; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Using 24bpp hw front buffer with 32bpp shadow\n"); + defaultbpp = 32; + } else { + ms->drmmode.kbpp = defaultbpp; + } + bppflags = PreferConvert24to32 | SupportConvert24to32 | Support32bppFb; if (!xf86SetDepthBpp (pScrn, defaultdepth, defaultdepth, defaultbpp, bppflags)) @@ -879,23 +888,45 @@ } else { Bool prefer_shadow = TRUE; - ret = drmGetCap(ms->fd, DRM_CAP_DUMB_PREFER_SHADOW, &value); - if (!ret) { - prefer_shadow = !!value; + if (ms->drmmode.force_24_32) { + prefer_shadow = TRUE; + ms->drmmode.shadow_enable = TRUE; + } else { + ret = drmGetCap(ms->fd, DRM_CAP_DUMB_PREFER_SHADOW, &value); + if (!ret) { + prefer_shadow = !!value; + } + + ms->drmmode.shadow_enable = + xf86ReturnOptValBool(ms->drmmode.Options, OPTION_SHADOW_FB, + prefer_shadow); } - ms->drmmode.shadow_enable = xf86ReturnOptValBool(ms->drmmode.Options, - OPTION_SHADOW_FB, - prefer_shadow); - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "ShadowFB: preferred %s, enabled %s\n", prefer_shadow ? "YES" : "NO", + ms->drmmode.force_24_32 ? "FORCE" : ms->drmmode.shadow_enable ? "YES" : "NO"); ms->drmmode.pageflip = FALSE; } + pScrn->capabilities = 0; +#ifdef DRM_CAP_PRIME + ret = drmGetCap(ms->fd, DRM_CAP_PRIME, &value); + if (ret == 0) { + if (value & DRM_PRIME_CAP_IMPORT) { + pScrn->capabilities |= RR_Capability_SinkOutput; + if (ms->drmmode.glamor) + pScrn->capabilities |= RR_Capability_SinkOffload; + } +#if GLAMOR_HAS_GBM_LINEAR + if (value & DRM_PRIME_CAP_EXPORT && ms->drmmode.glamor) + pScrn->capabilities |= RR_Capability_SourceOutput | RR_Capability_SourceOffload; +#endif + } +#endif + if (drmmode_pre_init(pScrn, &ms->drmmode, pScrn->bitsPerPixel / 8) == FALSE) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "KMS setup failed\n"); goto fail; @@ -946,7 +977,7 @@ modesettingPtr ms = modesettingPTR(pScrn); int stride; - stride = (pScrn->displayWidth * pScrn->bitsPerPixel) / 8; + stride = (pScrn->displayWidth * ms->drmmode.kbpp) / 8; *size = stride; return ((uint8_t *) ms->drmmode.front_bo.dumb->ptr + row * stride + offset); @@ -967,6 +998,7 @@ Bool ret; void *pixels = NULL; int err; + Bool use_ms_shadow = ms->drmmode.force_24_32 && pScrn->bitsPerPixel == 32; pScreen->CreateScreenResources = ms->createScreenResources; ret = pScreen->CreateScreenResources(pScreen); @@ -998,7 +1030,8 @@ FatalError("Couldn't adjust screen pixmap\n"); if (ms->drmmode.shadow_enable) { - if (!shadowAdd(pScreen, rootPixmap, msUpdatePacked, + if (!shadowAdd(pScreen, rootPixmap, + use_ms_shadow ? ms_shadowUpdate32to24 : msUpdatePacked, msShadowWindow, 0, 0)) return FALSE; } diff -Nru xorg-server-1.18.3/hw/xfree86/drivers/modesetting/drmmode_display.c xorg-server-1.18.4/hw/xfree86/drivers/modesetting/drmmode_display.c --- xorg-server-1.18.3/hw/xfree86/drivers/modesetting/drmmode_display.c 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/drivers/modesetting/drmmode_display.c 2016-07-19 17:10:57.000000000 +0000 @@ -344,24 +344,8 @@ int output_count = 0; Bool ret = TRUE; int i; - uint32_t fb_id; + uint32_t fb_id = 0; drmModeModeInfo kmode; - int height; - - height = pScrn->virtualY; - - if (drmmode->fb_id == 0) { - ret = drmModeAddFB(drmmode->fd, - pScrn->virtualX, height, - pScrn->depth, pScrn->bitsPerPixel, - drmmode_bo_get_pitch(&drmmode->front_bo), - drmmode_bo_get_handle(&drmmode->front_bo), - &drmmode->fb_id); - if (ret < 0) { - ErrorF("failed to add fb %d\n", ret); - return FALSE; - } - } saved_mode = crtc->mode; saved_x = crtc->x; @@ -420,6 +404,22 @@ fb_id = drmmode_crtc->rotate_fb_id; x = y = 0; } + + if (fb_id == 0) { + ret = drmModeAddFB(drmmode->fd, + pScrn->virtualX, pScrn->virtualY, + pScrn->depth, drmmode->kbpp, + drmmode_bo_get_pitch(&drmmode->front_bo), + drmmode_bo_get_handle(&drmmode->front_bo), + &drmmode->fb_id); + if (ret < 0) { + ErrorF("failed to add fb %d\n", ret); + ret = FALSE; + goto done; + } + fb_id = drmmode->fb_id; + } + if (drmModeSetCrtc(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, fb_id, x, y, output_ids, output_count, &kmode)) { xf86DrvMsg(crtc->scrn->scrnIndex, X_ERROR, @@ -484,7 +484,7 @@ drmModeMoveCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, x, y); } -static void +static Bool drmmode_set_cursor(xf86CrtcPtr crtc) { drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; @@ -503,9 +503,9 @@ handle, ms->cursor_width, ms->cursor_height, cursor->bits->xhot, cursor->bits->yhot); if (!ret) - return; - if (ret == -EINVAL) - use_set_cursor2 = FALSE; + return TRUE; + + use_set_cursor2 = FALSE; } ret = drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, handle, @@ -518,16 +518,28 @@ cursor_info->MaxWidth = cursor_info->MaxHeight = 0; drmmode_crtc->drmmode->sw_cursor = TRUE; /* fallback to swcursor */ + return FALSE; } + return TRUE; } -static void -drmmode_load_cursor_argb(xf86CrtcPtr crtc, CARD32 *image) +static void drmmode_hide_cursor(xf86CrtcPtr crtc); + +/* + * The load_cursor_argb_check driver hook. + * + * Sets the hardware cursor by calling the drmModeSetCursor2 ioctl. + * On failure, returns FALSE indicating that the X server should fall + * back to software cursors. + */ +static Bool +drmmode_load_cursor_argb_check(xf86CrtcPtr crtc, CARD32 *image) { modesettingPtr ms = modesettingPTR(crtc->scrn); drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; int i; uint32_t *ptr; + static Bool first_time = TRUE; /* cursor should be mapped already */ ptr = (uint32_t *) (drmmode_crtc->cursor_bo->ptr); @@ -535,8 +547,14 @@ for (i = 0; i < ms->cursor_width * ms->cursor_height; i++) ptr[i] = image[i]; // cpu_to_le32(image[i]); - if (drmmode_crtc->cursor_up) - drmmode_set_cursor(crtc); + if (drmmode_crtc->cursor_up || first_time) { + Bool ret = drmmode_set_cursor(crtc); + if (!drmmode_crtc->cursor_up) + drmmode_hide_cursor(crtc); + first_time = FALSE; + return ret; + } + return TRUE; } static void @@ -577,11 +595,17 @@ PixmapPtr screenpix = screen->GetScreenPixmap(screen); xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(crtc->scrn); drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; + drmmode_ptr drmmode = drmmode_crtc->drmmode; int c, total_width = 0, max_height = 0, this_x = 0; if (!ppix) { - if (crtc->randr_crtc->scanout_pixmap) + if (crtc->randr_crtc->scanout_pixmap) { PixmapStopDirtyTracking(crtc->randr_crtc->scanout_pixmap, screenpix); + if (drmmode->fb_id) { + drmModeRmFB(drmmode->fd, drmmode->fb_id); + drmmode->fb_id = 0; + } + } drmmode_crtc->prime_pixmap_x = 0; return TRUE; } @@ -679,14 +703,14 @@ int ret; if (!drmmode_create_bo(drmmode, &drmmode_crtc->rotate_bo, - width, height, crtc->scrn->bitsPerPixel)) { + width, height, drmmode->kbpp)) { xf86DrvMsg(crtc->scrn->scrnIndex, X_ERROR, "Couldn't allocate shadow memory for rotated CRTC\n"); return NULL; } ret = drmModeAddFB(drmmode->fd, width, height, crtc->scrn->depth, - crtc->scrn->bitsPerPixel, + drmmode->kbpp, drmmode_bo_get_pitch(&drmmode_crtc->rotate_bo), drmmode_bo_get_handle(&drmmode_crtc->rotate_bo), &drmmode_crtc->rotate_fb_id); @@ -757,7 +781,7 @@ rotate_pixmap = drmmode_create_pixmap_header(scrn->pScreen, width, height, scrn->depth, - scrn->bitsPerPixel, + drmmode->kbpp, rotate_pitch, pPixData); @@ -799,7 +823,7 @@ .set_cursor_position = drmmode_set_cursor_position, .show_cursor = drmmode_show_cursor, .hide_cursor = drmmode_hide_cursor, - .load_cursor_argb = drmmode_load_cursor_argb, + .load_cursor_argb_check = drmmode_load_cursor_argb_check, .gamma_set = drmmode_crtc_gamma_set, .destroy = NULL, /* XXX */ @@ -1643,6 +1667,7 @@ uint32_t old_fb_id; int i, pitch, old_width, old_height, old_pitch; int cpp = (scrn->bitsPerPixel + 7) / 8; + int kcpp = (drmmode->kbpp + 7) / 8; PixmapPtr ppix = screen->GetScreenPixmap(screen); void *new_pixels = NULL; @@ -1664,14 +1689,14 @@ old_front = drmmode->front_bo; if (!drmmode_create_bo(drmmode, &drmmode->front_bo, - width, height, scrn->bitsPerPixel)) + width, height, drmmode->kbpp)) goto fail; pitch = drmmode_bo_get_pitch(&drmmode->front_bo); scrn->virtualX = width; scrn->virtualY = height; - scrn->displayWidth = pitch / cpp; + scrn->displayWidth = pitch / kcpp; ret = drmModeAddFB(drmmode->fd, width, height, scrn->depth, scrn->bitsPerPixel, pitch, @@ -1687,8 +1712,7 @@ } if (drmmode->shadow_enable) { - uint32_t size = scrn->displayWidth * scrn->virtualY * - ((scrn->bitsPerPixel + 7) >> 3); + uint32_t size = scrn->displayWidth * scrn->virtualY * cpp; new_pixels = calloc(1, size); if (new_pixels == NULL) goto fail; @@ -1696,7 +1720,8 @@ drmmode->shadow_fb = new_pixels; } - screen->ModifyPixmapHeader(ppix, width, height, -1, -1, pitch, new_pixels); + screen->ModifyPixmapHeader(ppix, width, height, -1, -1, + scrn->displayWidth * cpp, new_pixels); if (!drmmode_glamor_handle_new_screen_pixmap(drmmode)) goto fail; @@ -1723,7 +1748,7 @@ drmmode->front_bo = old_front; scrn->virtualX = old_width; scrn->virtualY = old_height; - scrn->displayWidth = old_pitch / cpp; + scrn->displayWidth = old_pitch / kcpp; drmmode->fb_id = old_fb_id; return FALSE; @@ -2079,7 +2104,7 @@ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); int width; int height; - int bpp = pScrn->bitsPerPixel; + int bpp = ms->drmmode.kbpp; int i; int cpp = (bpp + 7) / 8; diff -Nru xorg-server-1.18.3/hw/xfree86/drivers/modesetting/drmmode_display.h xorg-server-1.18.4/hw/xfree86/drivers/modesetting/drmmode_display.h --- xorg-server-1.18.3/hw/xfree86/drivers/modesetting/drmmode_display.h 2016-03-08 17:49:43.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/drivers/modesetting/drmmode_display.h 2016-07-19 17:10:57.000000000 +0000 @@ -48,6 +48,7 @@ unsigned fb_id; drmModeFBPtr mode_fb; int cpp; + int kbpp; ScrnInfoPtr scrn; struct gbm_device *gbm; @@ -67,6 +68,7 @@ Bool shadow_enable; /** Is Option "PageFlip" enabled? */ Bool pageflip; + Bool force_24_32; void *shadow_fb; /** diff -Nru xorg-server-1.18.3/hw/xfree86/drivers/modesetting/Makefile.am xorg-server-1.18.4/hw/xfree86/drivers/modesetting/Makefile.am --- xorg-server-1.18.3/hw/xfree86/drivers/modesetting/Makefile.am 2016-03-03 19:01:31.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/drivers/modesetting/Makefile.am 2016-07-19 17:10:57.000000000 +0000 @@ -51,6 +51,8 @@ dumb_bo.c \ dumb_bo.h \ present.c \ + sh3224.c \ + sh3224.h \ vblank.c \ $(NULL) diff -Nru xorg-server-1.18.3/hw/xfree86/drivers/modesetting/Makefile.in xorg-server-1.18.4/hw/xfree86/drivers/modesetting/Makefile.in --- xorg-server-1.18.3/hw/xfree86/drivers/modesetting/Makefile.in 2016-04-04 18:39:54.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/drivers/modesetting/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -168,7 +168,7 @@ am__DEPENDENCIES_1 = modesetting_drv_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am_modesetting_drv_la_OBJECTS = dri2.lo driver.lo drmmode_display.lo \ - dumb_bo.lo present.lo vblank.lo + dumb_bo.lo present.lo sh3224.lo vblank.lo modesetting_drv_la_OBJECTS = $(am_modesetting_drv_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) @@ -261,6 +261,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -493,6 +495,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ @@ -610,6 +613,8 @@ dumb_bo.c \ dumb_bo.h \ present.c \ + sh3224.c \ + sh3224.h \ vblank.c \ $(NULL) @@ -704,6 +709,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drmmode_display.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dumb_bo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/present.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sh3224.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vblank.Plo@am__quote@ .c.o: diff -Nru xorg-server-1.18.3/hw/xfree86/drivers/modesetting/present.c xorg-server-1.18.4/hw/xfree86/drivers/modesetting/present.c --- xorg-server-1.18.3/hw/xfree86/drivers/modesetting/present.c 2016-03-09 14:07:05.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/drivers/modesetting/present.c 2016-07-19 15:12:15.000000000 +0000 @@ -626,6 +626,15 @@ if (!crtc->enabled) continue; + /* info->drmmode.fb_id still points to the FB for the last flipped BO. + * Clear it, drmmode_set_mode_major will re-create it + */ + if (drmmode_crtc->drmmode->fb_id) { + drmModeRmFB(drmmode_crtc->drmmode->fd, + drmmode_crtc->drmmode->fb_id); + drmmode_crtc->drmmode->fb_id = 0; + } + if (drmmode_crtc->dpms_mode == DPMSModeOn) crtc->funcs->set_mode_major(crtc, &crtc->mode, crtc->rotation, crtc->x, crtc->y); diff -Nru xorg-server-1.18.3/hw/xfree86/drivers/modesetting/sh3224.c xorg-server-1.18.4/hw/xfree86/drivers/modesetting/sh3224.c --- xorg-server-1.18.3/hw/xfree86/drivers/modesetting/sh3224.c 1970-01-01 00:00:00.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/drivers/modesetting/sh3224.c 2016-07-19 17:10:57.000000000 +0000 @@ -0,0 +1,140 @@ +/* + * + * Copyright © 2000 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifdef HAVE_DIX_CONFIG_H +#include "dix-config.h" +#endif + +#include "shadow.h" +#include "fb.h" + +#include "sh3224.h" +#define Get8(a) ((CARD32) READ(a)) + +#if BITMAP_BIT_ORDER == MSBFirst +#define Get24(a) ((Get8(a) << 16) | (Get8((a)+1) << 8) | Get8((a)+2)) +#define Put24(a,p) ((WRITE((a+0), (CARD8) ((p) >> 16))), \ + (WRITE((a+1), (CARD8) ((p) >> 8))), \ + (WRITE((a+2), (CARD8) (p)))) +#else +#define Get24(a) (Get8(a) | (Get8((a)+1) << 8) | (Get8((a)+2)<<16)) +#define Put24(a,p) ((WRITE((a+0), (CARD8) (p))), \ + (WRITE((a+1), (CARD8) ((p) >> 8))), \ + (WRITE((a+2), (CARD8) ((p) >> 16)))) +#endif + +static void +sh24_32BltLine(CARD8 *srcLine, + CARD8 *dstLine, + int width) +{ + CARD32 *src; + CARD8 *dst; + int w; + CARD32 pixel; + + src = (CARD32 *) srcLine; + dst = dstLine; + w = width; + + while (((long)dst & 3) && w) { + w--; + pixel = READ(src++); + Put24(dst, pixel); + dst += 3; + } + /* Do four aligned pixels at a time */ + while (w >= 4) { + CARD32 s0, s1; + + s0 = READ(src++); + s1 = READ(src++); +#if BITMAP_BIT_ORDER == LSBFirst + WRITE((CARD32 *) dst, (s0 & 0xffffff) | (s1 << 24)); +#else + WRITE((CARD32 *) dst, (s0 << 8) | ((s1 & 0xffffff) >> 16)); +#endif + s0 = READ(src++); +#if BITMAP_BIT_ORDER == LSBFirst + WRITE((CARD32 *) (dst + 4), + ((s1 & 0xffffff) >> 8) | (s0 << 16)); +#else + WRITE((CARD32 *) (dst + 4), + (s1 << 16) | ((s0 & 0xffffff) >> 8)); +#endif + s1 = READ(src++); +#if BITMAP_BIT_ORDER == LSBFirst + WRITE((CARD32 *) (dst + 8), + ((s0 & 0xffffff) >> 16) | (s1 << 8)); +#else + WRITE((CARD32 *) (dst + 8), (s0 << 24) | (s1 & 0xffffff)); +#endif + dst += 12; + w -= 4; + } + while (w--) { + pixel = READ(src++); + Put24(dst, pixel); + dst += 3; + } +} + +void +ms_shadowUpdate32to24(ScreenPtr pScreen, shadowBufPtr pBuf) +{ + RegionPtr damage = shadowDamage(pBuf); + PixmapPtr pShadow = pBuf->pPixmap; + int nbox = RegionNumRects(damage); + BoxPtr pbox = RegionRects(damage); + FbStride shaStride; + int shaBpp; + _X_UNUSED int shaXoff, shaYoff; + int x, y, w, h; + CARD32 winSize; + FbBits *shaBase, *shaLine; + CARD8 *winBase = NULL, *winLine; + + fbGetDrawable(&pShadow->drawable, shaBase, shaStride, shaBpp, shaXoff, + shaYoff); + + /* just get the initial window base + stride */ + winBase = (*pBuf->window)(pScreen, 0, 0, SHADOW_WINDOW_WRITE, + &winSize, pBuf->closure); + + while (nbox--) { + x = pbox->x1; + y = pbox->y1; + w = pbox->x2 - pbox->x1; + h = pbox->y2 - pbox->y1; + + winLine = winBase + y * winSize + (x * 3); + shaLine = shaBase + y * shaStride + ((x * shaBpp) >> FB_SHIFT); + + while (h--) { + sh24_32BltLine((CARD8 *)shaLine, (CARD8 *)winLine, w); + winLine += winSize; + shaLine += shaStride; + } + pbox++; + } +} diff -Nru xorg-server-1.18.3/hw/xfree86/drivers/modesetting/sh3224.h xorg-server-1.18.4/hw/xfree86/drivers/modesetting/sh3224.h --- xorg-server-1.18.3/hw/xfree86/drivers/modesetting/sh3224.h 1970-01-01 00:00:00.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/drivers/modesetting/sh3224.h 2016-07-19 17:10:57.000000000 +0000 @@ -0,0 +1,7 @@ +#ifndef SH3224_H +#define SH3224_H + +void +ms_shadowUpdate32to24(ScreenPtr pScreen, shadowBufPtr pBuf); + +#endif diff -Nru xorg-server-1.18.3/hw/xfree86/exa/Makefile.in xorg-server-1.18.4/hw/xfree86/exa/Makefile.in --- xorg-server-1.18.3/hw/xfree86/exa/Makefile.in 2016-04-04 18:39:54.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/exa/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -272,6 +272,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -504,6 +506,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/exa/man/Makefile.in xorg-server-1.18.4/hw/xfree86/exa/man/Makefile.in --- xorg-server-1.18.3/hw/xfree86/exa/man/Makefile.in 2016-04-04 18:39:54.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/exa/man/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -180,6 +180,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -429,6 +431,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/fbdevhw/Makefile.in xorg-server-1.18.4/hw/xfree86/fbdevhw/Makefile.in --- xorg-server-1.18.3/hw/xfree86/fbdevhw/Makefile.in 2016-04-04 18:39:54.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/fbdevhw/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -275,6 +275,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -507,6 +509,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/fbdevhw/man/Makefile.in xorg-server-1.18.4/hw/xfree86/fbdevhw/man/Makefile.in --- xorg-server-1.18.3/hw/xfree86/fbdevhw/man/Makefile.in 2016-04-04 18:39:54.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/fbdevhw/man/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -180,6 +180,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -429,6 +431,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/glamor_egl/Makefile.in xorg-server-1.18.4/hw/xfree86/glamor_egl/Makefile.in --- xorg-server-1.18.3/hw/xfree86/glamor_egl/Makefile.in 2016-04-04 18:39:54.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/glamor_egl/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -252,6 +252,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -484,6 +486,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/i2c/Makefile.in xorg-server-1.18.4/hw/xfree86/i2c/Makefile.in --- xorg-server-1.18.3/hw/xfree86/i2c/Makefile.in 2016-04-04 18:39:54.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/i2c/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -228,6 +228,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -460,6 +462,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/int10/Makefile.in xorg-server-1.18.4/hw/xfree86/int10/Makefile.in --- xorg-server-1.18.3/hw/xfree86/int10/Makefile.in 2016-04-04 18:39:54.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/int10/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -247,6 +247,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -479,6 +481,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/int10/xf86x86emu.c xorg-server-1.18.4/hw/xfree86/int10/xf86x86emu.c --- xorg-server-1.18.3/hw/xfree86/int10/xf86x86emu.c 2016-03-03 19:01:31.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/int10/xf86x86emu.c 2016-07-18 19:08:16.000000000 +0000 @@ -7,13 +7,13 @@ #include #endif -#include #include "xf86.h" #include "xf86_OSproc.h" #include "xf86Pci.h" #define _INT10_PRIVATE #include "xf86int10.h" #include "int10Defines.h" +#include #define M _X86EMU_env diff -Nru xorg-server-1.18.3/hw/xfree86/loader/Makefile.in xorg-server-1.18.4/hw/xfree86/loader/Makefile.in --- xorg-server-1.18.3/hw/xfree86/loader/Makefile.in 2016-04-04 18:39:54.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/loader/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -199,6 +199,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -431,6 +433,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/Makefile.in xorg-server-1.18.4/hw/xfree86/Makefile.in --- xorg-server-1.18.3/hw/xfree86/Makefile.in 2016-04-04 18:39:53.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/Makefile.in 2016-07-19 17:27:27.000000000 +0000 @@ -259,6 +259,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -491,6 +493,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/man/Makefile.in xorg-server-1.18.4/hw/xfree86/man/Makefile.in --- xorg-server-1.18.3/hw/xfree86/man/Makefile.in 2016-04-04 18:39:54.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/man/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -183,6 +183,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -432,6 +434,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/man/xorg.conf.man xorg-server-1.18.4/hw/xfree86/man/xorg.conf.man --- xorg-server-1.18.3/hw/xfree86/man/xorg.conf.man 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/man/xorg.conf.man 2016-07-19 17:07:29.000000000 +0000 @@ -644,6 +644,10 @@ .BI "Option \*qAIGLX\*q \*q" boolean \*q enable or disable AIGLX. AIGLX is enabled by default. .TP 7 +.BI "Option \*qIndirectGLX\*q \*q" boolean \*q +enable or disable indirect GLX contexts. Indirect GLX contexts are disabled by +default. +.TP 7 .BI "Option \*qDRI2\*q \*q" boolean \*q enable or disable DRI2. DRI2 is disabled by default. .TP 7 diff -Nru xorg-server-1.18.3/hw/xfree86/modes/Makefile.in xorg-server-1.18.4/hw/xfree86/modes/Makefile.in --- xorg-server-1.18.3/hw/xfree86/modes/Makefile.in 2016-04-04 18:39:55.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/modes/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -234,6 +234,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -466,6 +468,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/modes/xf86Crtc.c xorg-server-1.18.4/hw/xfree86/modes/xf86Crtc.c --- xorg-server-1.18.3/hw/xfree86/modes/xf86Crtc.c 2016-03-29 20:42:30.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/modes/xf86Crtc.c 2016-07-18 19:08:16.000000000 +0000 @@ -3285,7 +3285,8 @@ } /* Set the DDC properties for the 'compat' output */ - if (output == xf86CompatOutput(scrn)) + /* GPU screens don't have a root window */ + if (output == xf86CompatOutput(scrn) && !scrn->is_gpu) xf86SetDDCproperties(scrn, edid_mon); #ifdef RANDR_12_INTERFACE diff -Nru xorg-server-1.18.3/hw/xfree86/os-support/bsd/Makefile.in xorg-server-1.18.4/hw/xfree86/os-support/bsd/Makefile.in --- xorg-server-1.18.3/hw/xfree86/os-support/bsd/Makefile.in 2016-04-04 18:39:55.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/os-support/bsd/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -222,6 +222,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -454,6 +456,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/os-support/bus/Makefile.in xorg-server-1.18.4/hw/xfree86/os-support/bus/Makefile.in --- xorg-server-1.18.3/hw/xfree86/os-support/bus/Makefile.in 2016-04-04 18:39:55.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/os-support/bus/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -238,6 +238,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -470,6 +472,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/os-support/hurd/Makefile.in xorg-server-1.18.4/hw/xfree86/os-support/hurd/Makefile.in --- xorg-server-1.18.3/hw/xfree86/os-support/hurd/Makefile.in 2016-04-04 18:39:55.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/os-support/hurd/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -200,6 +200,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -432,6 +434,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/os-support/linux/lnx_init.c xorg-server-1.18.4/hw/xfree86/os-support/linux/lnx_init.c --- xorg-server-1.18.3/hw/xfree86/os-support/linux/lnx_init.c 2016-03-03 19:01:31.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/os-support/linux/lnx_init.c 2016-07-19 17:13:29.000000000 +0000 @@ -93,7 +93,6 @@ struct vt_stat vts; struct stat st; MessageType from = X_PROBED; - const char *tty0[] = { "/dev/tty0", "/dev/vc/0", NULL }; /* Only do this once */ static int vt_settings_parsed = 0; @@ -108,14 +107,7 @@ from = X_CMDLINE; } else { - - i = 0; - while (tty0[i] != NULL) { - if ((fd = open(tty0[i], O_WRONLY, 0)) >= 0) - break; - i++; - } - + fd = open("/dev/tty0", O_WRONLY, 0); if (fd < 0) { if (may_fail) return 0; diff -Nru xorg-server-1.18.3/hw/xfree86/os-support/linux/Makefile.in xorg-server-1.18.4/hw/xfree86/os-support/linux/Makefile.in --- xorg-server-1.18.3/hw/xfree86/os-support/linux/Makefile.in 2016-04-04 18:39:55.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/os-support/linux/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -224,6 +224,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -457,6 +459,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/os-support/Makefile.in xorg-server-1.18.4/hw/xfree86/os-support/Makefile.in --- xorg-server-1.18.3/hw/xfree86/os-support/Makefile.in 2016-04-04 18:39:55.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/os-support/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -267,6 +267,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -499,6 +501,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/os-support/misc/Makefile.in xorg-server-1.18.4/hw/xfree86/os-support/misc/Makefile.in --- xorg-server-1.18.3/hw/xfree86/os-support/misc/Makefile.in 2016-04-04 18:39:55.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/os-support/misc/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -198,6 +198,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -430,6 +432,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/os-support/solaris/Makefile.in xorg-server-1.18.4/hw/xfree86/os-support/solaris/Makefile.in --- xorg-server-1.18.3/hw/xfree86/os-support/solaris/Makefile.in 2016-04-04 18:39:55.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/os-support/solaris/Makefile.in 2016-07-19 17:27:28.000000000 +0000 @@ -253,6 +253,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -485,6 +487,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/os-support/stub/Makefile.in xorg-server-1.18.4/hw/xfree86/os-support/stub/Makefile.in --- xorg-server-1.18.3/hw/xfree86/os-support/stub/Makefile.in 2016-04-04 18:39:55.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/os-support/stub/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -200,6 +200,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -432,6 +434,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/parser/Makefile.in xorg-server-1.18.4/hw/xfree86/parser/Makefile.in --- xorg-server-1.18.3/hw/xfree86/parser/Makefile.in 2016-04-04 18:39:55.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/parser/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -232,6 +232,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -464,6 +466,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/ramdac/Makefile.in xorg-server-1.18.4/hw/xfree86/ramdac/Makefile.in --- xorg-server-1.18.3/hw/xfree86/ramdac/Makefile.in 2016-04-04 18:39:55.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/ramdac/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -229,6 +229,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -461,6 +463,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/shadowfb/Makefile.in xorg-server-1.18.4/hw/xfree86/shadowfb/Makefile.in --- xorg-server-1.18.3/hw/xfree86/shadowfb/Makefile.in 2016-04-04 18:39:56.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/shadowfb/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -233,6 +233,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -465,6 +467,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/utils/cvt/Makefile.in xorg-server-1.18.4/hw/xfree86/utils/cvt/Makefile.in --- xorg-server-1.18.3/hw/xfree86/utils/cvt/Makefile.in 2016-04-04 18:39:56.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/utils/cvt/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -226,6 +226,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -458,6 +460,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/utils/gtf/Makefile.in xorg-server-1.18.4/hw/xfree86/utils/gtf/Makefile.in --- xorg-server-1.18.3/hw/xfree86/utils/gtf/Makefile.in 2016-04-04 18:39:56.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/utils/gtf/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -225,6 +225,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -457,6 +459,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/utils/Makefile.in xorg-server-1.18.4/hw/xfree86/utils/Makefile.in --- xorg-server-1.18.3/hw/xfree86/utils/Makefile.in 2016-04-04 18:39:56.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/utils/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -209,6 +209,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -441,6 +443,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/utils/man/Makefile.in xorg-server-1.18.4/hw/xfree86/utils/man/Makefile.in --- xorg-server-1.18.3/hw/xfree86/utils/man/Makefile.in 2016-04-04 18:39:56.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/utils/man/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -180,6 +180,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -429,6 +431,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/vbe/Makefile.in xorg-server-1.18.4/hw/xfree86/vbe/Makefile.in --- xorg-server-1.18.3/hw/xfree86/vbe/Makefile.in 2016-04-04 18:39:56.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/vbe/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -231,6 +231,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -463,6 +465,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/vgahw/Makefile.in xorg-server-1.18.4/hw/xfree86/vgahw/Makefile.in --- xorg-server-1.18.3/hw/xfree86/vgahw/Makefile.in 2016-04-04 18:39:56.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/vgahw/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -232,6 +232,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -464,6 +466,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/x86emu/Makefile.in xorg-server-1.18.4/hw/xfree86/x86emu/Makefile.in --- xorg-server-1.18.3/hw/xfree86/x86emu/Makefile.in 2016-04-04 18:39:56.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/x86emu/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -200,6 +200,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -432,6 +434,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xfree86/x86emu/x86emu/regs.h xorg-server-1.18.4/hw/xfree86/x86emu/x86emu/regs.h --- xorg-server-1.18.3/hw/xfree86/x86emu/x86emu/regs.h 2016-03-03 19:01:31.000000000 +0000 +++ xorg-server-1.18.4/hw/xfree86/x86emu/x86emu/regs.h 2016-07-18 19:08:16.000000000 +0000 @@ -158,14 +158,6 @@ #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 diff -Nru xorg-server-1.18.3/hw/xnest/Makefile.in xorg-server-1.18.4/hw/xnest/Makefile.in --- xorg-server-1.18.3/hw/xnest/Makefile.in 2016-04-04 18:39:56.000000000 +0000 +++ xorg-server-1.18.4/hw/xnest/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -253,6 +253,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -489,6 +491,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xnest/man/Makefile.in xorg-server-1.18.4/hw/xnest/man/Makefile.in --- xorg-server-1.18.3/hw/xnest/man/Makefile.in 2016-04-04 18:39:56.000000000 +0000 +++ xorg-server-1.18.4/hw/xnest/man/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -180,6 +180,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -429,6 +431,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xquartz/bundle/Info.plist.cpp xorg-server-1.18.4/hw/xquartz/bundle/Info.plist.cpp --- xorg-server-1.18.3/hw/xquartz/bundle/Info.plist.cpp 2016-03-03 19:01:31.000000000 +0000 +++ xorg-server-1.18.4/hw/xquartz/bundle/Info.plist.cpp 2016-07-18 19:08:16.000000000 +0000 @@ -19,9 +19,9 @@ CFBundlePackageType APPL CFBundleShortVersionString - 2.7.7 + BUNDLE_VERSION_STRING CFBundleVersion - 2.7.7 + BUNDLE_VERSION CFBundleSignature x11a CSResourcesFileMapped @@ -34,27 +34,14 @@ SUPublicDSAKeyFile sparkle.pem SUFeedURL - http://xquartz.macosforge.org/downloads/sparkle/release.xml - NSAppTransportSecurity - - NSExceptionDomains - - macosforge.org - - NSIncludesSubdomains - - NSExceptionAllowsInsecureHTTPLoads - - - - + XQUARTZ_SPARKLE_FEED_URL #endif LSApplicationCategoryType public.app-category.utilities NSHumanReadableCopyright - © 2003-2013 Apple Inc. + © 2003-2016 Apple Inc. © 2003 XFree86 Project, Inc. -© 2003-2013 X.org Foundation, Inc. +© 2003-2016 X.org Foundation, Inc. NSMainNibFile main diff -Nru xorg-server-1.18.3/hw/xquartz/bundle/Makefile.am xorg-server-1.18.4/hw/xquartz/bundle/Makefile.am --- xorg-server-1.18.3/hw/xquartz/bundle/Makefile.am 2016-03-03 19:01:31.000000000 +0000 +++ xorg-server-1.18.4/hw/xquartz/bundle/Makefile.am 2016-07-18 19:08:16.000000000 +0000 @@ -1,11 +1,13 @@ include cpprules.in CPP_FILES_FLAGS = \ + -DAPPLE_APPLICATION_NAME="$(APPLE_APPLICATION_NAME)" \ -DBUNDLE_ID_PREFIX="$(BUNDLE_ID_PREFIX)" \ - -DAPPLE_APPLICATION_NAME="$(APPLE_APPLICATION_NAME)" + -DBUNDLE_VERSION="$(BUNDLE_VERSION)" \ + -DBUNDLE_VERSION_STRING="$(BUNDLE_VERSION_STRING)" if XQUARTZ_SPARKLE -CPP_FILES_FLAGS += -DXQUARTZ_SPARKLE +CPP_FILES_FLAGS += -DXQUARTZ_SPARKLE -DXQUARTZ_SPARKLE_FEED_URL="$(XQUARTZ_SPARKLE_FEED_URL)" endif install-data-hook: diff -Nru xorg-server-1.18.3/hw/xquartz/bundle/Makefile.in xorg-server-1.18.4/hw/xquartz/bundle/Makefile.in --- xorg-server-1.18.3/hw/xquartz/bundle/Makefile.in 2016-04-04 18:39:57.000000000 +0000 +++ xorg-server-1.18.4/hw/xquartz/bundle/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -95,7 +95,7 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@XQUARTZ_SPARKLE_TRUE@am__append_1 = -DXQUARTZ_SPARKLE +@XQUARTZ_SPARKLE_TRUE@am__append_1 = -DXQUARTZ_SPARKLE -DXQUARTZ_SPARKLE_FEED_URL="$(XQUARTZ_SPARKLE_FEED_URL)" subdir = hw/xquartz/bundle ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_define_dir.m4 \ @@ -187,6 +187,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -419,6 +421,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ @@ -520,8 +523,11 @@ -e '/\@\@$$/s/\@\@$$/\\/' SUFFIXES = .cpp -CPP_FILES_FLAGS = -DBUNDLE_ID_PREFIX="$(BUNDLE_ID_PREFIX)" \ +CPP_FILES_FLAGS = \ -DAPPLE_APPLICATION_NAME="$(APPLE_APPLICATION_NAME)" \ + -DBUNDLE_ID_PREFIX="$(BUNDLE_ID_PREFIX)" \ + -DBUNDLE_VERSION="$(BUNDLE_VERSION)" \ + -DBUNDLE_VERSION_STRING="$(BUNDLE_VERSION_STRING)" \ $(am__append_1) noinst_PRE = Info.plist.cpp noinst_DATA = $(noinst_PRE:plist.cpp=plist) diff -Nru xorg-server-1.18.3/hw/xquartz/GL/Makefile.in xorg-server-1.18.4/hw/xquartz/GL/Makefile.in --- xorg-server-1.18.3/hw/xquartz/GL/Makefile.in 2016-04-04 18:39:56.000000000 +0000 +++ xorg-server-1.18.4/hw/xquartz/GL/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -199,6 +199,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -431,6 +433,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xquartz/mach-startup/Makefile.in xorg-server-1.18.4/hw/xquartz/mach-startup/Makefile.in --- xorg-server-1.18.3/hw/xquartz/mach-startup/Makefile.in 2016-04-04 18:39:57.000000000 +0000 +++ xorg-server-1.18.4/hw/xquartz/mach-startup/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -234,6 +234,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -466,6 +468,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xquartz/Makefile.in xorg-server-1.18.4/hw/xquartz/Makefile.in --- xorg-server-1.18.3/hw/xquartz/Makefile.in 2016-04-04 18:39:56.000000000 +0000 +++ xorg-server-1.18.4/hw/xquartz/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -259,6 +259,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -491,6 +493,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xquartz/man/Makefile.in xorg-server-1.18.4/hw/xquartz/man/Makefile.in --- xorg-server-1.18.3/hw/xquartz/man/Makefile.in 2016-04-04 18:39:57.000000000 +0000 +++ xorg-server-1.18.4/hw/xquartz/man/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -180,6 +180,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -429,6 +431,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xquartz/pbproxy/Makefile.in xorg-server-1.18.4/hw/xquartz/pbproxy/Makefile.in --- xorg-server-1.18.3/hw/xquartz/pbproxy/Makefile.in 2016-04-04 18:39:57.000000000 +0000 +++ xorg-server-1.18.4/hw/xquartz/pbproxy/Makefile.in 2016-07-19 17:27:29.000000000 +0000 @@ -229,6 +229,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -461,6 +463,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xquartz/xpr/Makefile.in xorg-server-1.18.4/hw/xquartz/xpr/Makefile.in --- xorg-server-1.18.3/hw/xquartz/xpr/Makefile.in 2016-04-04 18:39:57.000000000 +0000 +++ xorg-server-1.18.4/hw/xquartz/xpr/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -200,6 +200,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -432,6 +434,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xwayland/Makefile.in xorg-server-1.18.4/hw/xwayland/Makefile.in --- xorg-server-1.18.3/hw/xwayland/Makefile.in 2016-04-04 18:39:57.000000000 +0000 +++ xorg-server-1.18.4/hw/xwayland/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -234,6 +234,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -466,6 +468,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xwayland/xwayland-cursor.c xorg-server-1.18.4/hw/xwayland/xwayland-cursor.c --- xorg-server-1.18.3/hw/xwayland/xwayland-cursor.c 2016-03-03 19:01:31.000000000 +0000 +++ xorg-server-1.18.4/hw/xwayland/xwayland-cursor.c 2016-07-18 19:08:16.000000000 +0000 @@ -76,8 +76,20 @@ xwl_unrealize_cursor(DeviceIntPtr device, ScreenPtr screen, CursorPtr cursor) { PixmapPtr pixmap; + struct xwl_seat *xwl_seat; pixmap = dixGetPrivate(&cursor->devPrivates, &xwl_cursor_private_key); + if (!pixmap) + return TRUE; + + dixSetPrivate(&cursor->devPrivates, &xwl_cursor_private_key, NULL); + + /* When called from FreeCursor(), device is always NULL */ + if (device) { + xwl_seat = device->public.devicePrivate; + if (xwl_seat && cursor == xwl_seat->x_cursor) + xwl_seat->x_cursor = NULL; + } return xwl_shm_destroy_pixmap(pixmap); } @@ -122,6 +134,9 @@ cursor = xwl_seat->x_cursor; pixmap = dixGetPrivate(&cursor->devPrivates, &xwl_cursor_private_key); + if (!pixmap) + return; + stride = cursor->bits->width * 4; if (cursor->bits->argb) memcpy(pixmap->devPrivate.ptr, diff -Nru xorg-server-1.18.3/hw/xwayland/xwayland-glamor.c xorg-server-1.18.4/hw/xwayland/xwayland-glamor.c --- xorg-server-1.18.3/hw/xwayland/xwayland-glamor.c 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/hw/xwayland/xwayland-glamor.c 2016-07-19 17:07:29.000000000 +0000 @@ -298,12 +298,13 @@ return; } - eglBindAPI(EGL_OPENGL_API); if (!eglInitialize(xwl_screen->egl_display, &major, &minor)) { ErrorF("eglInitialize() failed\n"); return; } + eglBindAPI(EGL_OPENGL_API); + version = eglQueryString(xwl_screen->egl_display, EGL_VERSION); ErrorF("glamor: EGL version %s:\n", version); diff -Nru xorg-server-1.18.3/hw/xwayland/xwayland-glamor-xv.c xorg-server-1.18.4/hw/xwayland/xwayland-glamor-xv.c --- xorg-server-1.18.3/hw/xwayland/xwayland-glamor-xv.c 2016-03-14 20:14:37.000000000 +0000 +++ xorg-server-1.18.4/hw/xwayland/xwayland-glamor-xv.c 2016-07-18 19:08:16.000000000 +0000 @@ -336,7 +336,7 @@ pa = xnfcalloc(1, sizeof(XvAdaptorRec)); pa->pScreen = pScreen; - pa->type = (unsigned int) (XvWindowMask | XvInputMask | XvImageMask); + pa->type = (unsigned char) (XvInputMask | XvImageMask); pa->ddStopVideo = xwl_glamor_xv_stop_video; pa->ddPutImage = xwl_glamor_xv_put_image; pa->ddSetPortAttribute = xwl_glamor_xv_set_port_attribute; diff -Nru xorg-server-1.18.3/hw/xwayland/xwayland.h xorg-server-1.18.4/hw/xwayland/xwayland.h --- xorg-server-1.18.3/hw/xwayland/xwayland.h 2016-03-14 20:14:37.000000000 +0000 +++ xorg-server-1.18.4/hw/xwayland/xwayland.h 2016-07-19 17:13:47.000000000 +0000 @@ -147,7 +147,7 @@ struct xwl_screen *xwl_screen; RROutputPtr randr_output; RRCrtcPtr randr_crtc; - int32_t x, y, width, height; + int32_t x, y, width, height, refresh; Rotation rotation; }; diff -Nru xorg-server-1.18.3/hw/xwayland/xwayland-output.c xorg-server-1.18.4/hw/xwayland/xwayland-output.c --- xorg-server-1.18.3/hw/xwayland/xwayland-output.c 2016-03-11 18:43:16.000000000 +0000 +++ xorg-server-1.18.4/hw/xwayland/xwayland-output.c 2016-07-19 17:13:47.000000000 +0000 @@ -98,7 +98,6 @@ int width, int height, int refresh) { struct xwl_output *xwl_output = data; - RRModePtr randr_mode; if (!(flags & WL_OUTPUT_MODE_CURRENT)) return; @@ -111,13 +110,7 @@ xwl_output->height = width; } - randr_mode = xwayland_cvt(width, height, refresh / 1000.0, 0, 0); - - RROutputSetModes(xwl_output->randr_output, &randr_mode, 1, 1); - - RRCrtcNotify(xwl_output->randr_crtc, randr_mode, - xwl_output->x, xwl_output->y, - xwl_output->rotation, NULL, 1, &xwl_output->randr_output); + xwl_output->refresh = refresh; } static inline void @@ -198,6 +191,14 @@ struct xwl_output *it, *xwl_output = data; struct xwl_screen *xwl_screen = xwl_output->xwl_screen; int width = 0, height = 0, has_this_output = 0; + RRModePtr randr_mode; + + randr_mode = xwayland_cvt(xwl_output->width, xwl_output->height, + xwl_output->refresh / 1000.0, 0, 0); + RROutputSetModes(xwl_output->randr_output, &randr_mode, 1, 1); + RRCrtcNotify(xwl_output->randr_crtc, randr_mode, + xwl_output->x, xwl_output->y, + xwl_output->rotation, NULL, 1, &xwl_output->randr_output); xorg_list_for_each_entry(it, &xwl_screen->output_list, link) { /* output done event is sent even when some property diff -Nru xorg-server-1.18.3/hw/xwayland/xwayland-shm.c xorg-server-1.18.4/hw/xwayland/xwayland-shm.c --- xorg-server-1.18.3/hw/xwayland/xwayland-shm.c 2016-03-14 20:14:37.000000000 +0000 +++ xorg-server-1.18.4/hw/xwayland/xwayland-shm.c 2016-07-18 19:08:16.000000000 +0000 @@ -140,14 +140,20 @@ return -1; #ifdef HAVE_POSIX_FALLOCATE - ret = posix_fallocate(fd, 0, size); + do { + ret = posix_fallocate(fd, 0, size); + } while (ret == EINTR); + if (ret != 0) { close(fd); errno = ret; return -1; } #else - ret = ftruncate(fd, size); + do { + ret = ftruncate(fd, size); + } while (ret == -1 && errno == EINTR); + if (ret < 0) { close(fd); return -1; diff -Nru xorg-server-1.18.3/hw/xwin/glx/Makefile.in xorg-server-1.18.4/hw/xwin/glx/Makefile.in --- xorg-server-1.18.3/hw/xwin/glx/Makefile.in 2016-04-04 18:39:57.000000000 +0000 +++ xorg-server-1.18.4/hw/xwin/glx/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -234,6 +234,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -466,6 +468,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xwin/Makefile.in xorg-server-1.18.4/hw/xwin/Makefile.in --- xorg-server-1.18.3/hw/xwin/Makefile.in 2016-04-04 18:39:57.000000000 +0000 +++ xorg-server-1.18.4/hw/xwin/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -345,6 +345,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -585,6 +587,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xwin/man/Makefile.in xorg-server-1.18.4/hw/xwin/man/Makefile.in --- xorg-server-1.18.3/hw/xwin/man/Makefile.in 2016-04-04 18:39:57.000000000 +0000 +++ xorg-server-1.18.4/hw/xwin/man/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -180,6 +180,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -429,6 +431,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/hw/xwin/winclipboard/Makefile.in xorg-server-1.18.4/hw/xwin/winclipboard/Makefile.in --- xorg-server-1.18.3/hw/xwin/winclipboard/Makefile.in 2016-04-04 18:39:57.000000000 +0000 +++ xorg-server-1.18.4/hw/xwin/winclipboard/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -247,6 +247,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -496,6 +498,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/include/Makefile.in xorg-server-1.18.4/include/Makefile.in --- xorg-server-1.18.3/include/Makefile.in 2016-04-04 18:39:57.000000000 +0000 +++ xorg-server-1.18.4/include/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -212,6 +212,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -444,6 +446,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/include/xkbsrv.h xorg-server-1.18.4/include/xkbsrv.h --- xorg-server-1.18.3/include/xkbsrv.h 2016-03-15 16:12:14.000000000 +0000 +++ xorg-server-1.18.4/include/xkbsrv.h 2016-07-19 17:07:29.000000000 +0000 @@ -496,6 +496,10 @@ XkbEventCausePtr /* cause */ ); +extern _X_EXPORT void XkbUpdateAllDeviceIndicators(XkbChangesPtr /* changes */, + XkbEventCausePtr /* cause */ + ); + extern _X_EXPORT XkbSrvLedInfoPtr XkbAllocSrvLedInfo(DeviceIntPtr /* dev */ , KbdFeedbackPtr /* kf */ , LedFeedbackPtr /* lf */ , diff -Nru xorg-server-1.18.3/Makefile.in xorg-server-1.18.4/Makefile.in --- xorg-server-1.18.3/Makefile.in 2016-04-04 18:39:50.000000000 +0000 +++ xorg-server-1.18.4/Makefile.in 2016-07-19 17:27:25.000000000 +0000 @@ -262,6 +262,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -494,6 +496,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/man/Makefile.in xorg-server-1.18.4/man/Makefile.in --- xorg-server-1.18.3/man/Makefile.in 2016-04-04 18:39:57.000000000 +0000 +++ xorg-server-1.18.4/man/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -184,6 +184,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -433,6 +435,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/mi/Makefile.in xorg-server-1.18.4/mi/Makefile.in --- xorg-server-1.18.3/mi/Makefile.in 2016-04-04 18:39:58.000000000 +0000 +++ xorg-server-1.18.4/mi/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -237,6 +237,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -469,6 +471,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/miext/damage/Makefile.in xorg-server-1.18.4/miext/damage/Makefile.in --- xorg-server-1.18.3/miext/damage/Makefile.in 2016-04-04 18:39:58.000000000 +0000 +++ xorg-server-1.18.4/miext/damage/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -230,6 +230,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -462,6 +464,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/miext/Makefile.in xorg-server-1.18.4/miext/Makefile.in --- xorg-server-1.18.3/miext/Makefile.in 2016-04-04 18:39:58.000000000 +0000 +++ xorg-server-1.18.4/miext/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -209,6 +209,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -441,6 +443,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/miext/rootless/Makefile.in xorg-server-1.18.4/miext/rootless/Makefile.in --- xorg-server-1.18.3/miext/rootless/Makefile.in 2016-04-04 18:39:58.000000000 +0000 +++ xorg-server-1.18.4/miext/rootless/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -199,6 +199,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -431,6 +433,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/miext/shadow/Makefile.in xorg-server-1.18.4/miext/shadow/Makefile.in --- xorg-server-1.18.3/miext/shadow/Makefile.in 2016-04-04 18:39:58.000000000 +0000 +++ xorg-server-1.18.4/miext/shadow/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -236,6 +236,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -468,6 +470,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/miext/sync/Makefile.in xorg-server-1.18.4/miext/sync/Makefile.in --- xorg-server-1.18.3/miext/sync/Makefile.in 2016-04-04 18:39:58.000000000 +0000 +++ xorg-server-1.18.4/miext/sync/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -235,6 +235,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -467,6 +469,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/os/access.c xorg-server-1.18.4/os/access.c --- xorg-server-1.18.3/os/access.c 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/os/access.c 2016-07-19 17:25:35.000000000 +0000 @@ -173,6 +173,10 @@ #endif /* WIN32 */ +#if !defined(WIN32) || defined(__CYGWIN__) +#include +#endif + #define X_INCLUDE_NETDB_H #include @@ -1081,9 +1085,8 @@ } } -/* Is client on the local host */ -Bool -ComputeLocalClient(ClientPtr client) +static Bool +xtransLocalClient(ClientPtr client) { int alen, family, notused; Xtransaddr *from = NULL; @@ -1116,6 +1119,41 @@ return FALSE; } +/* Is client on the local host */ +Bool +ComputeLocalClient(ClientPtr client) +{ + const char *cmdname = GetClientCmdName(client); + + if (!xtransLocalClient(client)) + return FALSE; + + /* If the executable name is "ssh", assume that this client connection + * is forwarded from another host via SSH + */ + if (cmdname) { + char *cmd = strdup(cmdname); + Bool ret; + + /* Cut off any colon and whatever comes after it, see + * https://lists.freedesktop.org/archives/xorg-devel/2015-December/048164.html + */ + cmd = strtok(cmd, ":"); + +#if !defined(WIN32) || defined(__CYGWIN__) + ret = strcmp(basename(cmd), "ssh") != 0; +#else + ret = strcmp(cmd, "ssh") != 0; +#endif + + free(cmd); + + return ret; + } + + return TRUE; +} + /* * Return the uid and all gids of a connected local client * Allocates a LocalClientCredRec - caller must call FreeLocalClientCreds diff -Nru xorg-server-1.18.3/os/Makefile.in xorg-server-1.18.4/os/Makefile.in --- xorg-server-1.18.3/os/Makefile.in 2016-04-04 18:39:58.000000000 +0000 +++ xorg-server-1.18.4/os/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -229,6 +229,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -461,6 +463,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/present/Makefile.in xorg-server-1.18.4/present/Makefile.in --- xorg-server-1.18.3/present/Makefile.in 2016-04-04 18:39:58.000000000 +0000 +++ xorg-server-1.18.4/present/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -230,6 +230,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -462,6 +464,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/present/present.c xorg-server-1.18.4/present/present.c --- xorg-server-1.18.3/present/present.c 2016-03-29 20:45:35.000000000 +0000 +++ xorg-server-1.18.4/present/present.c 2016-07-19 17:07:29.000000000 +0000 @@ -353,10 +353,10 @@ static void present_flip_try_ready(ScreenPtr screen) { - present_vblank_ptr vblank, tmp; + present_vblank_ptr vblank; - xorg_list_for_each_entry_safe(vblank, tmp, &present_exec_queue, event_queue) { - if (vblank->flip_ready) { + xorg_list_for_each_entry(vblank, &present_flip_queue, event_queue) { + if (vblank->queued) { present_re_execute(vblank); return; } @@ -517,19 +517,22 @@ void present_event_notify(uint64_t event_id, uint64_t ust, uint64_t msc) { - present_vblank_ptr vblank, tmp; + present_vblank_ptr vblank; int s; if (!event_id) return; DebugPresent(("\te %lld ust %lld msc %lld\n", event_id, ust, msc)); - xorg_list_for_each_entry_safe(vblank, tmp, &present_exec_queue, event_queue) { - if (vblank->event_id == event_id) { + xorg_list_for_each_entry(vblank, &present_exec_queue, event_queue) { + int64_t match = event_id - vblank->event_id; + if (match == 0) { present_execute(vblank, ust, msc); return; } + if (match < 0) + break; } - xorg_list_for_each_entry_safe(vblank, tmp, &present_flip_queue, event_queue) { + xorg_list_for_each_entry(vblank, &present_flip_queue, event_queue) { if (vblank->event_id == event_id) { present_flip_notify(vblank, ust, msc); return; @@ -653,6 +656,8 @@ DebugPresent(("\tr %lld %p (pending %p unflip %lld)\n", vblank->event_id, vblank, screen_priv->flip_pending, screen_priv->unflip_event_id)); + xorg_list_del(&vblank->event_queue); + xorg_list_append(&vblank->event_queue, &present_flip_queue); vblank->flip_ready = TRUE; return; } @@ -943,7 +948,7 @@ vblank->pixmap->drawable.id, vblank->window->drawable.id, target_crtc, vblank->flip, vblank->sync_flip, vblank->serial)); - xorg_list_add(&vblank->event_queue, &present_exec_queue); + xorg_list_append(&vblank->event_queue, &present_exec_queue); vblank->queued = TRUE; if (msc_is_after(target_msc, crtc_msc)) { ret = present_queue_vblank(screen, target_crtc, vblank->event_id, target_msc); @@ -967,7 +972,7 @@ void present_abort_vblank(ScreenPtr screen, RRCrtcPtr crtc, uint64_t event_id, uint64_t msc) { - present_vblank_ptr vblank, tmp; + present_vblank_ptr vblank; if (crtc == NULL) present_fake_abort_vblank(screen, event_id, msc); @@ -978,16 +983,20 @@ (*screen_priv->info->abort_vblank) (crtc, event_id, msc); } - xorg_list_for_each_entry_safe(vblank, tmp, &present_exec_queue, event_queue) { - if (vblank->event_id == event_id) { + xorg_list_for_each_entry(vblank, &present_exec_queue, event_queue) { + int64_t match = event_id - vblank->event_id; + if (match == 0) { xorg_list_del(&vblank->event_queue); vblank->queued = FALSE; return; } + if (match < 0) + break; } - xorg_list_for_each_entry_safe(vblank, tmp, &present_flip_queue, event_queue) { + xorg_list_for_each_entry(vblank, &present_flip_queue, event_queue) { if (vblank->event_id == event_id) { xorg_list_del(&vblank->event_queue); + vblank->queued = FALSE; return; } } diff -Nru xorg-server-1.18.3/pseudoramiX/Makefile.in xorg-server-1.18.4/pseudoramiX/Makefile.in --- xorg-server-1.18.3/pseudoramiX/Makefile.in 2016-04-04 18:39:58.000000000 +0000 +++ xorg-server-1.18.4/pseudoramiX/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -200,6 +200,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -432,6 +434,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/randr/Makefile.in xorg-server-1.18.4/randr/Makefile.in --- xorg-server-1.18.3/randr/Makefile.in 2016-04-04 18:39:58.000000000 +0000 +++ xorg-server-1.18.4/randr/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -241,6 +241,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -473,6 +475,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/randr/rrprovider.c xorg-server-1.18.4/randr/rrprovider.c --- xorg-server-1.18.3/randr/rrprovider.c 2016-03-03 19:01:31.000000000 +0000 +++ xorg-server-1.18.4/randr/rrprovider.c 2016-07-19 17:07:29.000000000 +0000 @@ -325,6 +325,8 @@ VERIFY_RR_PROVIDER(stuff->provider, provider, DixReadAccess); if (!(provider->capabilities & RR_Capability_SourceOffload)) return BadValue; + if (!provider->pScreen->isGPU) + return BadValue; if (stuff->sink_provider) { VERIFY_RR_PROVIDER(stuff->sink_provider, sink_provider, DixReadAccess); diff -Nru xorg-server-1.18.3/record/Makefile.in xorg-server-1.18.4/record/Makefile.in --- xorg-server-1.18.3/record/Makefile.in 2016-04-04 18:39:58.000000000 +0000 +++ xorg-server-1.18.4/record/Makefile.in 2016-07-19 17:27:30.000000000 +0000 @@ -198,6 +198,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -430,6 +432,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/render/Makefile.in xorg-server-1.18.4/render/Makefile.in --- xorg-server-1.18.3/render/Makefile.in 2016-04-04 18:39:58.000000000 +0000 +++ xorg-server-1.18.4/render/Makefile.in 2016-07-19 17:27:31.000000000 +0000 @@ -232,6 +232,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -464,6 +466,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/render/picture.h xorg-server-1.18.4/render/picture.h --- xorg-server-1.18.3/render/picture.h 2016-03-03 19:01:31.000000000 +0000 +++ xorg-server-1.18.4/render/picture.h 2016-07-18 19:08:16.000000000 +0000 @@ -211,7 +211,7 @@ /* whether 't' is a well defined not obviously empty trapezoid */ #define xTrapezoidValid(t) ((t)->left.p1.y != (t)->left.p2.y && \ (t)->right.p1.y != (t)->right.p2.y && \ - (int) ((t)->bottom - (t)->top) > 0) + ((t)->bottom > (t)->top)) /* * Standard NTSC luminance conversions: diff -Nru xorg-server-1.18.3/test/Makefile.in xorg-server-1.18.4/test/Makefile.in --- xorg-server-1.18.3/test/Makefile.in 2016-04-04 18:39:59.000000000 +0000 +++ xorg-server-1.18.4/test/Makefile.in 2016-07-19 17:27:31.000000000 +0000 @@ -589,6 +589,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -821,6 +823,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/test/xi1/Makefile.in xorg-server-1.18.4/test/xi1/Makefile.in --- xorg-server-1.18.3/test/xi1/Makefile.in 2016-04-04 18:39:59.000000000 +0000 +++ xorg-server-1.18.4/test/xi1/Makefile.in 2016-07-19 17:27:31.000000000 +0000 @@ -424,6 +424,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -656,6 +658,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/test/xi2/Makefile.in xorg-server-1.18.4/test/xi2/Makefile.in --- xorg-server-1.18.3/test/xi2/Makefile.in 2016-04-04 18:39:59.000000000 +0000 +++ xorg-server-1.18.4/test/xi2/Makefile.in 2016-07-19 17:27:31.000000000 +0000 @@ -554,6 +554,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -786,6 +788,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/TODO xorg-server-1.18.4/TODO --- xorg-server-1.18.3/TODO 2016-01-11 20:38:49.000000000 +0000 +++ xorg-server-1.18.4/TODO 2016-06-29 17:21:18.000000000 +0000 @@ -78,3 +78,15 @@ FakeClientID(client->index): dri2 add_frame_event hurrr DRI2CreateDrawable2 + +--- + +dmx wraps render, fuck. + +Create/Free GlyphSet: Annoying because GlyphSets are display-wide, so there's +no obvious place to add a wrap chain. Likewise Add/FreeGlyphs, although there +the problem is that glyphs embed their own per-screen list! Fuck sake. + +RenderCompositeGlyphs is correspondingly weird. + +Not entirely sure why SetPictureTransform/Filter are wrapped. diff -Nru xorg-server-1.18.3/Xext/Makefile.in xorg-server-1.18.4/Xext/Makefile.in --- xorg-server-1.18.3/Xext/Makefile.in 2016-04-04 18:39:50.000000000 +0000 +++ xorg-server-1.18.4/Xext/Makefile.in 2016-07-19 17:27:25.000000000 +0000 @@ -288,6 +288,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -520,6 +522,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/Xext/panoramiXprocs.c xorg-server-1.18.4/Xext/panoramiXprocs.c --- xorg-server-1.18.3/Xext/panoramiXprocs.c 2016-03-15 16:12:13.000000000 +0000 +++ xorg-server-1.18.4/Xext/panoramiXprocs.c 2016-07-18 19:08:16.000000000 +0000 @@ -106,7 +106,7 @@ if ((Mask) stuff->mask & CWColormap) { cmap_offset = Ones((Mask) stuff->mask & (CWColormap - 1)); tmp = *((CARD32 *) &stuff[1] + cmap_offset); - if ((tmp != CopyFromParent) && (tmp != None)) { + if (tmp != CopyFromParent) { result = dixLookupResourceByType((void **) &cmap, tmp, XRT_COLORMAP, client, DixReadAccess); @@ -210,7 +210,7 @@ if ((Mask) stuff->valueMask & CWColormap) { cmap_offset = Ones((Mask) stuff->valueMask & (CWColormap - 1)); tmp = *((CARD32 *) &stuff[1] + cmap_offset); - if ((tmp != CopyFromParent) && (tmp != None)) { + if (tmp != CopyFromParent) { result = dixLookupResourceByType((void **) &cmap, tmp, XRT_COLORMAP, client, DixReadAccess); diff -Nru xorg-server-1.18.3/Xext/saver.c xorg-server-1.18.4/Xext/saver.c --- xorg-server-1.18.3/Xext/saver.c 2016-03-15 16:12:13.000000000 +0000 +++ xorg-server-1.18.4/Xext/saver.c 2016-07-18 19:08:16.000000000 +0000 @@ -1143,7 +1143,7 @@ if ((Mask) stuff->mask & CWColormap) { cmap_offset = Ones((Mask) stuff->mask & (CWColormap - 1)); tmp = *((CARD32 *) &stuff[1] + cmap_offset); - if ((tmp != CopyFromParent) && (tmp != None)) { + if (tmp != CopyFromParent) { status = dixLookupResourceByType((void **) &cmap, tmp, XRT_COLORMAP, client, DixReadAccess); diff -Nru xorg-server-1.18.3/Xext/shm.c xorg-server-1.18.4/Xext/shm.c --- xorg-server-1.18.3/Xext/shm.c 2016-03-15 16:12:13.000000000 +0000 +++ xorg-server-1.18.4/Xext/shm.c 2016-07-19 17:14:21.000000000 +0000 @@ -619,6 +619,7 @@ xShmGetImageReply xgi; ShmDescPtr shmdesc; VisualID visual = None; + RegionPtr pVisibleRegion = NULL; int rc; REQUEST(xShmGetImageReq); @@ -650,6 +651,9 @@ wBorderWidth((WindowPtr) pDraw) + (int) pDraw->height) return BadMatch; visual = wVisual(((WindowPtr) pDraw)); + pVisibleRegion = NotClippedByChildren((WindowPtr) pDraw); + if (pVisibleRegion) + RegionTranslate(pVisibleRegion, -pDraw->x, -pDraw->y); } else { if (stuff->x < 0 || @@ -686,6 +690,11 @@ stuff->width, stuff->height, stuff->format, stuff->planeMask, shmdesc->addr + stuff->offset); + if (pVisibleRegion) + XaceCensorImage(client, pVisibleRegion, + PixmapBytePad(stuff->width, pDraw->depth), pDraw, + stuff->x, stuff->y, stuff->width, stuff->height, + stuff->format, shmdesc->addr + stuff->offset); } else { @@ -697,11 +706,19 @@ stuff->width, stuff->height, stuff->format, plane, shmdesc->addr + length); + if (pVisibleRegion) + XaceCensorImage(client, pVisibleRegion, + BitmapBytePad(stuff->width), pDraw, + stuff->x, stuff->y, stuff->width, stuff->height, + stuff->format, shmdesc->addr + length); length += lenPer; } } } + if (pVisibleRegion) + RegionDestroy(pVisibleRegion); + if (client->swapped) { swaps(&xgi.sequenceNumber); swapl(&xgi.length); diff -Nru xorg-server-1.18.3/xfixes/Makefile.in xorg-server-1.18.4/xfixes/Makefile.in --- xorg-server-1.18.3/xfixes/Makefile.in 2016-04-04 18:39:59.000000000 +0000 +++ xorg-server-1.18.4/xfixes/Makefile.in 2016-07-19 17:27:31.000000000 +0000 @@ -199,6 +199,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -431,6 +433,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/Xi/exevents.c xorg-server-1.18.4/Xi/exevents.c --- xorg-server-1.18.3/Xi/exevents.c 2016-04-04 18:33:37.000000000 +0000 +++ xorg-server-1.18.4/Xi/exevents.c 2016-07-19 17:07:29.000000000 +0000 @@ -1379,6 +1379,9 @@ if (!TouchResourceIsOwner(ti, listener->listener)) return !Success; + if (!ti->emulate_pointer) + return !Success; + nevents = TouchConvertToPointerEvent(ev, &motion, &button); BUG_RETURN_VAL(nevents == 0, BadValue); diff -Nru xorg-server-1.18.3/Xi/Makefile.in xorg-server-1.18.4/Xi/Makefile.in --- xorg-server-1.18.3/Xi/Makefile.in 2016-04-04 18:39:50.000000000 +0000 +++ xorg-server-1.18.4/Xi/Makefile.in 2016-07-19 17:27:25.000000000 +0000 @@ -212,6 +212,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -444,6 +446,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/xkb/Makefile.in xorg-server-1.18.4/xkb/Makefile.in --- xorg-server-1.18.3/xkb/Makefile.in 2016-04-04 18:39:59.000000000 +0000 +++ xorg-server-1.18.4/xkb/Makefile.in 2016-07-19 17:27:31.000000000 +0000 @@ -239,6 +239,8 @@ BUILD_DATE = @BUILD_DATE@ BUILD_TIME = @BUILD_TIME@ BUNDLE_ID_PREFIX = @BUNDLE_ID_PREFIX@ +BUNDLE_VERSION = @BUNDLE_VERSION@ +BUNDLE_VERSION_STRING = @BUNDLE_VERSION_STRING@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ @@ -471,6 +473,7 @@ XPBPROXY_LIBS = @XPBPROXY_LIBS@ XQUARTZ_LIBS = @XQUARTZ_LIBS@ XQUARTZ_SPARKLE = @XQUARTZ_SPARKLE@ +XQUARTZ_SPARKLE_FEED_URL = @XQUARTZ_SPARKLE_FEED_URL@ XRESEXAMPLES_DEP_CFLAGS = @XRESEXAMPLES_DEP_CFLAGS@ XRESEXAMPLES_DEP_LIBS = @XRESEXAMPLES_DEP_LIBS@ XSERVERCFLAGS_CFLAGS = @XSERVERCFLAGS_CFLAGS@ diff -Nru xorg-server-1.18.3/xkb/xkb.c xorg-server-1.18.4/xkb/xkb.c --- xorg-server-1.18.3/xkb/xkb.c 2016-03-15 16:12:14.000000000 +0000 +++ xorg-server-1.18.4/xkb/xkb.c 2016-07-18 19:08:16.000000000 +0000 @@ -5692,7 +5692,6 @@ } /***====================================================================***/ - int ProcXkbGetKbdByName(ClientPtr client) { @@ -5707,6 +5706,7 @@ xkbGetGeometryReply grep = { 0 }; XkbComponentNamesRec names = { 0 }; XkbDescPtr xkb, new; + XkbEventCauseRec cause; unsigned char *str; char mapFile[PATH_MAX]; unsigned len; @@ -6017,6 +6017,9 @@ new = NULL; } XkbFreeComponentNames(&names, FALSE); + XkbSetCauseXkbReq(&cause, X_kbGetKbdByName, client); + XkbUpdateAllDeviceIndicators(NULL, &cause); + return Success; } diff -Nru xorg-server-1.18.3/xkb/xkbEvents.c xorg-server-1.18.4/xkb/xkbEvents.c --- xorg-server-1.18.3/xkb/xkbEvents.c 2016-03-15 16:12:14.000000000 +0000 +++ xorg-server-1.18.4/xkb/xkbEvents.c 2016-07-18 19:08:16.000000000 +0000 @@ -505,7 +505,7 @@ if ((!interest) || (force)) return; - if ((class == 0) || (class == KbdFeedbackClass)) { + if (class == KbdFeedbackClass) { KeybdCtrl *pKeyCtrl = (KeybdCtrl *) pCtrl; id = pKeyCtrl->id; diff -Nru xorg-server-1.18.3/xkb/xkbLEDs.c xorg-server-1.18.4/xkb/xkbLEDs.c --- xorg-server-1.18.3/xkb/xkbLEDs.c 2016-03-15 16:12:14.000000000 +0000 +++ xorg-server-1.18.4/xkb/xkbLEDs.c 2016-07-18 19:08:16.000000000 +0000 @@ -304,7 +304,7 @@ return; } -static void +void XkbUpdateAllDeviceIndicators(XkbChangesPtr changes, XkbEventCausePtr cause) { DeviceIntPtr edev; diff -Nru xorg-server-1.18.3/xserver-autobind-hotplug.patch xorg-server-1.18.4/xserver-autobind-hotplug.patch --- xorg-server-1.18.3/xserver-autobind-hotplug.patch 2017-07-17 17:03:32.000000000 +0000 +++ xorg-server-1.18.4/xserver-autobind-hotplug.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,113 +0,0 @@ -From cd6f931fb06f825f246222a4362fbf728f8dce73 Mon Sep 17 00:00:00 2001 -From: Dave Airlie -Date: Fri, 17 Aug 2012 09:49:24 +1000 -Subject: [PATCH] autobind GPUs to the screen, (v3) - -this is racy and really not what we want for hotplug going forward, -but until DE support is in GNOME its probably for the best. - -v2: fix if config or slave config is NULL -v3: fix multi useful slaves -DO NOT UPSTREAM. - -Signed-off-by: Dave Airlie ---- - hw/xfree86/common/xf86Init.c | 12 ++++++++++++ - hw/xfree86/common/xf86platformBus.c | 3 +++ - hw/xfree86/modes/xf86Crtc.c | 32 ++++++++++++++++++++++++++++++++ - 3 files changed, 47 insertions(+) - -diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c -index 6282252..dc33ad1 100644 ---- a/hw/xfree86/common/xf86Init.c -+++ b/hw/xfree86/common/xf86Init.c -@@ -361,6 +361,16 @@ xf86CreateRootWindow(WindowPtr pWin) - return ret; - } - -+extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master); -+static void -+xf86AutoConfigOutputDevices(void) -+{ -+ int i; -+ -+ for (i = 0; i < xf86NumGPUScreens; i++) -+ xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]); -+} -+ - static void - InstallSignalHandlers(void) - { -@@ -949,6 +959,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) - for (i = 0; i < xf86NumGPUScreens; i++) - AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); - -+ xf86AutoConfigOutputDevices(); -+ - xf86VGAarbiterWrapFunctions(); - if (sigio_blocked) - OsReleaseSIGIO(); -diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c -index 33b2b7d..be3bdd9 100644 ---- a/hw/xfree86/common/xf86platformBus.c -+++ b/hw/xfree86/common/xf86platformBus.c -@@ -393,6 +393,8 @@ xf86platformProbeDev(DriverPtr drvp) - return foundScreen; - } - -+extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master); -+ - int - xf86platformAddDevice(int index) - { -@@ -465,6 +467,7 @@ xf86platformAddDevice(int index) - } - /* attach unbound to 0 protocol screen */ - AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); -+ xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]); - - RRResourcesChanged(xf86Screens[0]->pScreen); - RRTellChanged(xf86Screens[0]->pScreen); -diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c -index 4726f2a..e83ea13 100644 ---- a/hw/xfree86/modes/xf86Crtc.c -+++ b/hw/xfree86/modes/xf86Crtc.c -@@ -3440,3 +3440,35 @@ xf86DetachAllCrtc(ScrnInfoPtr scrn) - crtc->x = crtc->y = 0; - } - } -+ -+ -+void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master) -+{ -+ RRProviderPtr master_provider; -+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(master); -+ xf86CrtcConfigPtr slave_config = XF86_CRTC_CONFIG_PTR(pScrn); -+ Bool unbound = FALSE; -+ -+ if (!config || !slave_config) -+ return; -+ -+ master_provider = config->randr_provider; -+ -+ if ((master->capabilities & RR_Capability_SinkOffload) && -+ pScrn->capabilities & RR_Capability_SourceOffload) { -+ /* source offload */ -+ -+ DetachUnboundGPU(pScrn->pScreen); -+ unbound = TRUE; -+ AttachOffloadGPU(master->pScreen, pScrn->pScreen); -+ slave_config->randr_provider->offload_sink = master_provider; -+ } -+ if ((master->capabilities & RR_Capability_SourceOutput) && -+ pScrn->capabilities & RR_Capability_SinkOutput) { -+ /* sink offload */ -+ if (!unbound) -+ DetachUnboundGPU(pScrn->pScreen); -+ AttachOutputGPU(master->pScreen, pScrn->pScreen); -+ slave_config->randr_provider->output_source = master_provider; -+ } -+} --- -1.8.3.1 -