diff options
-rw-r--r-- | src/plugins/platforms/kms/qkmscursor.cpp | 7 | ||||
-rw-r--r-- | src/plugins/platforms/kms/qkmscursor.h | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/plugins/platforms/kms/qkmscursor.cpp b/src/plugins/platforms/kms/qkmscursor.cpp index e7d1069b8b..794b0ed175 100644 --- a/src/plugins/platforms/kms/qkmscursor.cpp +++ b/src/plugins/platforms/kms/qkmscursor.cpp @@ -47,7 +47,8 @@ QT_BEGIN_NAMESPACE QKmsCursor::QKmsCursor(QKmsScreen *screen) : m_screen(screen), - m_graphicsBufferManager(screen->device()->gbmDevice()) + m_graphicsBufferManager(screen->device()->gbmDevice()), + m_moved(false) { gbm_bo *bo = gbm_bo_create(m_graphicsBufferManager, 64, 64, GBM_BO_FORMAT_ARGB8888, @@ -67,6 +68,7 @@ QKmsCursor::~QKmsCursor() void QKmsCursor::pointerEvent(const QMouseEvent &event) { + m_moved = true; int status = drmModeMoveCursor(m_screen->device()->fd(), m_screen->crtcId(), event.globalX(), @@ -80,6 +82,9 @@ void QKmsCursor::changeCursor(QCursor *widgetCursor, QWindow *window) { Q_UNUSED(window) + if (!m_moved) + drmModeMoveCursor(m_screen->device()->fd(), m_screen->crtcId(), 0, 0); + if (widgetCursor->shape() != Qt::BitmapCursor) { m_cursorImage->set(widgetCursor->shape()); } else { diff --git a/src/plugins/platforms/kms/qkmscursor.h b/src/plugins/platforms/kms/qkmscursor.h index 01a6e6b955..8a22c22404 100644 --- a/src/plugins/platforms/kms/qkmscursor.h +++ b/src/plugins/platforms/kms/qkmscursor.h @@ -68,6 +68,7 @@ private: gbm_device *m_graphicsBufferManager; EGLImageKHR m_eglImage; QPlatformCursorImage *m_cursorImage; + bool m_moved; }; QT_END_NAMESPACE |