Hello community, here is the log from the commit of package libXrandr for openSUSE:Factory checked in at 2015-05-20 23:25:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libXrandr (Old) and /work/SRC/openSUSE:Factory/.libXrandr.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libXrandr" Changes: -------- --- /work/SRC/openSUSE:Factory/libXrandr/libXrandr.changes 2013-09-11 12:20:03.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libXrandr.new/libXrandr.changes 2015-05-20 23:25:22.000000000 +0200 @@ -1,0 +2,11 @@ +Mon May 18 09:22:09 UTC 2015 - sndir...@suse.com + +- added baselibs.conf as source in specfile + +------------------------------------------------------------------- +Sun May 17 21:25:48 UTC 2015 - tobias.johannes.klausm...@mni.thm.de + +- Update to version 1.5.0: + Add support for monitors and fixes requires on libX11. + +------------------------------------------------------------------- Old: ---- libXrandr-1.4.2.tar.bz2 New: ---- libXrandr-1.5.0.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libXrandr.spec ++++++ --- /var/tmp/diff_new_pack.FnVO7i/_old 2015-05-20 23:25:23.000000000 +0200 +++ /var/tmp/diff_new_pack.FnVO7i/_new 2015-05-20 23:25:23.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package libXrandr # -# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ Name: libXrandr %define lname libXrandr2 -Version: 1.4.2 +Version: 1.5.0 Release: 0 Summary: X Resize, Rotate and Reflection extension library License: MIT @@ -28,6 +28,7 @@ #Git-Clone: git://anongit.freedesktop.org/xorg/lib/libXrandr #Git-Web: http://cgit.freedesktop.org/xorg/lib/libXrandr/ Source: http://xorg.freedesktop.org/releases/individual/lib/%{name}-%{version}.tar.bz2 +Source1: baselibs.conf BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: autoconf >= 2.60 ++++++ libXrandr-1.4.2.tar.bz2 -> libXrandr-1.5.0.tar.bz2 ++++++ ++++ 12159 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/ChangeLog new/libXrandr-1.5.0/ChangeLog --- old/libXrandr-1.4.2/ChangeLog 2013-09-08 06:52:13.000000000 +0200 +++ new/libXrandr-1.5.0/ChangeLog 2015-05-17 06:50:04.000000000 +0200 @@ -1,3 +1,46 @@ +commit 4437436906cbba5121115e552d564262e8b4c784 +Author: Keith Packard <kei...@keithp.com> +Date: Tue Dec 16 01:55:30 2014 -0800 + + Add monitors, update to version 1.5 (v2) + + v2: [airlied] + xrandr was giving the outputs from 0 for each monitor instead of + incrementing the pointer. + add get_active support. + + Reviewed-by: Dave Airlie <airl...@redhat.com> + Signed-off-by: Keith Packard <kei...@keithp.com> + +commit 7402eaa0185110a60cf4aae32d7b470c1372b45b +Author: Keith Packard <kei...@keithp.com> +Date: Tue Dec 16 17:05:18 2014 -0800 + + libXrandr: Clean up compiler warnings + + This removes warnings about shadowing local variables with the same + name, and type mismatches with _XRead32. + + Reviewed-by: Dave Airlie <airl...@redhat.com> + Signed-off-by: Keith Packard <kei...@keithp.com> + +commit bc00b4fb0b52ed2f6f8544fa3b5da9693ee7ed90 +Author: Michael Joost <m...@michael-joost.de> +Date: Mon Nov 18 16:11:26 2013 +0100 + + Remove fallback for _XEatDataWords, require libX11 1.6 for it + + _XEatDataWords was orignally introduced with the May 2013 security + patches, and in order to ease the process of delivering those, + fallback versions of _XEatDataWords were included in the X extension + library patches so they could be applied to older versions that didn't + have libX11 1.6 yet. Now that we're past that hurdle, we can drop + the fallbacks and just require libX11 1.6 for building new versions + of the extension libraries. + + Reviewed-by: Alan Coopersmith <alan.coopersm...@oracle.com> + Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> + commit 30a7b506ae2071b8d265ce4eaeed1af60bc7ee7b Author: Alan Coopersmith <alan.coopersm...@oracle.com> Date: Sat Sep 7 21:50:49 2013 -0700 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/INSTALL new/libXrandr-1.5.0/INSTALL --- old/libXrandr-1.4.2/INSTALL 2013-09-08 06:52:13.000000000 +0200 +++ new/libXrandr-1.5.0/INSTALL 2015-05-17 06:50:04.000000000 +0200 @@ -1,11 +1,13 @@ Installation Instructions ************************* -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -2006, 2007, 2008 Free Software Foundation, Inc. +Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation, +Inc. - This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. Basic Installation ================== @@ -13,7 +15,11 @@ Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for -instructions specific to this package. +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses @@ -42,7 +48,7 @@ you want to change it or regenerate `configure' using a newer version of `autoconf'. -The simplest way to compile this package is: + The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. @@ -53,12 +59,22 @@ 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with - the package. + the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and - documentation. + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. - 5. You can remove the program binaries and object files from the + 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is @@ -67,8 +83,15 @@ all sorts of other programs in order to regenerate files that came with the distribution. - 6. Often, you can also type `make uninstall' to remove the installed - files again. + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. Compilers and Options ===================== @@ -93,7 +116,8 @@ own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. +source code in the directory that `configure' is in and in `..'. This +is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have @@ -120,7 +144,8 @@ By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving -`configure' the option `--prefix=PREFIX'. +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you @@ -131,15 +156,46 @@ In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. +you can set and what kinds of files go in them. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. -Optional Features -================= - Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE @@ -152,6 +208,13 @@ you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + Particular systems ================== @@ -159,10 +222,15 @@ CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: - ./configure CC="cc -Ae" + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. + HP-UX `make' updates targets which have the same time stamps as +their prerequisites, which makes it generally unusable when shipped +generated files such as `configure' are involved. Use GNU `make' +instead. + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `<wchar.h>' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended @@ -174,6 +242,16 @@ ./configure CC="cc -nodtk" + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + Specifying the System Type ========================== @@ -189,7 +267,8 @@ where SYSTEM can have one of these forms: - OS KERNEL-OS + OS + KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't @@ -277,7 +356,7 @@ `configure' can determine that directory automatically. `--prefix=DIR' - Use DIR as the installation prefix. *Note Installation Names:: + Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/compile new/libXrandr-1.5.0/compile --- old/libXrandr-1.4.2/compile 2013-09-08 06:51:09.000000000 +0200 +++ new/libXrandr-1.5.0/compile 1970-01-01 01:00:00.000000000 +0100 @@ -1,347 +0,0 @@ -#! /bin/sh -# Wrapper for compilers which do not understand '-c -o'. - -scriptversion=2012-10-14.11; # UTC - -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# Written by Tom Tromey <tro...@cygnus.com>. -# -# 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, 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, see <http://www.gnu.org/licenses/>. - -# 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. - -# This file is maintained in Automake, please report -# bugs to <bug-autom...@gnu.org> or send patches to -# <automake-patc...@gnu.org>. - -nl=' -' - -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent tools from complaining about whitespace usage. -IFS=" "" $nl" - -file_conv= - -# func_file_conv build_file lazy -# Convert a $build file to $host form and store it in $file -# Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. -func_file_conv () -{ - file=$1 - case $file in - / | /[!/]*) # absolute file, and not a UNC file - if test -z "$file_conv"; then - # lazily determine how to convert abs files - case `uname -s` in - MINGW*) - file_conv=mingw - ;; - CYGWIN*) - file_conv=cygwin - ;; - *) - file_conv=wine - ;; - esac - fi - case $file_conv/,$2, in - *,$file_conv,*) - ;; - mingw/*) - file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` - ;; - cygwin/*) - file=`cygpath -m "$file" || echo "$file"` - ;; - wine/*) - file=`winepath -w "$file" || echo "$file"` - ;; - esac - ;; - esac -} - -# func_cl_dashL linkdir -# Make cl look for libraries in LINKDIR -func_cl_dashL () -{ - func_file_conv "$1" - if test -z "$lib_path"; then - lib_path=$file - else - lib_path="$lib_path;$file" - fi - linker_opts="$linker_opts -LIBPATH:$file" -} - -# func_cl_dashl library -# Do a library search-path lookup for cl -func_cl_dashl () -{ - lib=$1 - found=no - save_IFS=$IFS - IFS=';' - for dir in $lib_path $LIB - do - IFS=$save_IFS - if $shared && test -f "$dir/$lib.dll.lib"; then - found=yes - lib=$dir/$lib.dll.lib - break - fi - if test -f "$dir/$lib.lib"; then - found=yes - lib=$dir/$lib.lib - break - fi - if test -f "$dir/lib$lib.a"; then - found=yes - lib=$dir/lib$lib.a - break - fi - done - IFS=$save_IFS - - if test "$found" != yes; then - lib=$lib.lib - fi -} - -# func_cl_wrapper cl arg... -# Adjust compile command to suit cl -func_cl_wrapper () -{ - # Assume a capable shell - lib_path= - shared=: - linker_opts= - for arg - do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - eat=1 - case $2 in - *.o | *.[oO][bB][jJ]) - func_file_conv "$2" - set x "$@" -Fo"$file" - shift - ;; - *) - func_file_conv "$2" - set x "$@" -Fe"$file" - shift - ;; - esac - ;; - -I) - eat=1 - func_file_conv "$2" mingw - set x "$@" -I"$file" - shift - ;; - -I*) - func_file_conv "${1#-I}" mingw - set x "$@" -I"$file" - shift - ;; - -l) - eat=1 - func_cl_dashl "$2" - set x "$@" "$lib" - shift - ;; - -l*) - func_cl_dashl "${1#-l}" - set x "$@" "$lib" - shift - ;; - -L) - eat=1 - func_cl_dashL "$2" - ;; - -L*) - func_cl_dashL "${1#-L}" - ;; - -static) - shared=false - ;; - -Wl,*) - arg=${1#-Wl,} - save_ifs="$IFS"; IFS=',' - for flag in $arg; do - IFS="$save_ifs" - linker_opts="$linker_opts $flag" - done - IFS="$save_ifs" - ;; - -Xlinker) - eat=1 - linker_opts="$linker_opts $2" - ;; - -*) - set x "$@" "$1" - shift - ;; - *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) - func_file_conv "$1" - set x "$@" -Tp"$file" - shift - ;; - *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) - func_file_conv "$1" mingw - set x "$@" "$file" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift - done - if test -n "$linker_opts"; then - linker_opts="-link$linker_opts" - fi - exec "$@" $linker_opts - exit 1 -} - -eat= - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: compile [--help] [--version] PROGRAM [ARGS] - -Wrapper for compilers which do not understand '-c -o'. -Remove '-o dest.o' from ARGS, run PROGRAM with the remaining -arguments, and rename the output as expected. - -If you are trying to build a whole package this is not the -right script to run: please start by reading the file 'INSTALL'. - -Report bugs to <bug-autom...@gnu.org>. -EOF - exit $? - ;; - -v | --v*) - echo "compile $scriptversion" - exit $? - ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) - func_cl_wrapper "$@" # Doesn't return... - ;; -esac - -ofile= -cfile= - -for arg -do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - # So we strip '-o arg' only if arg is an object. - eat=1 - case $2 in - *.o | *.obj) - ofile=$2 - ;; - *) - set x "$@" -o "$2" - shift - ;; - esac - ;; - *.c) - cfile=$1 - set x "$@" "$1" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift -done - -if test -z "$ofile" || test -z "$cfile"; then - # If no '-o' option was seen then we might have been invoked from a - # pattern rule where we don't need one. That is ok -- this is a - # normal compilation that the losing compiler can handle. If no - # '.c' file was seen then we are probably linking. That is also - # ok. - exec "$@" -fi - -# Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` - -# Create the lock directory. -# Note: use '[/\\:.-]' here to ensure that we don't use the same name -# that we are using for the .o file. Also, base the name on the expected -# object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d -while true; do - if mkdir "$lockdir" >/dev/null 2>&1; then - break - fi - sleep 1 -done -# FIXME: race condition here if user kills between mkdir and trap. -trap "rmdir '$lockdir'; exit 1" 1 2 15 - -# Run the compile. -"$@" -ret=$? - -if test -f "$cofile"; then - test "$cofile" = "$ofile" || mv "$cofile" "$ofile" -elif test -f "${cofile}bj"; then - test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" -fi - -rmdir "$lockdir" -exit $ret - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/config.h.in new/libXrandr-1.5.0/config.h.in --- old/libXrandr-1.4.2/config.h.in 2013-09-08 06:51:08.000000000 +0200 +++ new/libXrandr-1.5.0/config.h.in 2015-05-17 06:40:17.000000000 +0200 @@ -30,9 +30,6 @@ /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H -/* Define to 1 if you have the `_XEatDataWords' function. */ -#undef HAVE__XEATDATAWORDS - /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/configure.ac new/libXrandr-1.5.0/configure.ac --- old/libXrandr-1.4.2/configure.ac 2013-09-08 06:50:59.000000000 +0200 +++ new/libXrandr-1.5.0/configure.ac 2015-05-17 06:39:55.000000000 +0200 @@ -29,7 +29,7 @@ # digit in the version number to track changes which don't affect the # protocol, so Xrandr version l.n.m corresponds to protocol version l.n # -AC_INIT([libXrandr], [1.4.2], +AC_INIT([libXrandr], [1.5.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [libXrandr]) AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_HEADERS([config.h]) @@ -53,13 +53,7 @@ AC_SUBST(RANDR_VERSION) # Obtain compiler/linker options for depedencies -PKG_CHECK_MODULES(RANDR, x11 randrproto >= $RANDR_VERSION xext xextproto xrender renderproto) - -# Check for _XEatDataWords function that may be patched into older Xlib release -SAVE_LIBS="$LIBS" -LIBS="$RANDR_LIBS" -AC_CHECK_FUNCS([_XEatDataWords]) -LIBS="$SAVE_LIBS" +PKG_CHECK_MODULES(RANDR, [x11 >= 1.6] randrproto >= $RANDR_VERSION xext xextproto xrender renderproto) AC_CONFIG_FILES([Makefile src/Makefile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/include/X11/extensions/Xrandr.h new/libXrandr-1.5.0/include/X11/extensions/Xrandr.h --- old/libXrandr-1.4.2/include/X11/extensions/Xrandr.h 2013-09-08 06:50:59.000000000 +0200 +++ new/libXrandr-1.5.0/include/X11/extensions/Xrandr.h 2015-05-17 06:39:55.000000000 +0200 @@ -552,6 +552,36 @@ unsigned long *nitems, unsigned long *bytes_after, unsigned char **prop); + +typedef struct _XRRMonitorInfo { + Atom name; + Bool primary; + Bool automatic; + int noutput; + int x; + int y; + int width; + int height; + int mwidth; + int mheight; + RROutput *outputs; +} XRRMonitorInfo; + +XRRMonitorInfo * +XRRAllocateMonitor(Display *dpy, int noutput); + +XRRMonitorInfo * +XRRGetMonitors(Display *dpy, Window window, Bool get_active, int *nmonitors); + +void +XRRSetMonitor(Display *dpy, Window window, XRRMonitorInfo *monitor); + +void +XRRDeleteMonitor(Display *dpy, Window window, Atom name); + +void +XRRFreeMonitors(XRRMonitorInfo *monitors); + _XFUNCPROTOEND #endif /* _XRANDR_H_ */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/src/Makefile.am new/libXrandr-1.5.0/src/Makefile.am --- old/libXrandr-1.4.2/src/Makefile.am 2013-09-08 06:50:59.000000000 +0200 +++ new/libXrandr-1.5.0/src/Makefile.am 2015-05-17 06:39:55.000000000 +0200 @@ -10,7 +10,8 @@ XrrProperty.c \ XrrScreen.c \ XrrProvider.c \ - XrrProviderProperty.c + XrrProviderProperty.c \ + XrrMonitor.c libXrandr_la_LIBADD = @RANDR_LIBS@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/src/Xrandr.c new/libXrandr-1.5.0/src/Xrandr.c --- old/libXrandr-1.4.2/src/Xrandr.c 2013-09-08 06:50:59.000000000 +0200 +++ new/libXrandr-1.5.0/src/Xrandr.c 2015-05-17 06:39:55.000000000 +0200 @@ -219,62 +219,62 @@ awire->subCode = aevent->subtype; switch (aevent->subtype) { case RRNotify_OutputChange: { - xRROutputChangeNotifyEvent *awire = (xRROutputChangeNotifyEvent *) wire; - XRROutputChangeNotifyEvent *aevent = (XRROutputChangeNotifyEvent *) event; - awire->window = aevent->window; - awire->output = aevent->output; - awire->crtc = aevent->crtc; - awire->mode = aevent->mode; - awire->rotation = aevent->rotation; - awire->connection = aevent->connection; - awire->subpixelOrder = aevent->subpixel_order; + xRROutputChangeNotifyEvent *sawire = (xRROutputChangeNotifyEvent *) wire; + XRROutputChangeNotifyEvent *saevent = (XRROutputChangeNotifyEvent *) event; + sawire->window = saevent->window; + sawire->output = saevent->output; + sawire->crtc = saevent->crtc; + sawire->mode = saevent->mode; + sawire->rotation = saevent->rotation; + sawire->connection = saevent->connection; + sawire->subpixelOrder = saevent->subpixel_order; return True; } case RRNotify_CrtcChange: { - xRRCrtcChangeNotifyEvent *awire = (xRRCrtcChangeNotifyEvent *) wire; - XRRCrtcChangeNotifyEvent *aevent = (XRRCrtcChangeNotifyEvent *) event; - awire->window = aevent->window; - awire->crtc = aevent->crtc; - awire->mode = aevent->mode; - awire->rotation = aevent->rotation; - awire->x = aevent->x; - awire->y = aevent->y; - awire->width = aevent->width; - awire->height = aevent->height; + xRRCrtcChangeNotifyEvent *sawire = (xRRCrtcChangeNotifyEvent *) wire; + XRRCrtcChangeNotifyEvent *saevent = (XRRCrtcChangeNotifyEvent *) event; + sawire->window = saevent->window; + sawire->crtc = saevent->crtc; + sawire->mode = saevent->mode; + sawire->rotation = saevent->rotation; + sawire->x = saevent->x; + sawire->y = saevent->y; + sawire->width = saevent->width; + sawire->height = saevent->height; return True; } case RRNotify_OutputProperty: { - xRROutputPropertyNotifyEvent *awire = (xRROutputPropertyNotifyEvent *) wire; - XRROutputPropertyNotifyEvent *aevent = (XRROutputPropertyNotifyEvent *) event; - awire->window = aevent->window; - awire->output = aevent->output; - awire->atom = aevent->property; - awire->timestamp = aevent->timestamp; - awire->state = aevent->state; + xRROutputPropertyNotifyEvent *sawire = (xRROutputPropertyNotifyEvent *) wire; + XRROutputPropertyNotifyEvent *saevent = (XRROutputPropertyNotifyEvent *) event; + sawire->window = saevent->window; + sawire->output = saevent->output; + sawire->atom = saevent->property; + sawire->timestamp = saevent->timestamp; + sawire->state = saevent->state; return True; } case RRNotify_ProviderChange: { - xRRProviderChangeNotifyEvent *awire = (xRRProviderChangeNotifyEvent *) wire; - XRRProviderChangeNotifyEvent *aevent = (XRRProviderChangeNotifyEvent *) event; - awire->window = aevent->window; - awire->provider = aevent->provider; + xRRProviderChangeNotifyEvent *sawire = (xRRProviderChangeNotifyEvent *) wire; + XRRProviderChangeNotifyEvent *saevent = (XRRProviderChangeNotifyEvent *) event; + sawire->window = saevent->window; + sawire->provider = saevent->provider; return True; } case RRNotify_ProviderProperty: { - xRRProviderPropertyNotifyEvent *awire = (xRRProviderPropertyNotifyEvent *) wire; - XRRProviderPropertyNotifyEvent *aevent = (XRRProviderPropertyNotifyEvent *) event; - awire->window = aevent->window; - awire->provider = aevent->provider; - awire->atom = aevent->property; - awire->timestamp = aevent->timestamp; - awire->state = aevent->state; + xRRProviderPropertyNotifyEvent *sawire = (xRRProviderPropertyNotifyEvent *) wire; + XRRProviderPropertyNotifyEvent *saevent = (XRRProviderPropertyNotifyEvent *) event; + sawire->window = saevent->window; + sawire->provider = saevent->provider; + sawire->atom = saevent->property; + sawire->timestamp = saevent->timestamp; + sawire->state = saevent->state; return True; } case RRNotify_ResourceChange: { - xRRResourceChangeNotifyEvent *awire = (xRRResourceChangeNotifyEvent *) wire; - XRRResourceChangeNotifyEvent *aevent = (XRRResourceChangeNotifyEvent *) event; - awire->window = aevent->window; - awire->timestamp = aevent->timestamp; + xRRResourceChangeNotifyEvent *sawire = (xRRResourceChangeNotifyEvent *) wire; + XRRResourceChangeNotifyEvent *saevent = (XRRResourceChangeNotifyEvent *) event; + sawire->window = saevent->window; + sawire->timestamp = saevent->timestamp; return True; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/src/Xrandrint.h new/libXrandr-1.5.0/src/Xrandrint.h --- old/libXrandr-1.4.2/src/Xrandrint.h 2013-09-08 06:50:59.000000000 +0200 +++ new/libXrandr-1.5.0/src/Xrandrint.h 2014-04-03 01:54:06.000000000 +0200 @@ -42,20 +42,6 @@ XExtDisplayInfo *XRRFindDisplay (Display *dpy); -#ifndef HAVE__XEATDATAWORDS -#include <X11/Xmd.h> /* for LONG64 on 64-bit platforms */ -#include <limits.h> - -static inline void _XEatDataWords(Display *dpy, unsigned long n) -{ -# ifndef LONG64 - if (n >= (ULONG_MAX >> 2)) - _XIOError(dpy); -# endif - _XEatData (dpy, n << 2); -} -#endif - /* deliberately opaque internal data structure; can be extended, but not reordered */ struct _XRRScreenConfiguration { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/src/XrrCrtc.c new/libXrandr-1.5.0/src/XrrCrtc.c --- old/libXrandr-1.4.2/src/XrrCrtc.c 2013-09-08 06:50:59.000000000 +0200 +++ new/libXrandr-1.5.0/src/XrrCrtc.c 2015-05-17 06:39:55.000000000 +0200 @@ -93,8 +93,8 @@ xci->npossible = rep.nPossibleOutput; xci->possible = (RROutput *) (xci->outputs + rep.nOutput); - _XRead32 (dpy, xci->outputs, rep.nOutput << 2); - _XRead32 (dpy, xci->possible, rep.nPossibleOutput << 2); + _XRead32 (dpy, (long *) xci->outputs, rep.nOutput << 2); + _XRead32 (dpy, (long *) xci->possible, rep.nPossibleOutput << 2); /* * Skip any extra data diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/src/XrrMonitor.c new/libXrandr-1.5.0/src/XrrMonitor.c --- old/libXrandr-1.4.2/src/XrrMonitor.c 1970-01-01 01:00:00.000000000 +0100 +++ new/libXrandr-1.5.0/src/XrrMonitor.c 2015-05-17 06:39:55.000000000 +0200 @@ -0,0 +1,200 @@ +/* + * Copyright © 2014 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 the copyright holders not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. The copyright holders make no representations + * about the suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL THE COPYRIGHT HOLDERS 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_CONFIG_H +#include <config.h> +#endif + +#include <stdio.h> +#include <X11/Xlib.h> +/* we need to be able to manipulate the Display structure on events */ +#include <X11/Xlibint.h> +#include <X11/extensions/render.h> +#include <X11/extensions/Xrender.h> +#include "Xrandrint.h" + +XRRMonitorInfo * +XRRGetMonitors(Display *dpy, Window window, Bool get_active, int *nmonitors) +{ + XExtDisplayInfo *info = XRRFindDisplay(dpy); + xRRGetMonitorsReply rep; + xRRGetMonitorsReq *req; + int nbytes, nbytesRead, rbytes; + int nmon, noutput; + int m, o; + char *buf, *buf_head; + xRRMonitorInfo *xmon; + CARD32 *xoutput; + XRRMonitorInfo *mon = NULL; + RROutput *output; + + RRCheckExtension (dpy, info, NULL); + + *nmonitors = -1; + + LockDisplay (dpy); + GetReq (RRGetMonitors, req); + req->reqType = info->codes->major_opcode; + req->randrReqType = X_RRGetMonitors; + req->window = window; + req->get_active = get_active; + + if (!_XReply (dpy, (xReply *) &rep, 0, xFalse)) + { + UnlockDisplay (dpy); + SyncHandle (); + return NULL; + } + + nbytes = (long) rep.length << 2; + nmon = rep.nmonitors; + noutput = rep.noutputs; + nbytesRead = nmon * SIZEOF(xRRMonitorInfo) + noutput * 4; + + if (nmon > 0) { + + /* + * first we must compute how much space to allocate for + * randr library's use; we'll allocate the structures in a single + * allocation, on cleanlyness grounds. + */ + + rbytes = nmon * sizeof (XRRMonitorInfo) + noutput * sizeof(RROutput); + + buf = buf_head = Xmalloc (nbytesRead); + mon = Xmalloc (rbytes); + + if (buf == NULL || mon == NULL) { + if (buf != NULL) Xfree(buf); + if (mon != NULL) Xfree(mon); + _XEatDataWords (dpy, rep.length); + UnlockDisplay (dpy); + SyncHandle (); + return NULL; + } + + _XReadPad(dpy, buf, nbytesRead); + + output = (RROutput *) (mon + nmon); + + for (m = 0; m < nmon; m++) { + xmon = (xRRMonitorInfo *) buf; + mon[m].name = xmon->name; + mon[m].primary = xmon->primary; + mon[m].automatic = xmon->automatic; + mon[m].noutput = xmon->noutput; + mon[m].x = xmon->x; + mon[m].y = xmon->y; + mon[m].width = xmon->width; + mon[m].height = xmon->height; + mon[m].mwidth = xmon->widthInMillimeters; + mon[m].mheight = xmon->heightInMillimeters; + mon[m].outputs = output; + buf += SIZEOF (xRRMonitorInfo); + xoutput = (CARD32 *) buf; + for (o = 0; o < xmon->noutput; o++) + output[o] = xoutput[o]; + output += xmon->noutput; + buf += xmon->noutput * 4; + } + Xfree(buf_head); + } + + /* + * Skip any extra data + */ + if (nbytes > nbytesRead) + _XEatData (dpy, (unsigned long) (nbytes - nbytesRead)); + + UnlockDisplay (dpy); + SyncHandle (); + + *nmonitors = nmon; + return mon; +} + +void +XRRSetMonitor(Display *dpy, Window window, XRRMonitorInfo *monitor) +{ + XExtDisplayInfo *info = XRRFindDisplay(dpy); + xRRSetMonitorReq *req; + + RRSimpleCheckExtension (dpy, info); + + LockDisplay(dpy); + GetReq (RRSetMonitor, req); + req->reqType = info->codes->major_opcode; + req->randrReqType = X_RRSetMonitor; + req->length += monitor->noutput; + req->window = window; + req->monitor.name = monitor->name; + req->monitor.primary = monitor->primary; + req->monitor.automatic = False; + req->monitor.noutput = monitor->noutput; + req->monitor.x = monitor->x; + req->monitor.y = monitor->y; + req->monitor.width = monitor->width; + req->monitor.height = monitor->height; + req->monitor.widthInMillimeters = monitor->mwidth; + req->monitor.heightInMillimeters = monitor->mheight; + Data32 (dpy, monitor->outputs, monitor->noutput * 4); + + UnlockDisplay (dpy); + SyncHandle (); +} + +void +XRRDeleteMonitor(Display *dpy, Window window, Atom name) +{ + XExtDisplayInfo *info = XRRFindDisplay(dpy); + xRRDeleteMonitorReq *req; + + RRSimpleCheckExtension (dpy, info); + + LockDisplay(dpy); + GetReq (RRDeleteMonitor, req); + req->reqType = info->codes->major_opcode; + req->randrReqType = X_RRDeleteMonitor; + req->window = window; + req->name = name; + UnlockDisplay (dpy); + SyncHandle (); +} + +XRRMonitorInfo * +XRRAllocateMonitor(Display *dpy, int noutput) +{ + XRRMonitorInfo *monitor = calloc(1, sizeof (XRRMonitorInfo) + noutput * sizeof (RROutput)); + if (!monitor) + return NULL; + monitor->outputs = (RROutput *) (monitor + 1); + monitor->noutput = noutput; + return monitor; +} + +void +XRRFreeMonitors(XRRMonitorInfo *monitors) +{ + if (monitors) + Xfree(monitors); +} + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/src/XrrOutput.c new/libXrandr-1.5.0/src/XrrOutput.c --- old/libXrandr-1.4.2/src/XrrOutput.c 2013-09-08 06:50:59.000000000 +0200 +++ new/libXrandr-1.5.0/src/XrrOutput.c 2015-05-17 06:39:55.000000000 +0200 @@ -102,9 +102,9 @@ xoi->clones = (RROutput *) (xoi->modes + rep.nModes); xoi->name = (char *) (xoi->clones + rep.nClones); - _XRead32 (dpy, xoi->crtcs, rep.nCrtcs << 2); - _XRead32 (dpy, xoi->modes, rep.nModes << 2); - _XRead32 (dpy, xoi->clones, rep.nClones << 2); + _XRead32 (dpy, (long *) xoi->crtcs, rep.nCrtcs << 2); + _XRead32 (dpy, (long *) xoi->modes, rep.nModes << 2); + _XRead32 (dpy, (long *) xoi->clones, rep.nClones << 2); /* * Read name and '\0' terminate diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/src/XrrProperty.c new/libXrandr-1.5.0/src/XrrProperty.c --- old/libXrandr-1.4.2/src/XrrProperty.c 2013-09-08 06:50:59.000000000 +0200 +++ new/libXrandr-1.5.0/src/XrrProperty.c 2015-05-17 06:39:55.000000000 +0200 @@ -70,7 +70,7 @@ return NULL; } - _XRead32 (dpy, props, nbytes); + _XRead32 (dpy, (long *) props, nbytes); } *nprop = rep.nAtoms; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/src/XrrProvider.c new/libXrandr-1.5.0/src/XrrProvider.c --- old/libXrandr-1.4.2/src/XrrProvider.c 2013-09-08 06:50:59.000000000 +0200 +++ new/libXrandr-1.5.0/src/XrrProvider.c 2015-05-17 06:39:55.000000000 +0200 @@ -77,7 +77,7 @@ xrpr->nproviders = rep.nProviders; xrpr->providers = (RRProvider *)(xrpr + 1); - _XRead32(dpy, xrpr->providers, rep.nProviders << 2); + _XRead32(dpy, (long *) xrpr->providers, rep.nProviders << 2); if (nbytes > nbytesRead) _XEatData (dpy, (unsigned long) (nbytes - nbytesRead)); @@ -152,10 +152,10 @@ xpi->associated_capability = (unsigned int *)(xpi->associated_providers + rep.nAssociatedProviders); xpi->name = (char *)(xpi->associated_capability + rep.nAssociatedProviders); - _XRead32(dpy, xpi->crtcs, rep.nCrtcs << 2); - _XRead32(dpy, xpi->outputs, rep.nOutputs << 2); + _XRead32(dpy, (long *) xpi->crtcs, rep.nCrtcs << 2); + _XRead32(dpy, (long *) xpi->outputs, rep.nOutputs << 2); - _XRead32(dpy, xpi->associated_providers, rep.nAssociatedProviders << 2); + _XRead32(dpy, (long *) xpi->associated_providers, rep.nAssociatedProviders << 2); /* * _XRead32 reads a series of 32-bit values from the protocol and writes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/src/XrrProviderProperty.c new/libXrandr-1.5.0/src/XrrProviderProperty.c --- old/libXrandr-1.4.2/src/XrrProviderProperty.c 2013-09-08 06:50:59.000000000 +0200 +++ new/libXrandr-1.5.0/src/XrrProviderProperty.c 2015-05-17 06:39:55.000000000 +0200 @@ -70,7 +70,7 @@ return NULL; } - _XRead32 (dpy, props, nbytes); + _XRead32 (dpy, (long *) props, nbytes); } *nprop = rep.nAtoms; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libXrandr-1.4.2/src/XrrScreen.c new/libXrandr-1.5.0/src/XrrScreen.c --- old/libXrandr-1.4.2/src/XrrScreen.c 2013-09-08 06:50:59.000000000 +0200 +++ new/libXrandr-1.5.0/src/XrrScreen.c 2015-05-17 06:39:55.000000000 +0200 @@ -145,8 +145,8 @@ xrsr->modes = (XRRModeInfo *) (xrsr->outputs + rep.nOutputs); names = (char *) (xrsr->modes + rep.nModes); - _XRead32 (dpy, xrsr->crtcs, rep.nCrtcs << 2); - _XRead32 (dpy, xrsr->outputs, rep.nOutputs << 2); + _XRead32 (dpy, (long *) xrsr->crtcs, rep.nCrtcs << 2); + _XRead32 (dpy, (long *) xrsr->outputs, rep.nOutputs << 2); for (i = 0; i < rep.nModes; i++) { xRRModeInfo modeInfo;