summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Clark <robdclark@gmail.com>2014-04-27 12:23:18 -0400
committerRob Clark <robdclark@gmail.com>2014-04-27 12:23:54 -0400
commit1727d268841139661619681fcef2ac36cf1b0978 (patch)
tree2d0a5d6a93114730476b670cf6c15ab9917eae07
parentdadda8daa4fc1e87789d4682affaf42b3e6737f9 (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.c23
-rw-r--r--src/fbmode_display.c26
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,