Go to file
Michel Dänzer 25eca80265 present: Handle wraparound when comparing MSC values
When a window moves from one CRTC to another, present_window_to_crtc_msc
updates window_priv->msc_offset according to the delta between the
current MSC values of the old and new CRTC:

            window_priv->msc_offset += new_msc - old_msc;

window_priv->msc_offset is initially 0, so if new_msc < old_msc,
window_priv->msc_offset wraps around and becomes a large number. If the
window_msc parameter passed in is small (in particular if it's 0, such as
is the case when the client just wants to know the current window MSC
value), the returned CRTC MSC value may still be a large number. In that
case, the existing MSC comparisons in pixmap_present weren't working as
intended, resulting in scheduling a wait far into the future when the
target MSC had actually already passed. This would result in the client
(e.g. the Chromium browser) hanging when moving its window between CRTCs.

In order to fix this, introduce msc_is_(equal_or_)after helper functions
which take the wraparound into account for comparing two MSC values.

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Martin Peres <martin.peres@linux.intel.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2016-01-19 18:03:26 -08:00
composite composite: Factor out backing store transition 2015-09-24 13:01:51 -04:00
config config: Use NotifyFd interface for udev 2015-12-01 13:55:15 -05:00
damageext Replace 'pointer' type with 'void *' 2014-01-12 10:24:11 -08:00
dbe Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
dix prime: Damage full destination rectangle when we start dirty tracking 2015-12-07 17:05:54 -05:00
doc doc: Convert an \fP pair into appropriate tags. 2015-09-23 10:32:53 -04:00
dri3 dri3: static cleanup 2015-07-08 16:40:57 -04:00
exa build: Remove stale miext/cw include paths 2015-10-27 13:46:13 -04:00
fb Fix alphamap interactions with wfb 2015-09-29 12:21:34 -04:00
glamor glamor: Disable debugging messages other than GL API errors 2016-01-19 12:48:25 -08:00
glx glx: Fix header length error checking in __glXDisp_RenderLarge 2015-10-19 11:51:58 -04:00
hw Fix build when XSERVER_PLATFORM_BUS is not defined. 2016-01-06 10:10:14 -05:00
include Fix uninitialized variable warnings reported by clang 2016-01-06 09:42:59 -05:00
m4 configure.ac: remove remaining TLS references 2015-03-24 17:20:26 +00:00
man Xserver.man: document more transports for -nolisten & -listen options 2015-10-28 14:16:28 -04:00
mi mi: Correct a miscall of abs() to instead call fabs() 2015-10-19 11:49:52 -04:00
miext rootless: Fix bogus handling of broken root clip 2015-09-21 17:44:48 -04:00
os os: Failure to remove a non-existent log file is not an error 2016-01-06 12:23:31 -05:00
present present: Handle wraparound when comparing MSC values 2016-01-19 18:03:26 -08:00
pseudoramiX Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
randr randr: Silence unused variable warning 2015-12-09 09:33:56 -05:00
record Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
render render: Use OsTimer for animated cursor timing 2015-12-01 13:56:12 -05:00
test build: Remove stale miext/cw include paths 2015-10-27 13:46:13 -04:00
Xext sync: Don't allow creating a system counter before sync is initialized 2015-12-08 18:22:54 -05:00
xfixes xfixes: Unexport xfixes.h 2015-07-08 16:40:58 -04:00
Xi Input: Add focus-in event source 2015-11-24 11:36:34 +10:00
xkb Replace 'sun' with '__sun' 2015-11-30 11:51:22 -05:00
.dir-locals.el Add .dir-locals.el 2013-08-17 12:17:36 +02:00
.gitignore .gitignore: Add new autotools file 'test-driver' 2014-04-21 13:41:42 -07:00
autogen.sh autogen.sh: use quoted string variables 2015-03-13 12:31:21 +10:00
configure.ac xserver: Fix configure.ac check for libsystemd/-daemon 2015-12-08 11:48:36 -05:00
COPYING modesetting: Merge modesetting's COPYING into the xserver's. 2014-09-15 12:46:02 -07:00
devbook.am doc: Create a script to filter xmlto output 2015-01-05 14:24:06 -08:00
docbook.am docbook.am: embed css styles inside the HTML HEAD element 2011-09-21 14:07:49 -07:00
fix-miregion Change region implementation names to eliminate the 'mi' prefix 2010-06-05 17:47:32 -07:00
fix-miregion-private Change region implementation names to eliminate the 'mi' prefix 2010-06-05 17:47:32 -07:00
fix-patch-whitespace Rename region macros to eliminate screen argument 2010-06-05 18:59:00 -07:00
fix-region Rename region macros to eliminate screen argument 2010-06-05 18:59:00 -07:00
Makefile.am DIST_SUBDIRS needs to include glamor, even if it isn't built 2014-02-13 15:25:56 -08:00
manpages.am Xorg: Add a suid root wrapper 2014-03-12 08:50:05 +01:00
README packaging: provide a default README file #24206 2010-01-27 14:00:17 -08:00
xorg-server.m4 macros: clarify documentation 2012-11-05 13:24:57 -06:00
xorg-server.pc.in xfree86: link modules against Xorg symbols on Cygwin 2012-04-05 21:57:07 -05:00
xserver.ent.in doc: relocate xserver.ent in the package root directory 2011-05-14 11:22:26 -07:00

					X Server

The X server accepts requests from client applications to create windows,
which are (normally rectangular) "virtual screens" that the client program
can draw into.

Windows are then composed on the actual screen by the X server
(or by a separate composite manager) as directed by the window manager,
which usually communicates with the user via graphical controls such as buttons
and draggable titlebars and borders.

For a comprehensive overview of X Server and X Window System, consult the
following article:
http://en.wikipedia.org/wiki/X_server

All questions regarding this software should be directed at the
Xorg mailing list:

        http://lists.freedesktop.org/mailman/listinfo/xorg

Please submit bug reports to the Xorg bugzilla:

        https://bugs.freedesktop.org/enter_bug.cgi?product=xorg

The master development code repository can be found at:

        git://anongit.freedesktop.org/git/xorg/xserver

        http://cgit.freedesktop.org/xorg/xserver

For patch submission instructions, see:

	http://www.x.org/wiki/Development/Documentation/SubmittingPatches

For more information on the git code manager, see:

        http://wiki.x.org/wiki/GitPage