From 4ba1072f3f9dff2c674e804eeb998d88510db89c Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Fri, 11 Oct 2013 14:42:14 +0200 Subject: linuxfb: Make the mouse cursor visible and working Change-Id: I58bae7235ae714da551da1337ee6340fc712aaa5 Reviewed-by: Gunnar Sletta --- src/platformsupport/fbconvenience/qfbcursor.cpp | 9 ++++++++- src/platformsupport/fbconvenience/qfbcursor_p.h | 2 +- src/platformsupport/fbconvenience/qfbscreen.cpp | 8 ++++++-- src/platformsupport/fbconvenience/qfbscreen_p.h | 15 +++++++++------ 4 files changed, 24 insertions(+), 10 deletions(-) (limited to 'src/platformsupport/fbconvenience') diff --git a/src/platformsupport/fbconvenience/qfbcursor.cpp b/src/platformsupport/fbconvenience/qfbcursor.cpp index fecf9f6380..b86f5830ea 100644 --- a/src/platformsupport/fbconvenience/qfbcursor.cpp +++ b/src/platformsupport/fbconvenience/qfbcursor.cpp @@ -137,5 +137,12 @@ void QFbCursor::changeCursor(QCursor * widgetCursor, QWindow *window) } #endif -QT_END_NAMESPACE +void QFbCursor::setDirty() +{ + if (!mDirty) { + mDirty = true; + mScreen->scheduleUpdate(); + } +} +QT_END_NAMESPACE diff --git a/src/platformsupport/fbconvenience/qfbcursor_p.h b/src/platformsupport/fbconvenience/qfbcursor_p.h index cee9f56ab5..40377e2075 100644 --- a/src/platformsupport/fbconvenience/qfbcursor_p.h +++ b/src/platformsupport/fbconvenience/qfbcursor_p.h @@ -63,7 +63,7 @@ public: virtual void changeCursor(QCursor *widgetCursor, QWindow *window); #endif - virtual void setDirty() { mDirty = true; /* screen->setDirty(QRect()); */ } + virtual void setDirty(); virtual bool isDirty() const { return mDirty; } virtual bool isOnScreen() const { return mOnScreen; } virtual QRect lastPainted() const { return mPrevRect; } diff --git a/src/platformsupport/fbconvenience/qfbscreen.cpp b/src/platformsupport/fbconvenience/qfbscreen.cpp index e5b9f09c14..4ef035cf50 100644 --- a/src/platformsupport/fbconvenience/qfbscreen.cpp +++ b/src/platformsupport/fbconvenience/qfbscreen.cpp @@ -149,9 +149,13 @@ void QFbScreen::setDirty(const QRect &rect) QRect intersection = rect.intersected(mGeometry); QPoint screenOffset = mGeometry.topLeft(); mRepaintRegion += intersection.translated(-screenOffset); // global to local translation - if (!mRedrawTimer.isActive()) { + scheduleUpdate(); +} + +void QFbScreen::scheduleUpdate() +{ + if (!mRedrawTimer.isActive()) mRedrawTimer.start(); - } } void QFbScreen::setPhysicalSize(const QSize &size) diff --git a/src/platformsupport/fbconvenience/qfbscreen_p.h b/src/platformsupport/fbconvenience/qfbscreen_p.h index 01a352e96a..dd940c4a1d 100644 --- a/src/platformsupport/fbconvenience/qfbscreen_p.h +++ b/src/platformsupport/fbconvenience/qfbscreen_p.h @@ -45,6 +45,7 @@ #include #include #include +#include "qfbcursor_p.h" QT_BEGIN_NAMESPACE @@ -60,13 +61,14 @@ public: QFbScreen(); ~QFbScreen(); - virtual QRect geometry() const { return mGeometry; } - virtual int depth() const { return mDepth; } - virtual QImage::Format format() const { return mFormat; } - virtual QSizeF physicalSize() const { return mPhysicalSize; } + QRect geometry() const Q_DECL_OVERRIDE { return mGeometry; } + int depth() const Q_DECL_OVERRIDE { return mDepth; } + QImage::Format format() const Q_DECL_OVERRIDE { return mFormat; } + QSizeF physicalSize() const Q_DECL_OVERRIDE { return mPhysicalSize; } + QPlatformCursor *cursor() const Q_DECL_OVERRIDE { return mCursor; } QWindow *topWindow() const; - virtual QWindow *topLevelAt(const QPoint & p) const; + QWindow *topLevelAt(const QPoint & p) const Q_DECL_OVERRIDE; // compositor api virtual void addWindow(QFbWindow *window); @@ -77,6 +79,8 @@ public: void addBackingStore(QFbBackingStore *bs) {mBackingStores << bs;} + void scheduleUpdate(); + public slots: virtual void setDirty(const QRect &rect); void setPhysicalSize(const QSize &size); @@ -114,4 +118,3 @@ private: QT_END_NAMESPACE #endif // QFBSCREEN_P_H - -- cgit v1.2.3