diff options
author | Laszlo Agocs <laszlo.p.agocs@nokia.com> | 2012-07-18 13:15:56 +0300 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-20 09:13:00 +0200 |
commit | 0a8b67b3bbb9b03746e3ba2e80babbc1b43a55a1 (patch) | |
tree | dea60035f4042bcfa0e5f7fc57ab9f6b60434cce /src/plugins/platforms/kms/qkmscursor.cpp | |
parent | a46072395ccd845378e2ff08606d717b22913d88 (diff) |
Reset drm cursor position if cursor image is set before moved
Do not let the cursor appear at some random position and then jump
back to the top-left corner when first moved.
Change-Id: I0b77763bdfa86c23435d6cc07bdc13dfcc682567
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
Diffstat (limited to 'src/plugins/platforms/kms/qkmscursor.cpp')
-rw-r--r-- | src/plugins/platforms/kms/qkmscursor.cpp | 7 |
1 files changed, 6 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 { |