diff options
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbbackingstore.h')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbbackingstore.h | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/plugins/platforms/xcb/qxcbbackingstore.h b/src/plugins/platforms/xcb/qxcbbackingstore.h index 734de1f7d7..39d023cb9d 100644 --- a/src/plugins/platforms/xcb/qxcbbackingstore.h +++ b/src/plugins/platforms/xcb/qxcbbackingstore.h @@ -77,12 +77,41 @@ public: static bool createSystemVShmSegment(QXcbConnection *c, size_t segmentSize = 1, void *shmInfo = nullptr); -private: +protected: + virtual void render(xcb_window_t window, const QRegion ®ion, const QPoint &offset); + virtual void recreateImage(QXcbWindow *win, const QSize &size); + QXcbBackingStoreImage *m_image = nullptr; QStack<QRegion> m_paintRegions; QImage m_rgbImage; }; +class QXcbSystemTrayBackingStore : public QXcbBackingStore +{ +public: + QXcbSystemTrayBackingStore(QWindow *window); + ~QXcbSystemTrayBackingStore(); + + void beginPaint(const QRegion &) override; + +protected: + void render(xcb_window_t window, const QRegion ®ion, const QPoint &offset) override; + void recreateImage(QXcbWindow *win, const QSize &size) override; + +private: +#if QT_CONFIG(xcb_render) + void initXRenderMode(); + + xcb_pixmap_t m_xrenderPixmap = XCB_NONE; + xcb_render_picture_t m_xrenderPicture = XCB_NONE; + xcb_render_pictformat_t m_xrenderPictFormat = XCB_NONE; + xcb_render_picture_t m_windowPicture = XCB_NONE; +#endif + bool m_usingXRenderMode = false; + bool m_useGrabbedBackgound = false; + QPixmap m_grabbedBackground; +}; + QT_END_NAMESPACE #endif |