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>
This commit is contained in:
Laszlo Agocs 2012-07-18 13:15:56 +03:00 committed by Qt by Nokia
parent a46072395c
commit 0a8b67b3bb
2 changed files with 7 additions and 1 deletions

View File

@ -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 {

View File

@ -68,6 +68,7 @@ private:
gbm_device *m_graphicsBufferManager;
EGLImageKHR m_eglImage;
QPlatformCursorImage *m_cursorImage;
bool m_moved;
};
QT_END_NAMESPACE