diff options
-rw-r--r-- | src/gui/kernel/qplatformscreen_qpa.cpp | 38 | ||||
-rw-r--r-- | src/gui/kernel/qplatformscreen_qpa.h | 13 |
2 files changed, 51 insertions, 0 deletions
diff --git a/src/gui/kernel/qplatformscreen_qpa.cpp b/src/gui/kernel/qplatformscreen_qpa.cpp index 8fb42595b8..e25e3f33d3 100644 --- a/src/gui/kernel/qplatformscreen_qpa.cpp +++ b/src/gui/kernel/qplatformscreen_qpa.cpp @@ -181,3 +181,41 @@ QPlatformScreen * QPlatformScreen::platformScreenForWindow(const QWindow *window Reimplement in subclass to return the image format which corresponds to the screen format */ + +/*! + \class QPlatformScreenPageFlipper + \since 5.0 + \internal + \preliminary + \ingroup qpa + + \brief The QPlatformScreenPageFlipper class provides an abstract interface for display buffer swapping + + Implement the displayBuffer() function to initiate a buffer swap. The + bufferDisplayed() signal should be emitted once the buffer is actually displayed on + the screen. The bufferReleased() signal should be emitted when the buffer data is no + longer owned by the display hardware. +*/ + +/*! \fn bool QPlatformScreenPageFlipper::displayBuffer(void *bufferHandle) + +Implemented in subclasses to display the buffer referenced by \a bufferHandle directly on +the screen. Returns \c true if it is possible to display the buffer, and \c false if the +buffer cannot be displayed. + +If this function returns true, the buffer must not be modified or destroyed before the +bufferReleased() signal is emitted. The signal bufferDisplayed() is emitted when the buffer +is displayed on the screen. The two signals may be emitted in either order. + +This function is allowed to block. +*/ + + +/*! + Implemented in subclasses to return a page flipper object for the screen, or 0 if the + hardware does not support page flipping. The default implementation returns 0. + */ +QPlatformScreenPageFlipper *QPlatformScreen::pageFlipper() const +{ + return 0; +} diff --git a/src/gui/kernel/qplatformscreen_qpa.h b/src/gui/kernel/qplatformscreen_qpa.h index 3851b1821a..9919ca5ca8 100644 --- a/src/gui/kernel/qplatformscreen_qpa.h +++ b/src/gui/kernel/qplatformscreen_qpa.h @@ -67,6 +67,17 @@ class QPlatformWindow; class QScreen; class QSurfaceFormat; +class QPlatformScreenPageFlipper : public QObject +{ + Q_OBJECT +public: + virtual bool displayBuffer(void *bufferHandle) = 0; + + signals: + void bufferDisplayed(void *bufferHandle); + void bufferReleased(void *bufferHandle); +}; + class Q_GUI_EXPORT QPlatformScreen { Q_DECLARE_PRIVATE(QPlatformScreen) @@ -95,6 +106,8 @@ public: virtual QString name() const { return QString(); } + virtual QPlatformScreenPageFlipper *pageFlipper() const; + protected: QScopedPointer<QPlatformScreenPrivate> d_ptr; |