diff options
author | Rob Clark <robdclark@gmail.com> | 2014-04-27 12:23:18 -0400 |
---|---|---|
committer | Rob Clark <robdclark@gmail.com> | 2014-04-27 12:23:54 -0400 |
commit | 1727d268841139661619681fcef2ac36cf1b0978 (patch) | |
tree | 2d0a5d6a93114730476b670cf6c15ab9917eae07 | |
parent | dadda8daa4fc1e87789d4682affaf42b3e6737f9 (diff) |
kms/fb: fix load_cursor_argb for the new Xorg ABI
Signed-off-by: Rob Clark <robdclark@gmail.com>
-rw-r--r-- | src/drmmode_display.c | 23 | ||||
-rw-r--r-- | src/fbmode_display.c | 26 |
2 files changed, 43 insertions, 6 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 4052a6e..5e9913a 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -423,21 +423,38 @@ convert_cursor(CARD32 *dst, CARD32 *src, int dw, int sw) } } -static void -drmmode_load_cursor_argb (xf86CrtcPtr crtc, CARD32 *image) +static Bool +load_cursor_argb(xf86CrtcPtr crtc, CARD32 *image) { drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; struct fd_bo *cursor = drmmode_crtc->cursor; drmmode_ptr drmmode = drmmode_crtc->drmmode; void *ptr = fd_bo_map(cursor); + int ret = 0; convert_cursor(ptr, image, 64, 64); if (drmmode_crtc->cursor_visible) { - drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, + ret = drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, fd_bo_handle(cursor), 64, 64); } + + return ret == 0; +} + +#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,15,99,902,0) +static Bool +drmmode_load_cursor_argb(xf86CrtcPtr crtc, CARD32 *image) +{ + return load_cursor_argb(crtc, image); +} +#else +static void +drmmode_load_cursor_argb(xf86CrtcPtr crtc, CARD32 *image) +{ + load_cursor_argb(crtc, image); } +#endif static void drmmode_hide_cursor (xf86CrtcPtr crtc) diff --git a/src/fbmode_display.c b/src/fbmode_display.c index 78abaee..b83e0ff 100644 --- a/src/fbmode_display.c +++ b/src/fbmode_display.c @@ -315,8 +315,8 @@ MSMCrtcHideCursor(xf86CrtcPtr crtc) _enable_cursor(crtc->driver_private, FALSE); } -static void -MSMCrtcLoadCursorARGB(xf86CrtcPtr crtc, CARD32 * image) +static Bool +load_cursor_argb(xf86CrtcPtr crtc, CARD32 * image) { #ifdef MSMFB_CURSOR fbmode_ptr fbmode = crtc->driver_private; @@ -333,11 +333,31 @@ MSMCrtcLoadCursorARGB(xf86CrtcPtr crtc, CARD32 * image) /* Per pixel alpha on */ cursor.image.fg_color = 0; - if (ioctl(fbmode->fd, MSMFB_CURSOR, &cursor)) + if (ioctl(fbmode->fd, MSMFB_CURSOR, &cursor)) { ErrorF("%s: Error calling MSMBF_CURSOR\n", __FUNCTION__); + return FALSE; + } + return TRUE; +#else + return FALSE; #endif } +#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,15,99,902,0) +static Bool +MSMCrtcLoadCursorARGB(xf86CrtcPtr crtc, CARD32 * image) +{ + return load_cursor_argb(crtc, image); +} +#else +static void +MSMCrtcLoadCursorARGB(xf86CrtcPtr crtc, CARD32 * image) +{ + load_cursor_argb(crtc, image); +} +#endif + + static const xf86CrtcFuncsRec MSMCrtcFuncs = { .dpms = MSMCrtcDPMS, .lock = MSMCrtcLock, |