Go to file
Takashi Iwai af916477c6 modesetting: Fix hw cursor check at the first call
With the previous patch, the modesetting driver can now return whether
the driver supports hw cursor.  However, it alone doesn't suffice,
unfortunately. drmmode_load_cursor_argb_check() is called in the
following chain:

  xf86CursorSetCursor()
    -> xf86SetCursor()
       -> xf86DriverLoadCursorARGB()
         -> xf86_load_cursor_argb()
           -> xf86_crtc_load_cursor_argb()
             -> drmmode_load_cursor_argb_check()

*but* at first with drmmode_crtc->cursor_up = FALSE.  Then the
function doesn't actually set the cursor but returns TRUE
unconditionally.  The actual call of drmmode_set_cursor() is done at
first via the show_cursor callback, and there is no check of sw cursor
fallback any longer at this place. Since it's called only once per
cursor setup, so the xserver still thinks as if the hw cursor is
supported.

This patch is an ad hoc fix to correct the behavior somehow: it does
call drmmode_set_cursor() at the very first time even if cursor_up is
FALSE, then quickly hides again.  In that way, whether the hw cursor
is supported is evaluated in the right place at the right time.

Of course, it might be more elegant if we have a more proper mechanism
to fall back to sw cursor at any call path.  But it'd need more
rework, so I leave this workaround as is for now.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2016-07-02 09:26:11 +02:00
composite res: Fix accounting of redirected window pixmaps for Composite 2016-06-21 11:11:49 -04:00
config Remove SIGIO support for input [v5] 2016-05-26 16:07:54 -07:00
damageext dix: Remove pointless client-state callbacks 2016-05-11 11:21:08 -04:00
dbe Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
dix dix: Call screen block/wakeup handlers closest to blocking [v3] 2016-06-20 11:54:57 -07:00
doc doc: Convert an \fP pair into appropriate tags. 2015-09-23 10:32:53 -04:00
dri3 dri3: remove unused file dri3int.h 2016-04-18 11:26:36 -04:00
exa exa: only draw valid trapezoids 2016-06-17 11:21:30 +02:00
fb Fix alphamap interactions with wfb 2015-09-29 12:21:34 -04:00
glamor dix: Call screen block/wakeup handlers closest to blocking [v3] 2016-06-20 11:54:57 -07:00
glx res: Account for GLXPixmap references too 2016-06-21 11:11:54 -04:00
hw modesetting: Fix hw cursor check at the first call 2016-07-02 09:26:11 +02:00
include xf86: Add PRIME flipping functions to Screen 2016-06-28 12:55:56 -04:00
m4 Add ax_pthread.m4 to m4/ 2016-05-29 19:20:51 -07:00
man Xserver.man: document more transports for -nolisten & -listen options 2015-10-28 14:16:28 -04:00
mi dix: Update some comments to reflect the new non-SIGIO input model 2016-06-08 11:36:32 -04:00
miext dix: Call screen block/wakeup handlers closest to blocking [v3] 2016-06-20 11:54:57 -07:00
os Revert "XDMCP: For IPv6 add link local addresses to the end of the list" 2016-06-21 11:45:17 -04:00
present xrandrprovider: Do not use separate lists for unbound / source / offload slaves 2016-06-17 11:35:58 +02:00
pseudoramiX Convert top level extensions to new *allocarray functions 2015-04-21 16:57:08 -07:00
randr randr/xf86: Add PRIME Synchronization / Double Buffer 2016-06-28 12:56:17 -04:00
record record: don't call RecordDeleteContext when AddResource fails 2016-03-08 10:20:04 -05:00
render exa: only draw valid trapezoids 2016-06-17 11:21:30 +02:00
test test: Actually verify that two equivalent touch points are the same 2016-05-29 18:43:16 -07:00
Xext res: Simplify QueryClientPixmapBytes 2016-06-21 11:11:44 -04:00
xfixes dix: Remove pointless client-state callbacks 2016-05-11 11:21:08 -04:00
Xi Remove SIGIO support for input [v5] 2016-05-26 16:07:54 -07:00
xkb xkb: add a cause to the xkb indicator update after a keymap change 2016-06-29 19:20:17 +10: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: Set a default subject prefix for patches 2016-02-08 17:41:38 -05:00
configure.ac configure: Tell AC_REPLACE_FUNCS where to find replacements 2016-06-30 13:12:08 -04: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