71 Q_PROPERTY(uint winId READ winId WRITE setWinId RESET resetWinId NOTIFY winIdChanged)
72 Q_PROPERTY(qreal paintedWidth READ paintedWidth NOTIFY paintedSizeChanged)
73 Q_PROPERTY(qreal paintedHeight READ paintedHeight NOTIFY paintedSizeChanged)
74 Q_PROPERTY(
bool thumbnailAvailable READ thumbnailAvailable NOTIFY thumbnailAvailableChanged)
79 bool nativeEventFilter(
const QByteArray &eventType,
void *message, qintptr *result)
override;
80 QSGNode *updatePaintNode(
QSGNode *oldNode, UpdatePaintNodeData *updatePaintNodeData)
override;
82 uint32_t winId()
const;
83 void setWinId(uint32_t winId);
86 qreal paintedWidth()
const;
87 qreal paintedHeight()
const;
88 bool thumbnailAvailable()
const;
90 bool isTextureProvider()
const override;
95 void paintedSizeChanged();
96 void thumbnailAvailableChanged();
99 void invalidateSceneGraph();
103 void releaseResources()
override;
106 void iconToTexture(WindowTextureProvider *textureProvider);
107 void windowToTexture(WindowTextureProvider *textureProvider);
108 bool startRedirecting();
109 void stopRedirecting();
111 void setThumbnailAvailable(
bool thumbnailAvailable);
112 void sceneVisibilityChanged(
bool visible);
114 bool m_composite =
false;
116 uint32_t m_winId = 0;
118 bool m_thumbnailAvailable =
false;
119 bool m_redirecting =
false;
120 bool m_damaged =
false;
121 mutable WindowTextureProvider *m_textureProvider =
nullptr;
122#if HAVE_XCB_COMPOSITE
123 xcb_pixmap_t pixmapForWindow();
124 static std::optional<bool> s_hasPixmapExtension;
125 bool m_openGLFunctionsResolved =
false;
126 uint8_t m_damageEventBase = 0;
127 xcb_damage_damage_t m_damage = XCB_NONE;
128 xcb_pixmap_t m_pixmap = XCB_PIXMAP_NONE;
133 bool windowToTextureGLX(WindowTextureProvider *textureProvider);
134 void resolveGLXFunctions();
135 bool loadGLXTexture();
136 void bindGLXTexture();
138 xcb_pixmap_t m_glxPixmap = XCB_PIXMAP_NONE;
139 xcb_visualid_t m_visualid = XCB_NONE;
140 QFunctionPointer m_bindTexImage;
141 QFunctionPointer m_releaseTexImage;
144 bool xcbWindowToTextureEGL(WindowTextureProvider *textureProvider);
145 void resolveEGLFunctions();
146 void bindEGLTexture();
147 bool m_eglFunctionsResolved =
false;
148 EGLImageKHR m_image = EGL_NO_IMAGE_KHR;
149 QFunctionPointer m_eglCreateImageKHR;
150 QFunctionPointer m_eglDestroyImageKHR;
151 QFunctionPointer m_glEGLImageTargetTexture2DOES;