xserver/hw/xfree86
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
..
common Allow ConstantDeceleration < 1.0 2016-06-10 10:54:48 +10:00
ddc xfree86: Create EDID atom from the root window callback (v2) 2016-04-18 11:23:10 -04:00
dixmods Also dump passive grabs on XF86LogGrabInfo 2015-11-10 15:12:21 +10:00
doc xfree86: Unexport xf86Initialising, remove xf86ServerIsInitialising 2016-04-18 11:22:58 -04:00
dri dri1: Hide the SIGIO details from drivers 2016-06-08 11:36:31 -04:00
dri2 xrandrprovider: Do not use separate lists for unbound / source / offload slaves 2016-06-17 11:35:58 +02:00
drivers modesetting: Fix hw cursor check at the first call 2016-07-02 09:26:11 +02:00
exa build: Remove stale miext/cw include paths 2015-10-27 13:46:13 -04:00
fbdevhw fbdevhw: Fix a const qualifier warning 2015-09-23 15:18:24 -04:00
glamor_egl glamor: Share code for put_image handling. 2014-06-15 23:20:09 +01:00
i2c Convert hw/xfree86 to new *allocarray functions 2015-04-21 16:58:08 -07:00
int10 x86emu: Change include order to avoid conflict with system header 2016-04-29 11:05:38 -04:00
loader xfree86: Finish removing font modules 2016-03-14 11:37:32 -04:00
man xfree86: Undocument UseSIGIO in xorg.conf 2016-06-08 11:36:32 -04:00
modes randr/xf86: Add PRIME Synchronization / Double Buffer 2016-06-28 12:56:17 -04:00
os-support dix: Use OsSignal() not signal() 2016-06-08 11:36:31 -04:00
parser dix: Use OsSignal() not signal() 2016-06-08 11:36:31 -04:00
ramdac xfree86: Set xf86CrtcConfigRec cursor pointer to NULL in HideCursor 2016-05-26 09:13:20 -07:00
shadowfb Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
utils Add XNFcallocarray() to allow xnfcalloc() to check for overflow 2015-04-21 16:57:07 -07:00
vbe xfree86: Change VBE version early-out to 1.2. (#22672) 2016-03-14 11:44:10 -04:00
vgahw Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
x86emu x86emu: Change include order to avoid conflict with system header 2016-04-29 11:05:38 -04:00
.gitignore Xorg: Add Xorg.wrap to hw/xfree86/.gitignore 2014-04-18 11:39:16 +02:00
Makefile.am vidmode: move to a separate library of its own 2016-02-29 16:29:01 -05:00
Xorg.sh.in xfree86: rename Xorg.bin to Xorg 2015-01-05 09:53:58 +10:00
sdksyms.sh vidmode: Hide implementation details 2015-07-08 16:40:58 -04:00
xorg-wrapper.c Xorg.wrap: activate libdrm based detection for KMS drivers 2015-12-03 11:05:37 -05:00
xorgconf.cpp xfree86: fix wrong DontZap documentation (#71113) 2014-05-24 20:02:56 +10:00