diff --git a/app/xrandr/COPYING b/app/xrandr/COPYING index 7f33cbfd2..c4056254b 100644 --- a/app/xrandr/COPYING +++ b/app/xrandr/COPYING @@ -1,12 +1,21 @@ -This is a stub file. This package has not yet had its complete licensing -information compiled. Please see the individual source files for details on -your rights to use and modify this software. +Copyright © 2001 Keith Packard, member of The XFree86 Project, Inc. +Copyright © 2002 Hewlett Packard Company, Inc. +Copyright © 2006 Intel Corporation -Please submit updated COPYING files to the Xorg bugzilla: +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. -https://bugs.freedesktop.org/enter_bug.cgi?product=xorg - -All licensing questions regarding this software should be directed at the -Xorg mailing list: - -http://lists.freedesktop.org/mailman/listinfo/xorg +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. diff --git a/app/xrandr/ChangeLog b/app/xrandr/ChangeLog index 42f184f8f..824eda7b8 100644 --- a/app/xrandr/ChangeLog +++ b/app/xrandr/ChangeLog @@ -1,47 +1,890 @@ -2006-04-26 Adam Jackson +commit 4450756d2d1d86f3c0bfaef81f6265f795468f32 +Author: Brice Goglin +Date: Sat Dec 15 00:59:00 2007 +0100 - * configure.ac: - Bump to 1.0.2 + Clarify the ability to manipulate multiple outputs in the manpage -2006-04-25 Alan Coopersmith +commit 5c2a003adab4aaa979a095e18793b01cfa694bf4 +Author: Brice Goglin +Date: Sat Dec 15 00:49:35 2007 +0100 - * xrandr.c: - Don't try to fprintf a NULL string when -display wasn't passed and - connecting to $DISPLAY failed, since that segfaults on some platforms. + Allow the same output to be specified several times on the command line + + Without this + xrandr --output FOO --mode 1024x768 --output FOO --rotate left + only changed the mode but did not apply the rotation. + + Reported by Marc Haber in + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=455225 -2006-03-20 Adam Jackson +commit ab5e07fdd10f6340289b786414804a034ca98f0b +Author: Matthias Hopf +Date: Fri Nov 30 16:13:51 2007 +0100 - * xrandr.c: - Bug #5511, #5512: Print more sensible error messages when fed broken - command lines. (Bill Crawford) + Add another test known to fail. -2005-12-20 Kevin E. Martin +commit 4bc84c331f4f0f0658ad1f6c0107e3e6af2a7911 +Author: Matthias Hopf +Date: Thu Nov 29 19:54:34 2007 +0100 - * configure.ac: - Update package version for X11R7 release. + Add informational output for known issues. -2005-12-14 Kevin E. Martin +commit 3fb533ff896bd642200e7242c4d35a887faeca74 +Author: Matthias Hopf +Date: Thu Nov 29 19:54:03 2007 +0100 - * configure.ac: - Update package version number for final X11R7 release candidate. + Add more tests, mostly regarding crtc switching and uncloning. -2005-12-06 Kevin E. Martin +commit 20c8a60950cb5b4ddef305dc9822bec1c33e938c +Author: Matthias Hopf +Date: Wed Nov 21 16:48:23 2007 +0100 - * Makefile.am: - Change *man_SOURCES ==> *man_PRE to fix autotools warnings. + Oops. Fix missing space introduced by last commit. -2005-12-03 Kevin E. Martin +commit 3347c849462b737a873a279c24d17c873667c821 +Author: Matthias Hopf +Date: Wed Nov 21 16:47:08 2007 +0100 - * configure.ac: - Update package version number for X11R7 RC3 release. + Be more robust in test case if mode database is borked. + + If modes are reported multiple times per output only bother for the last. -2005-11-19 Kevin E. Martin +commit 81e8f2f5673befded3320424f4511e322d41c80b +Author: Matthias Hopf +Date: Wed Nov 21 16:41:33 2007 +0100 - * configure.ac: - Update dependencies to work with separate build roots. + Some minor issues in test case fixed. + + 'my' not being used correctly. + Some lines of xrandr --verbose output missing in failure case. + If order of outputs change in xrandr -q output they are sorted into original + order now. -2005-10-18 Kevin E. Martin +commit 3a27185879e7a9288de960ccb26a48104cf592e3 +Author: Matthias Hopf +Date: Tue Nov 20 13:03:07 2007 +0100 - * configure.ac: - Update package version number for RC1 release. + More tests for ambiguous xrandr output. +commit c9bd9721e162e4d9d83dd60400c75d4cc98090bd +Author: Matthias Hopf +Date: Mon Nov 19 20:06:39 2007 +0100 + + Use IDs for mode selection instead of hand-crafted x@ strings. + + Some machines provide e.g. multiple 1024x768@60 modes with /slightly/ + different timings. Often only one of them can be used on multiple outputs. + +commit a05d2b6e3ffd81ecc0be98b8d2b758505fb55f3f +Author: Matthias Hopf +Date: Mon Nov 19 12:24:04 2007 +0100 + + Improved test script. + + Allow for outputs in "unknown" state. + Check xrandr return value. + Output full xrandr --verbose output if test failed. + +commit e15a527b6cf1e66709eae4547c8e8bd3402362fe +Author: Matthias Hopf +Date: Mon Nov 12 15:25:44 2007 +0100 + + Add xrandr test suite. + + At the moment it only tests setting one output at a time, it should be + improved to add some multi-output setting as well. Also it only tests clone + modes at the moment, no multi-monitor setups. + +commit f7aaf8947a0f216ffedc7040b0a1ef153b471425 +Author: Matthias Hopf +Date: Mon Nov 12 15:19:52 2007 +0100 + + Always reset other outputs using the best crtc. + + pick_crtcs_score() didn't set up crtcs references correctly if anything but + the last output resulted in the best score. + +commit 307f3686d3d517cb29b8e66d8ad2ff76a48748b7 +Author: Matthias Hopf +Date: Mon Nov 12 15:18:30 2007 +0100 + + Verify crtc against previous config. + + When selecting a crtc for an output, it doesn't check for already attached + outputs in check_crtc_for_output(), and so may select an crtc that is already + in use. + E.g. when changing from a cloned mode the displays won't be split up to + different crtcs, but the same crtc will be used, changing the resolution for + the unspecified display as well. + +commit 4834439ce62e41204367cf5356a7a1719870791f +Author: Matthias Hopf +Date: Thu Oct 11 16:54:40 2007 +0200 + + Build ChangeLog from git-log automatically. + +commit 2fa28afb035cf2d2efb077db58d3858c57189be4 +Author: Adam Jackson +Date: Tue Oct 2 11:06:18 2007 -0400 + + Death to ChangeLog + +commit 0cfaad401711092f8858cdec64e4d4f33023f398 +Author: Adam Jackson +Date: Tue Oct 2 11:06:02 2007 -0400 + + Update COPYING + +commit 06d7272d845033fe3c6f0625cce5a32e7be636a7 +Author: Brice Goglin +Date: Thu Aug 9 19:06:37 2007 +0200 + + When invoked with no option, xrandr dumps existing modes + +commit b9b2fbbf7a7dd156d1fdffac2e4a4046f58baabb +Author: Brice Goglin +Date: Thu Aug 9 19:04:58 2007 +0200 + + Add *current and +preferred to the --verbose output + +commit 200491c1fad5ea1a733dfbac799a2ebea0a2f23c +Author: Keith Packard +Date: Wed Jul 4 20:05:03 2007 -0700 + + Bump to 1.2.2 + +commit 9db36331a2acafbf2dab05f481ce16ab094fde52 +Author: Keith Packard +Date: Wed Jul 4 20:04:29 2007 -0700 + + Print out mode flags in --verbose mode + +commit 49058de9b743f5196f97fb13cd9a695087b1299c +Author: Keith Packard +Date: Wed Jul 4 19:41:32 2007 -0700 + + Mark 1.1 options as inconsistent with 1.2 options + +commit c58e79a9c4c3967fb31a49a610a37b5797426415 +Author: Keith Packard +Date: Thu Jun 21 15:57:37 2007 +0100 + + Document 1.2.1 options + +commit 0499ce5ed6378bc68cbf8eafc9932ddf495ae708 +Author: Keith Packard +Date: Sat Jun 30 14:00:30 2007 -0700 + + When simple CRTC allocation fails, search all available configs. + + When enabling an output, if there isn't an idle CRTC available, try to + reconfigure existing outputs to make things work. + +commit 0f2014e67193eb0f8e12ab1c3d5cae8991ba439d +Author: Keith Packard +Date: Sat Jun 30 13:09:45 2007 -0700 + + Clean up code structure a bit + +commit 63d385f2c24c522d974652da138a83d78014713e +Author: Alan Coopersmith +Date: Thu Jun 21 09:35:53 2007 -0700 + + Add *~ to .gitignore to skip emacs & patch droppings + +commit 4bd2f4004a6f75a7e4cb32b9e320e680f8839748 +Author: Alan Coopersmith +Date: Thu Jun 21 09:34:53 2007 -0700 + + Man page formatting and typo fixes + +commit b0812f8efe448c85979a9f5fab4a5a4e0c0e78d0 +Author: Keith Packard +Date: Thu Jun 21 11:37:56 2007 +0100 + + Update to version 1.2.1 + +commit 739f01957c8ebd3b7bcecfd7ad8174884561f7db +Author: Aaron Plattner +Date: Wed Apr 25 11:59:48 2007 -0700 + + Fix bugs found by compiling with -Wall. + + Also fix some unused variable warnings. + +commit 8e43df335679c71930465e4c58c0bd14d9add29a +Author: Aaron Plattner +Date: Wed Apr 25 10:52:19 2007 -0700 + + Fix a typo. Make mode flags case insensitive. Improve error messages. + +commit 49aab1e0e4cb2226d5bcc8e4e6217309fd23ce52 +Author: Keith Packard +Date: Fri Apr 6 03:36:27 2007 -0700 + + Skip relative positions for outputs without modes. + + An output without a mode is turned off; do not try to position it. + +commit 86d9b15cccc4d21ad5e5d34d7e7b82a50903939b +Author: Keith Packard +Date: Sun Mar 25 23:44:01 2007 -0700 + + Support XA_ATOM properties (like TV_FORMAT). + + Atom properties have lists of valid values that are all atoms, so display + those. Also, fetch property data and use that to determine which format new + property values are supposed to be in. + +commit dba14af8328eaaad716d1c27a5514df285d8d4cc +Author: Keith Packard +Date: Fri Mar 23 01:21:21 2007 -0700 + + Add --set option to set output properties. + + Numeric values are set as XA_INTEGER format 32 values, everything else is + set as an XA_STRING format 8 value. + +commit ca7a5bb5691ecd1d8da6def373c793aa7a07dbbe +Author: Keith Packard +Date: Thu Mar 15 20:57:17 2007 -0700 + + Bounds check -s argument to be 0 <= index < nsize + + Print a nice error message when the -s option is passed a number out of + bounds. + +commit 0cbbc7804781c2e55899ba9271365735c4a2b544 +Author: Keith Packard +Date: Thu Mar 15 20:56:15 2007 -0700 + + Make --q1 output RandR 1.1 query information. + + --q1 required a --query option to actually output any information. + +commit 7ae11b66cc26395d34070013e23813db3ca3e55f +Author: Keith Packard +Date: Thu Mar 15 20:55:30 2007 -0700 + + Make --auto after --output only affect the output. + + --auto has two meanings; if presented before any --output flags, it requests + that connected-but-disabled outputs be enable while disconnected-but-enabled + outputs be disabled. After --output, --auto simply asks that the mode used + for the output be automatically selected. Mixing these two operations is not + a good default. + +commit a53cc9b37c40dca936037a89013253f37c9a05ee +Author: Keith Packard +Date: Mon Mar 12 22:47:39 2007 -0700 + + Add --addmode and --delmode commands to edit list of modes per output. + + --addmode inserts into the list supported by + , while --delmode removes a mode. + +commit dca4bd66b166b64314993aba34a3080c6953ac12 +Author: Keith Packard +Date: Mon Feb 19 17:12:24 2007 -0800 + + Add --newmode/--rmmode to create/destroy user modes. + + The syntax may be a bit hard to work with, but these serve to test the + server infrastructure for custom modes. + +commit 9fd6aa1445a8f1e721ba8cdcd1ac12375d6e5a26 +Author: Tilman Sauerbeck +Date: Fri Mar 9 10:12:17 2007 +0100 + + Fixed alignment of the clones list. + +commit 3c44d68d78d8bddf69b5bd1a00f854d8cde971bb +Author: Keith Packard +Date: Wed Feb 21 11:24:35 2007 -0800 + + Add --same-as option to match output positions. + + This provides another positioning option that makes two outputs appear at + the same location. + +commit 8a0c3b748b0e94c97fbc2a7449c6740b8acfe394 +Author: Keith Packard +Date: Sun Feb 18 21:27:55 2007 -0800 + + Update version number to 1.2.0 for release. + +commit 13cef2baa884039e96f5dfd9245bb949aed99448 +Merge: 065f09c... a175972... +Author: Keith Packard +Date: Sun Feb 18 21:26:50 2007 -0800 + + Merge branch 'origin' + +commit 065f09cc304d0c70eaf3cf6f3ff21e712e41d205 +Author: Keith Packard +Date: Sun Feb 18 21:25:54 2007 -0800 + + Require only libXrandr 1.2.0, not 1.2.0.0. + + Four digits seems excessive in a library version number. + +commit a175972de6fbe5426fb5c6bee03112678f0a9548 +Author: Keith Packard +Date: Thu Feb 15 23:07:34 2007 -0800 + + Select crtc which can be cloned to outputs which will be in use. + + Correct crtc selection algorithm to choose a crtc which will be used by + outputs which can all share the same crtc. + + Also, make randr 1.0 commands work even when --verbose is specified, and + terminate event loop in that case when the screen change event is seen. + +commit d707822aab19a0a8fe08f03300fdd9d4e206871e +Author: Keith Packard +Date: Sat Feb 10 18:27:06 2007 -0800 + + Selecting a crtc by index was failing to match a crtc. + + --crtc would fail to match because of a logic bug using & instead of + &&. + +commit 89bf2c3c0e17c67adc3e2fdca54f0e8254dc8968 +Author: Keith Packard +Date: Sat Feb 10 16:14:58 2007 -0800 + + Display set of available CRTCs per output in --verbose mode. + +commit 067cafb5cda0aa6e34773e888fd469ff657760c2 +Merge: 7c25c24... b0a00df... +Author: Keith Packard +Date: Wed Jan 31 15:25:35 2007 -0800 + + Merge branch 'randr-1.2' + + Merge support for RandR 1.2 changes to the xrandr program along with + documentation for the new options. + +commit b0a00df69f832ada40be6bd6973835439a698440 +Author: Keith Packard +Date: Wed Jan 31 15:22:02 2007 -0800 + + Update documentation to include all RandR 1.2 options. + + Also, require libXrandr version 1.2.0.0 or better. + +commit 6b9310d66eed59527d4002294be13884a7cbeacc +Author: Keith Packard +Date: Tue Jan 30 20:35:58 2007 -0800 + + Missing return statement from output_rotation. + + output_rotation was returning garbage making the available output rotations + display incorrectly. + +commit 5c3b6b1013c7565c40e82bfc0514a3dd80aec2d8 +Author: Keith Packard +Date: Tue Jan 30 20:16:46 2007 -0800 + + Remove xrandr12.c app now that xrandr.c has RandR 1.2 support. + +commit eaf3e459d7760bbcb3c7f7c9b23b1e386189c71e +Author: Keith Packard +Date: Tue Jan 30 00:10:23 2007 -0800 + + Add --reflect option for RandR 1.2 reflection selection. + + Also, display available rotations after current rotation + +commit 8ecc6c034836a6fb6df0e2ad24429f506bf82e37 +Author: Eric Anholt +Date: Tue Jan 16 10:48:01 2007 -0800 + + Add display for 32-bit integer properties, such as backlight. + +commit 4112d13d7b15150e33687b687604c3a72188c066 +Author: Keith Packard +Date: Mon Jan 1 17:04:42 2007 -0800 + + Mode on CRTC may not be present for any output. + + When an output gets disconnected, the current CRTC mode may no longer be + listed as valid for any output, but will still be listed for the screen. + Search for current crtc mode in the screen list rather than the per-output + list. + +commit 6ef7b2deafd09ae1a4b159f3c2e6e9db64bf01dc +Author: Keith Packard +Date: Sun Dec 31 23:02:12 2006 -0800 + + Using %lf to read float overwrote adjacent variable. + + Just use floats everywhere and %f instead. + +commit f6073333dcfb6989ff8793854fb42e08388444c5 +Author: Keith Packard +Date: Sun Dec 31 13:55:14 2006 -0800 + + Add rotation/reflection status to 1.2 query output. + + The previous cleanup had left these values missing from any output. + Also it now reports the effective size of the mode within the screen. + +commit 5d2a76b70b7b59a45655b25db79d75cb08fe671d +Author: Keith Packard +Date: Sun Dec 31 13:38:40 2006 -0800 + + Clean up RandR 1.2 query output. + + Make brief mode list just mode names and refresh rates. + Add --prop/--properties flag to show properties. + Add --q1 flag to force showing pre-1.2 data. + +commit d9aeb4a7544ad4a33f6f54bc46bff5cdf231a986 +Author: Keith Packard +Date: Sun Dec 31 12:45:25 2006 -0800 + + Add --rate support to RandR 1.2 mode selection. + + Search for mode closest to specified rate for each output and use that + instead of the one with the first matching name. If no rate is specified, + the first one still matches allowing the driver to place preferred rates + first in the list. + +commit c04d69cbd8a8a96862356afcda6ee679d663a524 +Author: Keith Packard +Date: Sun Dec 31 11:58:11 2006 -0800 + + Grab server while applying changes. + + Applications that respond to screen size changes by quering Xinerama + information need to be blocked so that they see the entirety of the changes + rather than just the screen size shift and not the crtc changes. + +commit 8e78af971048db711163ea297153703b4f37f3c9 +Author: Keith Packard +Date: Sat Dec 30 21:49:40 2006 -0800 + + Enable global --auto flag. Allow output name for --dpi switch. + + --auto at the global level checks for output status changes and + automatically configures changed outputs. --dpi with an output switch uses + the specified output as the source of the dpi information. + +commit f7a3e478a6a5d59a2bbcd6dc416639f93a0520fd +Author: Keith Packard +Date: Sat Dec 30 19:41:48 2006 -0800 + + Use Bool type. Position relative to disabled output is 0,0. + + Switch uses of int that are strictly boolean to Bool. + Instead of making attempts to set position relative to a disabled output an + error, just place the output at 0,0. + +commit cb017692883daf64e0cf442a39b33eaafed0e420 +Author: Keith Packard +Date: Sat Dec 30 17:34:46 2006 -0800 + + Restructure RandR 1.2 support to handle relative placement. + + Ok, really, this is mostly a rewrite of the RandR 1.2 support. First, + collect commands from command line arguments. Next, fill in existing + configuration from X server. Calculate new configuration. Apply + configuration, if anything fails, revert to previous configuration. + + Still left -- pure --auto, and --extend/--clone options. + +commit b9dee113ce4105c1cf25e3c417c616c024aea823 +Author: Keith Packard +Date: Fri Dec 29 00:55:37 2006 -0800 + + Make query return 1.2 information if available + +commit 90e4a4c13957bd003294f64b86460813dd38a3de +Author: Keith Packard +Date: Thu Dec 21 17:37:20 2006 -0800 + + Accept hex mode numbers as well as mode names. + + Sometimes mode names are ambiguous; this lets the user specify modes by XID. + +commit e8f7047885ec85096a3f35b9cfb20386104fdc55 +Author: Keith Packard +Date: Tue Dec 19 16:27:46 2006 -0800 + + Actually respect the --fb option + +commit 7b32611632ab08b6a123db5df1c2b919b3a12104 +Merge: a0df3aa... 4bb1a9c... +Author: Keith Packard +Date: Tue Dec 19 15:58:38 2006 -0800 + + Merge branch 'randr-1.2-origin' into randr-1.2 + +commit a0df3aa81205b35ff8d9541c036cfd158cbd99ed +Author: Keith Packard +Date: Tue Dec 19 15:58:21 2006 -0800 + + Correct format for sscanf to double variable "dpi" + +commit 4bb1a9cd6f9cc3ed61d7913528afa3f573092833 +Merge: b6c0382... 6ef400f... +Author: Keith Packard +Date: Wed Dec 13 11:36:36 2006 -0800 + + Merge branch 'randr-1.2-origin' into randr-1.2. Detect invalid mode. + + Invalid mode test was checking wrong mode index. Also, print more + informative error message when this occurs. + +commit b6c03827bae74ef5b9517c4246b0165dad8ee780 +Author: Keith Packard +Date: Wed Dec 13 11:27:30 2006 -0800 + + Name CRTCs by index or id. Use current CRTC to get current mode. + + CRTCs have no intrinsic name, so let users provide either the number in the + list or the XID when referring to them explicitly. + When no mode is specified, look up the current CRTC for the output and use + that mode, instead of using the mode on the target CRTC. + When switching an output from one CRTC + +commit 6ef400f35d7d8712d1ad1efd87a8a3cb8bfacd96 +Author: Keith Packard +Date: Wed Dec 13 09:53:17 2006 -0800 + + Add --preferred and --auto support. + + --preferred selects the 'best' mode for the monitor automatically, either by + looking for a preferred mode, or selecting one which is closest to the + current screen DPI. + + --auto checks connected status and disables the output if disconnected, + otherwise it enables it with the preferred mode (as if --preferred). + +commit c69c3080febd8617349f88557c3c04388a13a76c +Author: Keith Packard +Date: Tue Dec 12 09:54:52 2006 -0800 + + mark disabled crtc as changing, set rotation to 90 for disabled crtc. + + --off code was not correctly finding and marking the to-be-disabled crtc, + and the disabling code was sending an uninitialized rotation value to the + server when no outputs were connected. + +commit 6be56cd10d934e496004f9ffd377225fd179f4b1 +Author: Keith Packard +Date: Mon Dec 11 00:39:48 2006 -0800 + + Update manual, elide unsupported options from usage, remove xrandr12 from build + +commit 624c75e8c250b33a81890c8f0da741a13ad4e7d1 +Author: Keith Packard +Date: Mon Dec 11 00:23:15 2006 -0800 + + Add RandR 1.2 support to plain xrandr app. primitive for now + +commit 7c25c245bceb0474541fe7a2615a4f665842ac32 +Author: Jeremy C. Reed +Date: Sat Dec 9 06:32:19 2006 -0600 + + Document -v switch. + +commit 2a32fa8cf8550a3a30871d25a23af07f65646c47 +Author: Keith Packard +Date: Tue Nov 21 01:17:38 2006 -0800 + + Track RandR output property changes + +commit 795173d2b9b94a3468db277102b4898b4e5a1ead +Author: Keith Packard +Date: Thu Nov 16 22:14:33 2006 -0800 + + properties are stored in unsigned char arrays + +commit 2df4352bb43e155977f8d4c0b53771cb0085ab74 +Author: Keith Packard +Date: Thu Nov 16 11:45:51 2006 -0800 + + Remove RandR output options. + + Output options are to be replaced with properties. + +commit 643787365fd716b902b597b67b2ec228dacfc862 +Author: Keith Packard +Date: Wed Nov 1 10:57:24 2006 -0800 + + Re-indent to 4 space tabs + +commit 947ea6ee9d7cf72c5635c699b63ddda3be968675 +Author: Keith Packard +Date: Wed Nov 1 10:55:21 2006 -0800 + + Fix copyright and license information + +commit dc41095b577db571439ff1a52facc4efe9f5132f +Author: Eric Anholt +Date: Thu Nov 9 20:26:09 2006 -0800 + + Print 8-bit integer output properties as 32-char rows of hex. + + This happens to produce pretty output for EDID data. + +commit 67466ebb817e24bfd7f57cc82da16e194eb9c547 +Author: Eric Anholt +Date: Thu Nov 9 17:15:56 2006 -0800 + + Add more .gitignore entries. + +commit aafe9f7d24e96194a7ee11ba521a3c2c72dcdc95 +Author: Eric Anholt +Date: Thu Nov 9 17:15:06 2006 -0800 + + Add output for output properties (assuming text) and blanking information. + +commit 6ba07ae9ea5fa2829d17e8a1f3eb26e7c1a2813e +Author: Eric Anholt +Date: Wed Nov 8 10:23:47 2006 -0800 + + Add dot clock to output. + +commit fba78f58029a806e4446d038b17b843d2c4026a6 +Author: Keith Packard +Date: Wed Nov 1 00:32:22 2006 -0800 + + Track protocol moving physical size from mode to output + +commit d9c45204a16e906b922ac94cae3c9f4f25b3ccdb +Author: Keith Packard +Date: Thu Oct 26 22:58:58 2006 -0700 + + add physical size setting + +commit bd6ac82ff7e7fc04ab589a3053dc7f13ed7a1ec4 +Author: Keith Packard +Date: Thu Oct 5 21:50:42 2006 -0700 + + Add crtc info. Mark preferred. Update to new SetCrtcConfig API. + +commit fe04d38d01f54b93ddaf1cd48a655df7f7fe4b97 +Author: Keith Packard +Date: Thu Sep 21 08:16:45 2006 -0700 + + Add CRTC disable code (given crtc, output 0, mode 0) + +commit 7f1b81d443b78ff572726ad7d72eeb4a87c7189d +Author: Keith Packard +Date: Wed Sep 20 20:03:22 2006 -0700 + + xrandr12, a horrible kludge, is now sufficient to do dynamic mergefb games. + +commit eba1d3d8ab6226737c29e63fdd5433190baab06f +Author: Keith Packard +Date: Wed Sep 20 20:02:43 2006 -0700 + + .cvsignore -> .gitignore + +commit 6c5af262350a5fa33aa37293e8e7b537e344f52a +Author: Keith Packard +Date: Wed Sep 20 20:02:09 2006 -0700 + + .cvsignore -> .gitignore + +commit d8e86340444577dc7634d3e0db24fd809f4e4fbb +Author: Keith Packard +Date: Tue Sep 19 00:35:46 2006 -0700 + + Add new xrandr12 program for RandR 1.2 protocol. + + Yes, xrandr12 will be merged with xrandr before release; it's just for + debugging at present. + +commit f88f8e79724b27f46a836fac4956cbe28749633a +Author: Adam Jackson +Date: Wed Apr 26 23:43:34 2006 +0000 + + Bump to 1.0.2 + +commit 47c6288e63ebe7a9bb2f3225e7d5a235bd979a5f +Author: Alan Coopersmith +Date: Tue Apr 25 22:54:01 2006 +0000 + + Don't try to fprintf a NULL string when -display wasn't passed and + connecting to $DISPLAY failed, since that segfaults on some platforms. + +commit 0197bfdddca98c72bca0eeee349b90027638fc32 +Author: Adam Jackson +Date: Mon Mar 20 18:56:37 2006 +0000 + + Bug #5511, #5512: Print more sensible error messages when fed broken + command lines. (Bill Crawford) + +commit 4f785cb5db6d95c9f539500e7b202a0f5addd19f +Author: Kevin E Martin +Date: Wed Dec 21 02:29:53 2005 +0000 + + Update package version for X11R7 release. + +commit 83491d233781c9e6a362aa8bac1ab4f2a239fdee +Author: Adam Jackson +Date: Mon Dec 19 16:22:46 2005 +0000 + + Stub COPYING files + +commit 5d09a0b505a2c08b81879e61173459d23f4c41db +Author: Kevin E Martin +Date: Thu Dec 15 00:24:10 2005 +0000 + + Update package version number for final X11R7 release candidate. + +commit 3e0eb5b6f68ef9120153e7f01b4243ad4fa44254 +Author: Kevin E Martin +Date: Tue Dec 6 22:48:25 2005 +0000 + + Change *man_SOURCES ==> *man_PRE to fix autotools warnings. + +commit d52f178dc51182e14d5d7ad9f2842f3e1d30a57f +Author: Kevin E Martin +Date: Sat Dec 3 05:49:27 2005 +0000 + + Update package version number for X11R7 RC3 release. + +commit f3b3596d181a7ab89b90561490f822171ec77479 +Author: Alan Coopersmith +Date: Mon Nov 28 22:01:46 2005 +0000 + + Change *mandir targets to use new *_MAN_DIR variables set by xorg-macros.m4 + update to fix bug #5167 (Linux prefers *.1x man pages in man1 subdir) + +commit 28c2280644f808c89e42e379b531fbb0fdf39bc7 +Author: Eric Anholt +Date: Mon Nov 21 10:35:07 2005 +0000 + + Another pass at .cvsignores for apps. + +commit e5ab923625baf41a59e033abf3527709c8ef255b +Author: Eric Anholt +Date: Sun Nov 20 22:08:55 2005 +0000 + + Add/improve .cvsignore files for apps. + +commit 7e1cf1fef9dd000569dd5390380fb567314644a5 +Author: Kevin E Martin +Date: Sat Nov 19 07:15:38 2005 +0000 + + Update pkgconfig files to separate library build-time dependencies from + application build-time dependencies, and update package deps to work + with separate build roots. + +commit 89ab28833d4e2ff412a92bb2b47af2d78a109c00 +Author: Kevin E Martin +Date: Wed Oct 19 02:47:57 2005 +0000 + + Update package version number for RC1 release. + +commit 60178bb0c8bc97055c9aee7986866ada615491e6 +Author: Alan Coopersmith +Date: Mon Oct 17 23:56:24 2005 +0000 + + Use @APP_MAN_SUFFIX@ instead of $(APP_MAN_SUFFIX) in macro substitutions to + work better with BSD make + +commit 958b347b1e5e427858d3e693e5487ec7ba4f5054 +Author: Alan Coopersmith +Date: Fri Oct 14 00:25:47 2005 +0000 + + Use sed to fill in variables in man page + +commit 35e7414c6e4505b2e71be0e54ed0c7ff74f39db1 +Author: Aaron Plattner +Date: Thu Oct 6 10:03:08 2005 +0000 + + Tell the user when setting the screen configuration fails. Return nonzero + so scripts can find out too. + +commit 938ff7de3f2bc4979bbf8a5f68190cde2be12696 +Author: Kevin E Martin +Date: Fri Jul 29 21:22:37 2005 +0000 + + Various changes preparing packages for RC0: + - Verify and update package version numbers as needed + - Implement versioning scheme + - Change bug address to point to bugzilla bug entry form + - Disable loadable i18n in libX11 by default (use --enable-loadable-i18n to + reenable it) + - Fix makedepend to use pkgconfig and pass distcheck + - Update build script to build macros first + - Update modular Xorg version + +commit f241e34fd0f3bedf5aa615dc8e17352b91de8cd9 +Author: Daniel Stone +Date: Fri Jul 22 07:18:28 2005 +0000 + + Fix path to man pages. + +commit f87ac740a20ec3e8b452959081816f5fddeaaf87 +Author: Adam Jackson +Date: Wed Jul 20 19:32:03 2005 +0000 + + Use a unique token for PKG_CHECK_MODULES. Otherwise, if you use a global + configure cache, you cache it, and the cached value is probably wrong. + +commit 5666f22654447eb381186a85a8e1630d419b0a88 +Author: Søren Sandmann Pedersen +Date: Fri Jul 1 20:27:45 2005 +0000 + + Build systems for xrdb, xrandr, xrefresh + +commit 39a8c733612722dca456c315a5ad299da1fe29d6 +Author: Markus Kuhn +Date: Sat Dec 4 00:43:18 2004 +0000 + + Encoding of numerous files changed to UTF-8 + +commit df8c56f1f66cce27dd018248a30cd9465d2b545c +Author: Egbert Eich +Date: Fri Apr 23 19:55:03 2004 +0000 + + Merging XORG-CURRENT into trunk + +commit 791685e93f32489dcd2d02a77e1a79ffb6c97c17 +Author: Egbert Eich +Date: Sun Mar 14 08:35:42 2004 +0000 + + Importing vendor version xf86-4_4_99_1 on Sun Mar 14 00:26:39 PST 2004 + +commit 342e5f4d491f137e3930213e62192de3eece3155 +Author: Egbert Eich +Date: Wed Mar 3 12:13:15 2004 +0000 + + Importing vendor version xf86-4_4_0 on Wed Mar 3 04:09:24 PST 2004 + +commit e3c0383c8fdcf38d34b3fad607949b0693184ca7 +Author: Egbert Eich +Date: Thu Feb 26 13:36:26 2004 +0000 + + readding XFree86's cvs IDs + +commit 633350fa648d2b57b3dd94cb1d220a0b826bef55 +Author: Egbert Eich +Date: Thu Feb 26 09:24:14 2004 +0000 + + Importing vendor version xf86-4_3_99_903 on Wed Feb 26 01:21:00 PST 2004 + +commit 22c66075090a14ad022ae73a080e76a5ace7c5d1 +Author: Kaleb Keithley +Date: Tue Nov 25 19:29:15 2003 +0000 + + XFree86 4.3.99.16 Bring the tree up to date for the Cygwin folks + +commit 05fa20267de7cdf44fb6de556910ed0e4ce665a5 +Author: Kaleb Keithley +Date: Fri Nov 14 16:49:23 2003 +0000 + + XFree86 4.3.0.1 + +commit c973a27b6d07b8711041c0c22ba8568f168b447a +Author: Kaleb Keithley +Date: Fri Nov 14 16:49:23 2003 +0000 + + Initial revision diff --git a/app/xrandr/Makefile.am b/app/xrandr/Makefile.am index 26c83b8c0..5772a0295 100644 --- a/app/xrandr/Makefile.am +++ b/app/xrandr/Makefile.am @@ -34,8 +34,9 @@ appmandir = $(APP_MAN_DIR) appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@) -EXTRA_DIST = $(appman_PRE) +EXTRA_DIST = $(appman_PRE) ChangeLog autogen.sh xrandr_test.pl CLEANFILES = $(appman_DATA) +MAINTAINERCLEANFILES = ChangeLog SED = sed @@ -60,3 +61,12 @@ SUFFIXES = .$(APP_MAN_SUFFIX) .man .man.$(APP_MAN_SUFFIX): sed $(MAN_SUBSTS) < $< > $@ + +.PHONY: ChangeLog + +ChangeLog: + (GIT_DIR=$(top_srcdir)/.git git-log > .changelog.tmp && mv .changelog.tmp ChangeLog; rm -f .changelog.tmp) || \ + (touch ChangeLog; echo 'git directory not found: installing possibly empty changelog.' >&2) + +dist-hook: ChangeLog + diff --git a/app/xrandr/Makefile.in b/app/xrandr/Makefile.in index 903883f13..3f08b6a30 100644 --- a/app/xrandr/Makefile.in +++ b/app/xrandr/Makefile.in @@ -216,8 +216,9 @@ appman_PRE = \ appmandir = $(APP_MAN_DIR) appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@) -EXTRA_DIST = $(appman_PRE) +EXTRA_DIST = $(appman_PRE) ChangeLog autogen.sh xrandr_test.pl CLEANFILES = $(appman_DATA) +MAINTAINERCLEANFILES = ChangeLog SED = sed # Strings to replace in man pages @@ -436,6 +437,9 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ @@ -565,6 +569,7 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am @@ -620,8 +625,8 @@ uninstall-am: uninstall-appmanDATA uninstall-binPROGRAMS \ .PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \ clean-binPROGRAMS clean-generic ctags dist dist-all dist-bzip2 \ - dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \ - distclean-compile distclean-generic distclean-hdr \ + dist-gzip dist-hook dist-shar dist-tarZ dist-zip distcheck \ + distclean distclean-compile distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-appmanDATA install-binPROGRAMS install-data \ @@ -636,6 +641,14 @@ uninstall-am: uninstall-appmanDATA uninstall-binPROGRAMS \ .man.$(APP_MAN_SUFFIX): sed $(MAN_SUBSTS) < $< > $@ + +.PHONY: ChangeLog + +ChangeLog: + (GIT_DIR=$(top_srcdir)/.git git-log > .changelog.tmp && mv .changelog.tmp ChangeLog; rm -f .changelog.tmp) || \ + (touch ChangeLog; echo 'git directory not found: installing possibly empty changelog.' >&2) + +dist-hook: ChangeLog # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/app/xrandr/aclocal.m4 b/app/xrandr/aclocal.m4 index 5419cfb3c..48f9f8de2 100644 --- a/app/xrandr/aclocal.m4 +++ b/app/xrandr/aclocal.m4 @@ -1042,7 +1042,7 @@ AC_DEFUN([XORG_MACROS_VERSION],[ XORG_MACROS_needed_major=`echo $XORG_MACROS_needed_version | sed 's/\..*$//'` XORG_MACROS_needed_minor=`echo $XORG_MACROS_needed_version | sed -e 's/^[0-9]*\.//' -e 's/\..*$//'`] AC_MSG_CHECKING([if xorg-macros used to generate configure is at least ${XORG_MACROS_needed_major}.${XORG_MACROS_needed_minor}]) - [XORG_MACROS_version=1.1.5 + [XORG_MACROS_version=1.1.6 XORG_MACROS_major=`echo $XORG_MACROS_version | sed 's/\..*$//'` XORG_MACROS_minor=`echo $XORG_MACROS_version | sed -e 's/^[0-9]*\.//' -e 's/\..*$//'`] if test $XORG_MACROS_major -ne $XORG_MACROS_needed_major ; then @@ -1191,7 +1191,11 @@ AC_DEFUN([XORG_CHECK_LINUXDOC],[ XORG_SGML_PATH=$prefix/share/sgml HAVE_DEFS_ENT= -AC_CHECK_FILE([$XORG_SGML_PATH/X11/defs.ent], [HAVE_DEFS_ENT=yes]) +if test x"$cross_compiling" = x"yes" ; then + HAVE_DEFS_ENT=no +else + AC_CHECK_FILE([$XORG_SGML_PATH/X11/defs.ent], [HAVE_DEFS_ENT=yes]) +fi AC_PATH_PROG(LINUXDOC, linuxdoc) AC_PATH_PROG(PS2PDF, ps2pdf) @@ -1463,14 +1467,14 @@ AC_DEFUN([XORG_RELEASE_VERSION],[ AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MAJOR], [`echo $PACKAGE_VERSION | cut -d . -f 1`], [Major version of this package]) - PVM=`echo $PACKAGE_VERSION | cut -d . -f 2` + PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1` if test "x$PVM" = "x"; then PVM="0" fi AC_DEFINE_UNQUOTED([PACKAGE_VERSION_MINOR], [$PVM], [Minor version of this package]) - PVP=`echo $PACKAGE_VERSION | cut -d . -f 3` + PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1` if test "x$PVP" = "x"; then PVP="0" fi diff --git a/app/xrandr/configure b/app/xrandr/configure index e0565292b..6627ff3e5 100644 --- a/app/xrandr/configure +++ b/app/xrandr/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for xrandr 1.2.2. +# Generated by GNU Autoconf 2.59 for xrandr 1.2.3. # # Report bugs to . # @@ -269,8 +269,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='xrandr' PACKAGE_TARNAME='xrandr' -PACKAGE_VERSION='1.2.2' -PACKAGE_STRING='xrandr 1.2.2' +PACKAGE_VERSION='1.2.3' +PACKAGE_STRING='xrandr 1.2.3' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg' ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE PKG_CONFIG ac_pt_PKG_CONFIG XRANDR_CFLAGS XRANDR_LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os APP_MAN_SUFFIX LIB_MAN_SUFFIX FILE_MAN_SUFFIX MISC_MAN_SUFFIX DRIVER_MAN_SUFFIX ADMIN_MAN_SUFFIX APP_MAN_DIR LIB_MAN_DIR FILE_MAN_DIR MISC_MAN_DIR DRIVER_MAN_DIR ADMIN_MAN_DIR LIBOBJS LTLIBOBJS' @@ -750,7 +750,7 @@ if test "$ac_init_help" = "long"; then # 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 xrandr 1.2.2 to adapt to many kinds of systems. +\`configure' configures xrandr 1.2.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -816,7 +816,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xrandr 1.2.2:";; + short | recursive ) echo "Configuration of xrandr 1.2.3:";; esac cat <<\_ACEOF @@ -945,7 +945,7 @@ fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -xrandr configure 1.2.2 +xrandr configure 1.2.3 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. @@ -959,7 +959,7 @@ cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by xrandr $as_me 1.2.2, which was +It was created by xrandr $as_me 1.2.3, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ @@ -1557,7 +1557,7 @@ fi # Define the identity of the package. PACKAGE='xrandr' - VERSION='1.2.2' + VERSION='1.2.3' cat >>confdefs.h <<_ACEOF @@ -3264,7 +3264,7 @@ cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION_MAJOR `echo $PACKAGE_VERSION | cut -d . -f 1` _ACEOF - PVM=`echo $PACKAGE_VERSION | cut -d . -f 2` + PVM=`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1` if test "x$PVM" = "x"; then PVM="0" fi @@ -3273,7 +3273,7 @@ cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION_MINOR $PVM _ACEOF - PVP=`echo $PACKAGE_VERSION | cut -d . -f 3` + PVP=`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1` if test "x$PVP" = "x"; then PVP="0" fi @@ -3668,7 +3668,7 @@ _ASBOX } >&5 cat >&5 <<_CSEOF -This file was extended by xrandr $as_me 1.2.2, which was +This file was extended by xrandr $as_me 1.2.3, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3731,7 +3731,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -xrandr config.status 1.2.2 +xrandr config.status 1.2.3 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" diff --git a/app/xrandr/configure.ac b/app/xrandr/configure.ac index 965e270c7..126a51b63 100644 --- a/app/xrandr/configure.ac +++ b/app/xrandr/configure.ac @@ -1,4 +1,3 @@ - dnl Copyright 2005 Red Hat, Inc. dnl dnl Permission to use, copy, modify, distribute, and sell this software and its @@ -22,7 +21,7 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ([2.57]) -AC_INIT(xrandr,[1.2.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],xrandr) +AC_INIT(xrandr,[1.2.3], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],xrandr) AM_INIT_AUTOMAKE([dist-bzip2]) AM_MAINTAINER_MODE diff --git a/app/xrandr/xrandr.c b/app/xrandr/xrandr.c index c3bc6dce0..e2a657f65 100644 --- a/app/xrandr/xrandr.c +++ b/app/xrandr/xrandr.c @@ -1284,6 +1284,20 @@ check_crtc_for_output (crtc_t *crtc, output_t *output) if (crtc->rotation != output->rotation) return False; } + else if (crtc->crtc_info->noutput) + { + /* make sure the state matches the already used state */ + XRRModeInfo *mode = find_mode_by_xid (crtc->crtc_info->mode); + + if (mode != output->mode_info) + return False; + if (crtc->crtc_info->x != output->x) + return False; + if (crtc->crtc_info->y != output->y) + return False; + if (crtc->crtc_info->rotation != output->rotation) + return False; + } return True; } @@ -1520,14 +1534,13 @@ pick_crtcs_score (output_t *outputs) best_score = score; } } + if (output->crtc_info != best_crtc) + output->crtc_info = best_crtc; /* * Reset other outputs based on this one using the best crtc */ - if (output->crtc_info != best_crtc) - { - output->crtc_info = best_crtc; - (void) pick_crtcs_score (outputs); - } + (void) pick_crtcs_score (outputs); + return best_score; } @@ -1544,11 +1557,18 @@ pick_crtcs (void) */ for (output = outputs; output; output = output->next) { - if (output->changes && output->mode_info && !output->crtc_info) + if (output->changes && output->mode_info) { - output->crtc_info = find_crtc_for_output (output); - if (!output->crtc_info) - break; + if (output->crtc_info) { + if (output->crtc_info->crtc_info->noutput > 0 && + (output->crtc_info->crtc_info->noutput > 1 || + output != find_output_by_xid (output->crtc_info->crtc_info->outputs[0]))) + break; + } else { + output->crtc_info = find_crtc_for_output (output); + if (!output->crtc_info) + break; + } } } /* @@ -1712,9 +1732,12 @@ main (int argc, char **argv) } if (!strcmp ("--output", argv[i])) { if (++i >= argc) usage(); - output = add_output (); - set_name (&output->output, argv[i], name_string|name_xid); + output = find_output_by_name (argv[i]); + if (!output) { + output = add_output (); + set_name (&output->output, argv[i], name_string|name_xid); + } setit_1_2 = True; continue; @@ -2404,6 +2427,10 @@ main (int argc, char **argv) for (f = 0; mode_flags[f].flag; f++) if (mode->modeFlags & mode_flags[f].flag) printf (" %s", mode_flags[f].string); + if (mode == output->mode_info) + printf (" *current"); + if (j < output_info->npreferred) + printf (" +preferred"); printf ("\n"); printf (" h: width %4d start %4d end %4d total %4d skew %4d clock %6.1fKHz\n", mode->width, mode->hSyncStart, mode->hSyncEnd, diff --git a/app/xrandr/xrandr.man b/app/xrandr/xrandr.man index 3780dd881..c6bbd4203 100644 --- a/app/xrandr/xrandr.man +++ b/app/xrandr/xrandr.man @@ -70,8 +70,15 @@ xrandr \- primitive command line interface to RandR extension .I Xrandr is used to set the size, orientation and/or reflection of the outputs for a screen. It can also set the screen size. -There are a few global options; the rest modify a particular output and -follow the specification of that output on the command line. + +If invoked without any option, it will dump the state of the outputs, +showing the existing modes for each of them, with a '+' after the preferred +mode and a '*' after the current mode. + +There are a few global options. Other options modify the last output that is +specified in earlier parameters in the command line. Multiple outputs may +be modified at the same time by passing mutiple \-\-output options followed +immediately by their corresponding modifying options. .IP \-\-help Print out a summary of the usage and exit. .IP \-v diff --git a/app/xrandr/xrandr_test.pl b/app/xrandr/xrandr_test.pl new file mode 100644 index 000000000..fcdf1ce13 --- /dev/null +++ b/app/xrandr/xrandr_test.pl @@ -0,0 +1,329 @@ +#!/usr/bin/perl + +# +# xrandr Test suite +# +# Do a set of xrandr calls and verify that the screen setup is as expected +# after each call. +# + +$xrandr="xrandr"; +$xrandr=$ENV{XRANDR} if defined $ENV{XRANDR}; +$version="0.1"; +$inbetween=""; +print "\n***** xrandr test suite V$version *****\n\n"; + +# Known issues and their fixes +%fixes=( + s2 => "xrandr: 307f3686", + s4 => "xserver: f7dd0c72", + s11 => "xrandr: f7aaf894", + s18 => "issue known, but not fixed yet" +); + +# Get output configuration +@outputs=(); +%mode_name=(); +%out_modes=(); +%modes=(); +open P, "$xrandr --verbose|" or die "$xrandr"; +while (

) { + if (/^\S/) { + $o=""; $m=""; $x=""; + } + if (/^(\S+)\s(connected|unknown connection)\s/) { + $o=$1; + push @outputs, $o if $2 eq "connected"; + push @outputs_unknown, $o if $2 eq "unknown connection"; + $out_modes{$o}=[]; + } elsif (/^\s+(\d+x\d+)\s+\((0x[0-9a-f]+)\)/) { + my $m=$1; + my $x=$2; + while (

) { + if (/^\s+(\d+x\d+)\s+\((0x[0-9a-f]+)\)/) { + print "WARNING: Ignoring incomplete mode $x:$m on $o\n"; + $m=$1, $x=$2; + } elsif (/^\s+v:.*?([0-9.]+)Hz\s*$/) { + if (defined $mode_name{$x} && $mode_name{$x} ne "$m\@$1") { + print "WARNING: Ignoring mode $x:$m\@$1 because $x:$mode_name{$x} already exists\n"; + last; + } + if (defined $modes{"$o:$x"}) { + print "WARNING: Ignoring duplicate mode $x on $o\n"; + last; + } + $mode_name{$x}="$m\@$1"; + push @{$out_modes{$o}}, $x; + $modes{"$o:$x"}=$x; + $modes{"$o:$m\@$1"}=$x; + $modes{"$o:$m"}=$x; + last; + } + } + } +} +close P; +@outputs=(@outputs,@outputs_unknown) if @outputs < 2; + +# preamble +if ($ARGV[0] eq "-w") { + print "Waiting for keypress after each test for manual verification.\n\n"; + $inbetween='print " Press to continue...\n"; $_='; +} elsif ($ARGV[0] ne "") { + print "Preparing for test # $ARGV[0]\n\n"; + $prepare = $ARGV[0]; +} + +print "Detected connected outputs and available modes:\n\n"; +for $o (@outputs) { + print "$o:"; + my $i=0; + for $x (@{$out_modes{$o}}) { + print "\n" if $i++ % 3 == 0; + print " $x:$mode_name{$x}"; + } + print "\n"; +} +print "\n"; + +if (@outputs < 2) { + print "Found less than two connected outputs. No tests available for that.\n"; + exit 1; +} +if (@outputs > 2) { + print "Note: No tests for more than two connected outputs available yet.\n"; + print "Using the first two outputs.\n\n"; +} + +$a=$outputs[0]; +$b=$outputs[1]; + +# For each resolution only a single refresh rate should be used in order to +# reduce ambiguities. For that we need to find unused modes. The %used hash is +# used to track used ones. All references point to . +# : +# :x@ +# :x +# +# x@ +# x +%used=(); + +# Find biggest common mode +undef $sab; +for my $x (@{$out_modes{$a}}) { + if (defined $modes{"$b:$x"}) { + $m=$mode_name{$x}; + $sab="$x:$m"; + $m =~ m/(\d+x\d+)\@([0-9.]+)/; + $used{$x} = $x; + $used{$1} = $x; + $used{"$a:$x"} = $x; + $used{"$b:$x"} = $x; + $used{"$a:$m"} = $mode_name{$x}; + $used{"$b:$m"} = $mode_name{$x}; + $used{"$a:$1"} = $x; + $used{"$b:$1"} = $x; + last; + } +} +if (! defined $sab) { + print "Cannot find common mode between $a and $b.\n"; + print "Test suite is designed to need a common mode.\n"; + exit 1; +} + +# Find sets of additional non-common modes +# Try to get non-overlapping resolution set, but if that fails get overlapping +# ones but with different refresh values, if that fails any with nonequal +# timings, and if that fails any one, but warn. +# Try modes unknown to other outputs first, they might need common ones +# themselves. +sub get_mode { + my $o=$_[0]; + for my $pass (1, 2, 3, 4, 5, 6, 7, 8, 9) { + CONT: for my $x (@{$out_modes{$o}}) { + $m = $mode_name{$x}; + $m =~ m/(\d+x\d+)\@([0-9.]+)/; + next CONT if defined $used{"$o:$x"}; + next CONT if $pass < 9 && defined $used{"$o:$m"}; + next CONT if $pass < 7 && defined $used{"$o:$1"}; + next CONT if $pass < 6 && defined $used{$m}; + next CONT if $pass < 4 && defined $used{$1}; + for my $other (@outputs) { + next if $other eq $o; + next CONT if $pass < 8 && defined $used{"$o:$x"}; + next CONT if $pass < 5 && $used{"$other:$1"}; + next CONT if $pass < 3 && $modes{"$other:$m"}; + next CONT if $pass < 2 && $modes{"$other:$1"}; + } + if ($pass >= 6) { + print "Warning: No more non-common modes, using $m for $o\n"; + } + $used{"$o:$x"} = $x; + $used{"$o:$m"} = $x; + $used{"$o:$1"} = $x; + $used{$x} = $x; + $used{$m} = $x; + $used{$1} = $x; + return "$x:$m"; + } + } + print "Warning: Cannot find any more modes for $o.\n"; + return undef; +} +sub mode_to_randr { + $_[0] =~ m/^(0x[0-9a-f]+):(\d+)x(\d+)\@([0-9.]+)/; + return "--mode $1"; +} + +$sa1=get_mode($a); +$sa2=get_mode($a); +$sb1=get_mode($b); +$sb2=get_mode($b); + +$mab=mode_to_randr($sab); +$ma1=mode_to_randr($sa1); +$ma2=mode_to_randr($sa2); +$mb1=mode_to_randr($sb1); +$mb2=mode_to_randr($sb2); + +# Shortcuts +$oa="--output $a"; +$ob="--output $b"; + +# Print config +print "A: $a (mab,ma1,ma2)\nB: $b (mab,mb1,mb2)\n\n"; +print "mab: $sab\nma1: $sa1\nma2: $sa2\nmb1: $sb1\nmb2: $sb2\n\n"; +print "Initial config:\n"; +system "$xrandr"; +print "\n"; + +# Test subroutine +sub t { + my $name=$_[0]; + my $expect=$_[1]; + my $args=$_[2]; + print "*** $name: $args\n"; + print "? $expect\n" if $expect ne ""; + if ($name eq $prepare) { + print "-> Prepared to run test\n\nRun test now with\n$xrandr --verbose $args\n\n"; + exit 0; + } + my %r = (); + my $r = ""; + my $out = ""; + if (system ("$xrandr --verbose $args") == 0) { + # Determine active configuration + open P, "$xrandr --verbose|" or die "$xrandr"; + my ($o, $c, $m, $x); + while (

) { + $out.=$_; + if (/^\S/) { + $o=""; $c=""; $m=""; $x=""; + } + if (/^(\S+)\s(connected|unknown connection) (\d+x\d+)\+\d+\+\d+\s+\((0x[0-9a-f]+)\)/) { + $o=$1; + $m=$3; + $x=$4; + $o="A" if $o eq $a; + $o="B" if $o eq $b; + } elsif (/^\s*CRTC:\s*(\d)/) { + $c=$1; + } elsif (/^\s+$m\s+\($x\)/) { + while (

) { + $out.=$_; + if (/^\s+\d+x\d+\s/) { + $r{$o}="$x:$m\@?($c)" unless defined $r{$o}; + # we don't have to reparse this - something is wrong anyway, + # and it probably is no relevant resolution as well + last; + } elsif (/^\s+v:.*?([0-9.]+)Hz\s*$/) { + $r{$o}="$x:$m\@$1($c)"; + last; + } + } + } + } + for $o (sort keys %r) { + $r .= " $o: $r{$o}"; + } + close P; + } else { + $expect="success" if $expect=""; + $r="failed"; + } + # Verify + if ($expect ne "") { + print "->$r\n"; + if ($r eq " $expect") { + print "-> ok\n\n"; + } else { + print "\n$out"; + print "\n-> FAILED: Test # $name:\n\n"; + print " $xrandr --verbose $args\n\n"; + if ($fixes{$name}) { + print "\nThere are known issues with some packages regarding this test.\n"; + print "Please verify that you have at least the following git versions\n"; + print "before reporting a bug to xorg-devel:\n\n"; + print " $fixes{$name}\n\n"; + } + exit 1; + } + eval $inbetween; + } else { + print "-> ignored\n\n"; + } +} + + +# Test cases +# +# The tests are carefully designed to test certain transitions between +# RandR states that can only be reached by certain calling sequences. +# So be careful with altering them. For additional tests, better add them +# to the end of already existing tests of one part. + +# Part 1: Single output switching tests (except for trivial explicit --crtc) +t ("p", "", "$oa --off $ob --off"); +t ("s1", "A: $sa1(0)", "$oa $ma1 --crtc 0"); +t ("s2", "A: $sa1(0) B: $sab(1)", "$ob $mab"); +# TODO: should be A: $sab(1) someday (auto re-cloning)" +#t ("s3", "A: $sab(1) B: $sab(1)", "$oa $mab"); +t ("s3", "A: $sab(0) B: $sab(1)", "$oa $mab --crtc 0"); +t ("p4", "A: $sab(1) B: $sab(1)", "$oa $mab --crtc 1 $ob --crtc 1"); +t ("s4", "A: $sa2(0) B: $sab(1)", "$oa $ma2"); +t ("s5", "A: $sa1(0) B: $sab(1)", "$oa $ma1"); +t ("s6", "A: $sa1(0) B: $sb1(1)", "$ob $mb1"); +t ("s7", "A: $sab(0) B: $sb1(1)", "$oa $mab"); +t ("s8", "A: $sab(0) B: $sb2(1)", "$ob $mb2"); +t ("s9", "A: $sab(0) B: $sb1(1)", "$ob $mb1"); +# TODO: should be B: $sab(0) someday (auto re-cloning)" +#t ("s10", "A: $sab(0) B: $sab(0)", "$ob $mab"); +t ("p11", "A: $sab(0) B: $sab(0)", "$oa --crtc 0 $ob $mab --crtc 0"); +t ("s11", "A: $sa1(1) B: $sab(0)", "$oa $ma1"); +t ("s12", "A: $sa1(1) B: $sb1(0)", "$ob $mb1"); +t ("s13", "A: $sa1(1) B: $sab(0)", "$ob $mab"); +t ("s14", "A: $sa2(1) B: $sab(0)", "$oa $ma2"); +t ("s15", "A: $sa1(1) B: $sab(0)", "$oa $ma1"); +t ("p16", "A: $sab(0) B: $sab(0)", "$oa $mab --crtc 0 $ob --crtc 0"); +t ("s16", "A: $sab(1) B: $sab(0)", "$oa --pos 10x0"); +t ("p17", "A: $sab(0) B: $sab(0)", "$oa --crtc 0 $ob --crtc 0"); +t ("s17", "A: $sab(0) B: $sab(1)", "$ob --pos 10x0"); +t ("p18", "A: $sab(0) B: $sab(0)", "$oa --crtc 0 $ob --crtc 0"); +# TODO: s18-s19 are known to fail +t ("s18", "A: $sab(1) B: $sab(0)", "$oa --crtc 1"); +t ("p19", "A: $sab(1) B: $sab(1)", "$oa --crtc 1 $ob --crtc 1"); +t ("s19", "A: $sab(0) B: $sab(1)", "$oa --pos 10x0"); + +# Part 2: Complex dual output switching tests +# TODO: d1 is known to fail +t ("pd1", "A: $sab(0)", "$oa --crtc 0 $ob --off"); +t ("d1", "B: $sab(0)", "$oa --off $ob $mab"); + +# Done + +print "All tests succeeded.\n"; + +exit 0; +