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:
parent
a46072395c
commit
0a8b67b3bb
@ -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 {
|
||||
|
@ -68,6 +68,7 @@ private:
|
||||
gbm_device *m_graphicsBufferManager;
|
||||
EGLImageKHR m_eglImage;
|
||||
QPlatformCursorImage *m_cursorImage;
|
||||
bool m_moved;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
Loading…
x
Reference in New Issue
Block a user