Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QXcbBackingStore Class Reference

#include <qxcbbackingstore.h>

+ Inheritance diagram for QXcbBackingStore:
+ Collaboration diagram for QXcbBackingStore:

Public Member Functions

 QXcbBackingStore (QWindow *window)
 
 ~QXcbBackingStore ()
 
QPaintDevicepaintDevice () override
 Implement this function to return the appropriate paint device.
 
void flush (QWindow *window, const QRegion &region, const QPoint &offset) override
 Flushes the given region from the specified window.
 
FlushResult rhiFlush (QWindow *window, qreal sourceDevicePixelRatio, const QRegion &region, const QPoint &offset, QPlatformTextureList *textures, bool translucentBackground) override
 Flushes the given region from the specified window, and compositing it with the specified textures list.
 
QImage toImage () const override
 Implemented in subclasses to return the content of the backingstore as a QImage.
 
QPlatformGraphicsBuffergraphicsBuffer () const override
 Accessor for a backingstores graphics buffer abstraction.
 
void resize (const QSize &size, const QRegion &staticContents) override
 
bool scroll (const QRegion &area, int dx, int dy) override
 Scrolls the given area dx pixels to the right and dy downward; both dx and dy may be negative.
 
void beginPaint (const QRegion &) override
 This function is called before painting onto the surface begins, with the region in which the painting will occur.
 
void endPaint () override
 This function is called after painting onto the surface has ended.
 
- Public Member Functions inherited from QXcbObject
 QXcbObject (QXcbConnection *connection=nullptr)
 
void setConnection (QXcbConnection *connection)
 
QXcbConnectionconnection () const
 
xcb_atom_t atom (QXcbAtom::Atom atom) const
 
xcb_connection_t * xcb_connection () const
 
- Public Member Functions inherited from QPlatformBackingStore
 QPlatformBackingStore (QWindow *window)
 Constructs an empty surface for the given top-level window.
 
virtual ~QPlatformBackingStore ()
 Destroys this surface.
 
QWindowwindow () const
 Returns a pointer to the top-level window associated with this surface.
 
QBackingStorebackingStore () const
 Returns a pointer to the backing store associated with this surface.
 
virtual QRhiTexturetoTexture (QRhiResourceUpdateBatch *resourceUpdates, const QRegion &dirtyRegion, TextureFlags *flags) const
 May be reimplemented in subclasses to return the content of the backingstore as an QRhiTexture.
 
void setRhiConfig (const QPlatformBackingStoreRhiConfig &config)
 
QRhirhi () const
 
void surfaceAboutToBeDestroyed ()
 
void graphicsDeviceReportedLost ()
 

Static Public Member Functions

static bool createSystemVShmSegment (xcb_connection_t *c, size_t segmentSize=1, void *shmInfo=nullptr)
 

Protected Member Functions

virtual void render (xcb_window_t window, const QRegion &region, const QPoint &offset)
 
virtual void recreateImage (QXcbWindow *win, const QSize &size)
 

Protected Attributes

QXcbBackingStoreImagem_image = nullptr
 
QStack< QRegionm_paintRegions
 
QImage m_rgbImage
 

Additional Inherited Members

- Public Types inherited from QPlatformBackingStore
enum  FlushResult { FlushSuccess , FlushFailed , FlushFailedDueToLostDevice }
 
enum  TextureFlag { TextureSwizzle = 0x01 , TextureFlip = 0x02 , TexturePremultiplied = 0x04 }
 

Detailed Description

Definition at line 18 of file qxcbbackingstore.h.

Constructor & Destructor Documentation

◆ QXcbBackingStore()

QXcbBackingStore::QXcbBackingStore ( QWindow * window)

Definition at line 744 of file qxcbbackingstore.cpp.

References QScreen::handle(), screen, QXcbObject::setConnection(), and QPlatformBackingStore::window().

+ Here is the call graph for this function:

◆ ~QXcbBackingStore()

QXcbBackingStore::~QXcbBackingStore ( )

Definition at line 751 of file qxcbbackingstore.cpp.

References m_image.

Member Function Documentation

◆ beginPaint()

void QXcbBackingStore::beginPaint ( const QRegion & )
overridevirtual

This function is called before painting onto the surface begins, with the region in which the painting will occur.

See also
endPaint(), paintDevice()

Reimplemented from QPlatformBackingStore.

Reimplemented in QXcbSystemTrayBackingStore.

Definition at line 763 of file qxcbbackingstore.cpp.

References QPainter::CompositionMode_Source, QXcbBackingStoreImage::hasAlpha(), m_image, m_paintRegions, paintDevice(), QXcbBackingStoreImage::preparePaint(), QStack< T >::push(), rect, and Qt::transparent.

Referenced by QXcbSystemTrayBackingStore::beginPaint().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createSystemVShmSegment()

bool QXcbBackingStore::createSystemVShmSegment ( xcb_connection_t * c,
size_t segmentSize = 1,
void * shmInfo = nullptr )
static

Definition at line 738 of file qxcbbackingstore.cpp.

References QXcbBackingStoreImage::createSystemVShmSegment(), and info.

Referenced by QXcbBasicConnection::initializeShm().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ endPaint()

void QXcbBackingStore::endPaint ( )
overridevirtual

This function is called after painting onto the surface has ended.

See also
beginPaint(), paintDevice()

Reimplemented from QPlatformBackingStore.

Definition at line 780 of file qxcbbackingstore.cpp.

References QRegion::begin(), QImage::copy(), QRegion::end(), QXcbBackingStoreImage::image(), QXcbWindow::imageNeedsRgbSwap(), QList< T >::isEmpty(), it, m_image, m_paintRegions, m_rgbImage, QStack< T >::pop(), QXcbBackingStoreImage::preparePaint(), Q_FUNC_INFO, Q_UNLIKELY, qCWarning, rect, QImage::rgbSwapped(), and QPlatformBackingStore::window().

+ Here is the call graph for this function:

◆ flush()

void QXcbBackingStore::flush ( QWindow * window,
const QRegion & region,
const QPoint & offset )
overridevirtual

Flushes the given region from the specified window.

Note
region is relative to the window which may not be top-level in case window corresponds to a native child widget. offset is the position of the native child relative to the top-level window.

Unlike rhiFlush(), this function's default implementation does nothing. It is expected that subclasses provide a platform-specific (non-QRhi-based) implementation, if applicable on the given platform.

See also
rhiFlush()

Reimplemented from QPlatformBackingStore.

Definition at line 831 of file qxcbbackingstore.cpp.

References QXcbBackingStoreImage::flushScrolledRegion(), QSize::isEmpty(), QRect::isNull(), m_image, QXcbWindow::needsSync(), Q_FUNC_INFO, qCWarning, render(), QXcbBackingStoreImage::size(), QWindow::size(), QHighDpi::toNativePixels(), QRect::translated(), QXcbWindow::updateSyncRequestCounter(), QPlatformBackingStore::window(), QXcbObject::xcb_connection(), and QXcbWindow::xcb_window().

+ Here is the call graph for this function:

◆ graphicsBuffer()

QPlatformGraphicsBuffer * QXcbBackingStore::graphicsBuffer ( ) const
overridevirtual

Accessor for a backingstores graphics buffer abstraction.

Reimplemented from QPlatformBackingStore.

Definition at line 826 of file qxcbbackingstore.cpp.

References QXcbBackingStoreImage::graphicsBuffer(), and m_image.

+ Here is the call graph for this function:

◆ paintDevice()

QPaintDevice * QXcbBackingStore::paintDevice ( )
overridevirtual

Implement this function to return the appropriate paint device.

Implements QPlatformBackingStore.

Definition at line 756 of file qxcbbackingstore.cpp.

References QXcbBackingStoreImage::image(), QImage::isNull(), m_image, and m_rgbImage.

Referenced by beginPaint(), and QXcbSystemTrayBackingStore::beginPaint().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ recreateImage()

void QXcbBackingStore::recreateImage ( QXcbWindow * win,
const QSize & size )
protectedvirtual

Reimplemented in QXcbSystemTrayBackingStore.

Definition at line 909 of file qxcbbackingstore.cpp.

References m_image, m_rgbImage, QXcbBackingStoreImage::resize(), and win.

Referenced by QXcbSystemTrayBackingStore::recreateImage(), and resize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ render()

void QXcbBackingStore::render ( xcb_window_t window,
const QRegion & region,
const QPoint & offset )
protectedvirtual

Reimplemented in QXcbSystemTrayBackingStore.

Definition at line 863 of file qxcbbackingstore.cpp.

References m_image, QXcbBackingStoreImage::put(), and QPlatformBackingStore::window().

Referenced by flush(), and QXcbSystemTrayBackingStore::render().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ resize()

void QXcbBackingStore::resize ( const QSize & size,
const QRegion & staticContents )
overridevirtual

Implements QPlatformBackingStore.

Definition at line 894 of file qxcbbackingstore.cpp.

References m_image, recreateImage(), QXcbBackingStoreImage::size(), win, and QPlatformBackingStore::window().

+ Here is the call graph for this function:

◆ rhiFlush()

QPlatformBackingStore::FlushResult QXcbBackingStore::rhiFlush ( QWindow * window,
qreal sourceDevicePixelRatio,
const QRegion & region,
const QPoint & offset,
QPlatformTextureList * textures,
bool translucentBackground )
overridevirtual

Flushes the given region from the specified window, and compositing it with the specified textures list.

The default implementation retrieves the contents using toTexture() and composes using QRhi with OpenGL, Metal, Vulkan, or Direct 3D underneath. May be reimplemented in subclasses if customization is desired.

Note
region is relative to the window which may not be top-level in case window corresponds to a native child widget. offset is the position of the native child relative to the top-level window.
See also
flush()

Reimplemented from QPlatformBackingStore.

Definition at line 868 of file qxcbbackingstore.cpp.

References QPlatformBackingStore::FlushFailed, QXcbBackingStoreImage::flushScrolledRegion(), QPlatformBackingStore::FlushSuccess, QSize::isEmpty(), m_image, QXcbWindow::needsSync(), QPlatformBackingStore::rhiFlush(), QXcbBackingStoreImage::size(), QXcbWindow::updateSyncRequestCounter(), QPlatformBackingStore::window(), and QXcbObject::xcb_connection().

+ Here is the call graph for this function:

◆ scroll()

bool QXcbBackingStore::scroll ( const QRegion & area,
int dx,
int dy )
overridevirtual

Scrolls the given area dx pixels to the right and dy downward; both dx and dy may be negative.

Returns true if the area was scrolled successfully; false otherwise.

Reimplemented from QPlatformBackingStore.

Definition at line 923 of file qxcbbackingstore.cpp.

References area(), m_image, and QXcbBackingStoreImage::scroll().

+ Here is the call graph for this function:

◆ toImage()

QImage QXcbBackingStore::toImage ( ) const
overridevirtual

Implemented in subclasses to return the content of the backingstore as a QImage.

If composition via a 3D graphics API is supported, either this function or toTexture() must be implemented.

The returned image is only valid until the next operation (resize, paint, scroll, or flush) on the backingstore. The caller must not store the return value between calls, but instead call this function before each use, or make an explicit copy.

See also
toTexture()

Reimplemented from QPlatformBackingStore.

Definition at line 807 of file qxcbbackingstore.cpp.

References QXcbBackingStoreImage::flushScrolledRegion(), QXcbBackingStoreImage::image(), QImage::isNull(), m_image, and m_rgbImage.

+ Here is the call graph for this function:

Member Data Documentation

◆ m_image

◆ m_paintRegions

QStack<QRegion> QXcbBackingStore::m_paintRegions
protected

Definition at line 50 of file qxcbbackingstore.h.

Referenced by beginPaint(), and endPaint().

◆ m_rgbImage

QImage QXcbBackingStore::m_rgbImage
protected

Definition at line 51 of file qxcbbackingstore.h.

Referenced by endPaint(), paintDevice(), recreateImage(), and toImage().


The documentation for this class was generated from the following files: