diff options
author | Dave Airlie <airlied@redhat.com> | 2014-01-20 11:06:42 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2014-02-21 12:54:37 +1000 |
commit | c36a5e298c36deb5f6fd0eef3029235aa58de295 (patch) | |
tree | ddca8f1115383c0a35c39a1b5c4352957c0fcc33 | |
parent | bf359b118a0870f18a229d33979270ac2f0f5dcd (diff) |
modesetting: try and use hotspot cursor support
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | src/drmmode_display.c | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac index 0b04923..0ec8e18 100644 --- a/configure.ac +++ b/configure.ac @@ -74,7 +74,7 @@ AM_CONDITIONAL(HAVE_XEXTPROTO_71, [ test "$HAVE_XEXTPROTO_71" = "yes" ]) # Checks for header files. AC_HEADER_STDC -PKG_CHECK_MODULES(DRM, [libdrm >= 2.2]) +PKG_CHECK_MODULES(DRM, [libdrm >= 2.4.46]) PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.10]) AM_CONDITIONAL(DRM, test "x$DRM" = xyes) diff --git a/src/drmmode_display.c b/src/drmmode_display.c index ccfd75f..5b796e0 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -43,6 +43,8 @@ #include "xf86Crtc.h" #include "drmmode_display.h" +#include <cursorstr.h> + /* DPMS */ #ifdef HAVE_XEXTPROTO_71 #include <X11/extensions/dpmsconst.h> @@ -491,6 +493,18 @@ drmmode_show_cursor (xf86CrtcPtr crtc) drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; drmmode_ptr drmmode = drmmode_crtc->drmmode; uint32_t handle = drmmode_crtc->cursor_bo->handle; + static Bool use_set_cursor2 = TRUE; + + if (use_set_cursor2) { + xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(crtc->scrn); + CursorPtr cursor = xf86_config->cursor; + int ret; + ret = drmModeSetCursor2(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, handle, ms->cursor_width, ms->cursor_height, cursor->bits->xhot, cursor->bits->yhot); + if (ret == -ENOSYS) + use_set_cursor2 = FALSE; + else + return; + } drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, handle, ms->cursor_width, ms->cursor_height); |