xserver/dix
Michel Dänzer 65c5eab600 dix: Work around non-premultiplied ARGB cursor data
Some games incorrectly use non-premultiplied ARGB cursor data, presumably
because that's what Windows uses. On some hardware (and with SWcursor),
this breaks areas of the cursor which are supposed to be transparent
(and presumably also translucent areas, but that's less noticeable).

This change checks for pixels with alpha == 0 and any non-alpha component
!= 0. If any such pixel is found, the data is assumed to be
non-premultiplied and fixed up by multiplying the RGB components with the
alpha component.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92309
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 401a8d6e13)
2016-07-19 13:13:36 -04:00
..
.gitignore dix and os: gitignore dix.O and os.O 2011-09-23 17:14:47 -07:00
atom.c atom: make FreeAtom static 2015-07-08 16:41:29 -04:00
buildatoms XFree86 4.3.0.1 2003-11-14 16:49:22 +00:00
BuiltInAtoms R6.6 is the Xorg base-line 2003-11-14 15:54:54 +00:00
colormap.c configurable maximum number of clients 2015-08-24 00:00:18 -07:00
cursor.c dix: Work around non-premultiplied ARGB cursor data 2016-07-19 13:13:36 -04:00
devices.c dix: Squash some new gcc6 warnings 2016-06-20 11:46:24 -04:00
dispatch.c configurable maximum number of clients 2015-08-24 00:00:18 -07:00
dispatch.h Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
dixfonts.c fonts: Continue when font calls return Suspended more than once 2015-10-19 13:41:27 -04:00
dixutils.c dix: Add ClientSignalAll() 2016-03-11 13:14:31 -05:00
enterleave.c Input: Send XI2 FocusOut NotifyPointer events to the pointer window. 2016-07-06 13:21:27 -04:00
enterleave.h dix: Unexport various implementation details 2015-07-08 16:40:57 -04:00
eventconvert.c dix: send the current axis value in DeviceChangedEvents (#62321) 2013-05-07 09:40:42 +10:00
events.c dix/events: Set currentTime to the given time stamp in NoticeTime 2015-05-11 15:40:04 -07:00
extension.c Convert dix/* to new *allocarray functions 2015-04-21 16:57:08 -07:00
ffs.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
gc.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
getevents.c dix: put warning in for scroll increments of 0 2015-09-23 10:51:45 -04:00
globals.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
glyphcurs.c Let calloc handle multiplication 2015-04-21 16:57:07 -07:00
grabs.c Convert dix/* to new *allocarray functions 2015-04-21 16:57:08 -07:00
initatoms.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
inpututils.c dix: Add unaccelerated valuators to the ValuatorMask 2015-05-20 12:44:58 +10:00
main.c privates: Clear screen-specific keys during CloseScreen 2015-09-21 14:18:51 -04:00
Makefile.am Allow DDX to provide a main() 2013-07-23 23:56:58 +01:00
pixmap.c prime: Damage full destination rectangle when we start dirty tracking 2015-12-09 10:45:50 -05:00
privates.c privates: Clear screen-specific keys during CloseScreen 2015-09-21 14:18:51 -04:00
property.c Convert dix/* to new *allocarray functions 2015-04-21 16:57:08 -07:00
protocol.txt protocol.txt: Add MIT-SHM 1.2 requests 2015-09-25 09:46:11 -04:00
ptrveloc.c dix/ptraccel: Fix memory leak in InitPredictableAccelerationScheme 2016-07-06 13:21:26 -04:00
region.c Convert dix/* to new *allocarray functions 2015-04-21 16:57:08 -07:00
registry.c Build required portions of registry.c automatically [v2] 2014-09-18 15:29:29 -07:00
resource.c configurable maximum number of clients 2015-08-24 00:00:18 -07:00
selection.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
stubmain.c Allow DDX to provide a main() 2013-07-23 23:56:58 +01:00
swaprep.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
swapreq.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
tables.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
touch.c debug output format fix in TouchEventHistoryPush() 2015-08-28 12:07:13 +01:00
window.c dix: Add hybrid full-size/empty-clip mode to SetRootClip 2016-03-11 13:14:30 -05:00
Xserver-dtrace.h.in dix: add dtrace probes to input API 2012-03-22 11:33:42 +10:00
Xserver.d Get rid of const warnings in XSERVER_INPUT_EVENT dtrace probe calls 2015-02-10 18:14:44 -08:00