summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/kms
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.p.agocs@nokia.com>2012-07-18 13:15:56 +0300
committerQt by Nokia <qt-info@nokia.com>2012-07-20 09:13:00 +0200
commit0a8b67b3bbb9b03746e3ba2e80babbc1b43a55a1 (patch)
treedea60035f4042bcfa0e5f7fc57ab9f6b60434cce /src/plugins/platforms/kms
parenta46072395ccd845378e2ff08606d717b22913d88 (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')
-rw-r--r--src/plugins/platforms/kms/qkmscursor.cpp7
-rw-r--r--src/plugins/platforms/kms/qkmscursor.h1
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