qplatformbackingstore.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/gui/painting/qplatformbackingstore.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6class QPlatformBackingStorePrivate-
7{-
8public:-
9 QPlatformBackingStorePrivate(QWindow *w)-
10 : window(w)-
11-
12 , textureId(0)-
13 , blitter(0)-
14-
15 {-
16 }
never executed: end of block
0
17-
18 ~QPlatformBackingStorePrivate()-
19 {-
20-
21 QOpenGLContext *ctx = QOpenGLContext::currentContext();-
22 if (ctx
ctxDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
23 if (textureId
textureIdDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
24 ctx->functions()->glDeleteTextures(1, &textureId);
never executed: ctx->functions()->glDeleteTextures(1, &textureId);
0
25 if (blitter
blitterDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
26 blitter->destroy();
never executed: blitter->destroy();
0
27 }
never executed: end of block
else if (textureId
textureIdDescription
TRUEnever evaluated
FALSEnever evaluated
|| blitter
blitterDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
28 QMessageLogger(__FILE__, 91, __PRETTY_FUNCTION__).warning("No context current during QPlatformBackingStore destruction, OpenGL resources not released");-
29 }
never executed: end of block
0
30 delete blitter;-
31-
32 }
never executed: end of block
0
33 QWindow *window;-
34-
35 mutable GLuint textureId;-
36 mutable QSize textureSize;-
37 mutable bool needsSwizzle;-
38 mutable bool premultiplied;-
39 QOpenGLTextureBlitter *blitter;-
40-
41};-
42-
43-
44-
45struct QBackingstoreTextureInfo-
46{-
47 void *source;-
48 GLuint textureId;-
49 QRect rect;-
50 QRect clipRect;-
51 QPlatformTextureList::Flags flags;-
52};-
53-
54template<> class QTypeInfo<QBackingstoreTextureInfo > { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isRelocatable = !isStatic || ((Q_MOVABLE_TYPE) & Q_RELOCATABLE_TYPE), isLarge = (sizeof(QBackingstoreTextureInfo)>sizeof(void*)), isPointer = false, isIntegral = QtPrivate::is_integral< QBackingstoreTextureInfo >::value, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0), sizeOf = sizeof(QBackingstoreTextureInfo) }; static inline const char *name() { return "QBackingstoreTextureInfo"; } };-
55-
56class QPlatformTextureListPrivate : public QObjectPrivate-
57{-
58public:-
59 QPlatformTextureListPrivate()-
60 : locked(false)-
61 {-
62 }
never executed: end of block
0
63-
64 QVector<QBackingstoreTextureInfo> textures;-
65 bool locked;-
66};-
67-
68QPlatformTextureList::QPlatformTextureList(QObject *parent)-
69: QObject(*new QPlatformTextureListPrivate, parent)-
70{-
71}
never executed: end of block
0
72-
73QPlatformTextureList::~QPlatformTextureList()-
74{-
75}-
76-
77int QPlatformTextureList::count() const-
78{-
79 const QPlatformTextureListPrivate * const d = d_func();-
80 return
never executed: return d->textures.count();
d->textures.count();
never executed: return d->textures.count();
0
81}-
82-
83GLuint QPlatformTextureList::textureId(int index) const-
84{-
85 const QPlatformTextureListPrivate * const d = d_func();-
86 return
never executed: return d->textures.at(index).textureId;
d->textures.at(index).textureId;
never executed: return d->textures.at(index).textureId;
0
87}-
88-
89void *QPlatformTextureList::source(int index)-
90{-
91 const QPlatformTextureListPrivate * const d = d_func();-
92 return
never executed: return d->textures.at(index).source;
d->textures.at(index).source;
never executed: return d->textures.at(index).source;
0
93}-
94-
95QPlatformTextureList::Flags QPlatformTextureList::flags(int index) const-
96{-
97 const QPlatformTextureListPrivate * const d = d_func();-
98 return
never executed: return d->textures.at(index).flags;
d->textures.at(index).flags;
never executed: return d->textures.at(index).flags;
0
99}-
100-
101QRect QPlatformTextureList::geometry(int index) const-
102{-
103 const QPlatformTextureListPrivate * const d = d_func();-
104 return
never executed: return d->textures.at(index).rect;
d->textures.at(index).rect;
never executed: return d->textures.at(index).rect;
0
105}-
106-
107QRect QPlatformTextureList::clipRect(int index) const-
108{-
109 const QPlatformTextureListPrivate * const d = d_func();-
110 return
never executed: return d->textures.at(index).clipRect;
d->textures.at(index).clipRect;
never executed: return d->textures.at(index).clipRect;
0
111}-
112-
113void QPlatformTextureList::lock(bool on)-
114{-
115 QPlatformTextureListPrivate * const d = d_func();-
116 if (on != d->locked
on != d->lockedDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
117 d->locked = on;-
118 locked(on);-
119 }
never executed: end of block
0
120}
never executed: end of block
0
121-
122bool QPlatformTextureList::isLocked() const-
123{-
124 const QPlatformTextureListPrivate * const d = d_func();-
125 return
never executed: return d->locked;
d->locked;
never executed: return d->locked;
0
126}-
127-
128void QPlatformTextureList::appendTexture(void *source, GLuint textureId, const QRect &geometry,-
129 const QRect &clipRect, Flags flags)-
130{-
131 QPlatformTextureListPrivate * const d = d_func();-
132 QBackingstoreTextureInfo bi;-
133 bi.source = source;-
134 bi.textureId = textureId;-
135 bi.rect = geometry;-
136 bi.clipRect = clipRect;-
137 bi.flags = flags;-
138 d->textures.append(bi);-
139}
never executed: end of block
0
140-
141void QPlatformTextureList::clear()-
142{-
143 QPlatformTextureListPrivate * const d = d_func();-
144 d->textures.clear();-
145}
never executed: end of block
0
146static inline QRect deviceRect(const QRect &rect, QWindow *window)-
147{-
148 QRect deviceRect(rect.topLeft() * window->devicePixelRatio(),-
149 rect.size() * window->devicePixelRatio());-
150 return
never executed: return deviceRect;
deviceRect;
never executed: return deviceRect;
0
151}-
152-
153static inline QPoint deviceOffset(const QPoint &pt, QWindow *window)-
154{-
155 return
never executed: return pt * window->devicePixelRatio();
pt * window->devicePixelRatio();
never executed: return pt * window->devicePixelRatio();
0
156}-
157-
158static QRegion deviceRegion(const QRegion &region, QWindow *window, const QPoint &offset)-
159{-
160 if (offset.isNull()
offset.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
&& window->devicePixelRatio() <= 1
window->device...elRatio() <= 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
161 return
never executed: return region;
region;
never executed: return region;
0
162-
163 QVector<QRect> rects;-
164 const QVector<QRect> regionRects = region.rects();-
165 rects.reserve(regionRects.count());-
166 for (QForeachContainer<typename QtPrivate::remove_reference<decltype(regionRects)>::type> _container_((regionRects)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (const QRect &rect = *_container_.i; _container_.control; _container_.control = 0)-
167 rects.append(deviceRect(rect.translated(offset), window));
never executed: rects.append(deviceRect(rect.translated(offset), window));
0
168-
169 QRegion deviceRegion;-
170 deviceRegion.setRects(rects.constData(), rects.count());-
171 return
never executed: return deviceRegion;
deviceRegion;
never executed: return deviceRegion;
0
172}-
173-
174static inline QRect toBottomLeftRect(const QRect &topLeftRect, int windowHeight)-
175{-
176 return
never executed: return QRect(topLeftRect.x(), windowHeight - topLeftRect.bottomRight().y() - 1, topLeftRect.width(), topLeftRect.height());
QRect(topLeftRect.x(), windowHeight - topLeftRect.bottomRight().y() - 1,
never executed: return QRect(topLeftRect.x(), windowHeight - topLeftRect.bottomRight().y() - 1, topLeftRect.width(), topLeftRect.height());
0
177 topLeftRect.width(), topLeftRect.height());
never executed: return QRect(topLeftRect.x(), windowHeight - topLeftRect.bottomRight().y() - 1, topLeftRect.width(), topLeftRect.height());
0
178}-
179-
180static void blitTextureForWidget(const QPlatformTextureList *textures, int idx, QWindow *window, const QRect &deviceWindowRect,-
181 QOpenGLTextureBlitter *blitter, const QPoint &offset)-
182{-
183 const QRect clipRect = textures->clipRect(idx);-
184 if (clipRect.isEmpty()
clipRect.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
185 return;
never executed: return;
0
186-
187 QRect rectInWindow = textures->geometry(idx);-
188-
189 rectInWindow.translate(-offset);-
190-
191 const QRect clippedRectInWindow = rectInWindow & clipRect.translated(rectInWindow.topLeft());-
192 const QRect srcRect = toBottomLeftRect(clipRect, rectInWindow.height());-
193-
194 const QMatrix4x4 target = QOpenGLTextureBlitter::targetTransform(deviceRect(clippedRectInWindow, window),-
195 deviceWindowRect);-
196-
197 const QMatrix3x3 source = QOpenGLTextureBlitter::sourceTransform(deviceRect(srcRect, window),-
198 deviceRect(rectInWindow, window).size(),-
199 QOpenGLTextureBlitter::OriginBottomLeft);-
200-
201 blitter->blit(textures->textureId(idx), target, source);-
202}
never executed: end of block
0
203void QPlatformBackingStore::composeAndFlush(QWindow *window, const QRegion &region,-
204 const QPoint &offset,-
205 QPlatformTextureList *textures, QOpenGLContext *context,-
206 bool translucentBackground)-
207{-
208 if (!qt_window_private(window)->receivedExpose
!qt_window_pri...receivedExposeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
209 return;
never executed: return;
0
210-
211 if (!context->makeCurrent(window)
!context->makeCurrent(window)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
212 QMessageLogger(__FILE__, 315, __PRETTY_FUNCTION__).warning("composeAndFlush: makeCurrent() failed");-
213 return;
never executed: return;
0
214 }-
215-
216 QWindowPrivate::get(window)->lastComposeTime.start();-
217-
218 QOpenGLFunctions *funcs = context->functions();-
219 funcs->glViewport(0, 0, window->width() * window->devicePixelRatio(), window->height() * window->devicePixelRatio());-
220 funcs->glClearColor(0, 0, 0, translucentBackground ? 0 : 1);-
221 funcs->glClear(0x00004000);-
222-
223 if (!d_ptr->blitter
!d_ptr->blitterDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
224 d_ptr->blitter = new QOpenGLTextureBlitter;-
225 d_ptr->blitter->create();-
226 }
never executed: end of block
0
227-
228 d_ptr->blitter->bind();-
229-
230 const QRect deviceWindowRect = deviceRect(QRect(QPoint(), window->size()), window);-
231 const QPoint deviceWindowOffset = deviceOffset(offset, window);-
232-
233-
234 for (int i = 0; i < textures->count()
i < textures->count()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
235 if (!textures->flags(i).testFlag(QPlatformTextureList::StacksOnTop)
!textures->fla...::StacksOnTop)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
236 blitTextureForWidget(textures, i, window, deviceWindowRect, d_ptr->blitter, offset);
never executed: blitTextureForWidget(textures, i, window, deviceWindowRect, d_ptr->blitter, offset);
0
237 }
never executed: end of block
0
238-
239-
240 GLuint textureId = 0;-
241 QOpenGLTextureBlitter::Origin origin = QOpenGLTextureBlitter::OriginTopLeft;-
242 if (QPlatformGraphicsBuffer *graphicsBuffer = this->graphicsBuffer()
QPlatformGraph...aphicsBuffer()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
243 if (graphicsBuffer->size() != d_ptr->textureSize
graphicsBuffer...r->textureSizeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
244 if (d_ptr->textureId
d_ptr->textureIdDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
245 funcs->glDeleteTextures(1, &d_ptr->textureId);
never executed: funcs->glDeleteTextures(1, &d_ptr->textureId);
0
246 funcs->glGenTextures(1, &d_ptr->textureId);-
247 funcs->glBindTexture(0x0DE1, d_ptr->textureId);-
248 QOpenGLContext *ctx = QOpenGLContext::currentContext();-
249 if (!ctx->isOpenGLES()
!ctx->isOpenGLES()Description
TRUEnever evaluated
FALSEnever evaluated
|| ctx->format().majorVersion() >= 3
ctx->format()....Version() >= 3Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
250 funcs->glTexParameteri(0x0DE1, 0x813C, 0);-
251 funcs->glTexParameteri(0x0DE1, 0x813D, 0);-
252 }
never executed: end of block
0
253 funcs->glTexParameterf(0x0DE1, 0x2801, 0x2600);-
254 funcs->glTexParameterf(0x0DE1, 0x2800, 0x2600);-
255 funcs->glTexParameterf(0x0DE1, 0x2802, 0x812F);-
256 funcs->glTexParameterf(0x0DE1, 0x2803, 0x812F);-
257-
258 if (QPlatformGraphicsBufferHelper::lockAndBindToTexture(graphicsBuffer, &d_ptr->needsSwizzle, &d_ptr->premultiplied)
QPlatformGraph...premultiplied)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
259 d_ptr->textureSize = graphicsBuffer->size();-
260 }
never executed: end of block
else {
0
261 d_ptr->textureSize = QSize(0,0);-
262 }
never executed: end of block
0
263-
264 graphicsBuffer->unlock();-
265 }
never executed: end of block
else if (!region.isEmpty()
!region.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
){
0
266 funcs->glBindTexture(0x0DE1, d_ptr->textureId);-
267 QPlatformGraphicsBufferHelper::lockAndBindToTexture(graphicsBuffer, &d_ptr->needsSwizzle, &d_ptr->premultiplied);-
268 }
never executed: end of block
0
269-
270 if (graphicsBuffer->origin() == QPlatformGraphicsBuffer::OriginBottomLeft
graphicsBuffer...iginBottomLeftDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
271 origin = QOpenGLTextureBlitter::OriginBottomLeft;
never executed: origin = QOpenGLTextureBlitter::OriginBottomLeft;
0
272 textureId = d_ptr->textureId;-
273 }
never executed: end of block
else {
0
274 TextureFlags flags = 0;-
275 textureId = toTexture(deviceRegion(region, window, offset), &d_ptr->textureSize, &flags);-
276 d_ptr->needsSwizzle = (flags & TextureSwizzle) != 0;-
277 d_ptr->premultiplied = (flags & TexturePremultiplied) != 0;-
278 if (flags & TextureFlip
flags & TextureFlipDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
279 origin = QOpenGLTextureBlitter::OriginBottomLeft;
never executed: origin = QOpenGLTextureBlitter::OriginBottomLeft;
0
280 }
never executed: end of block
0
281-
282 funcs->glEnable(0x0BE2);-
283 if (d_ptr->premultiplied
d_ptr->premultipliedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
284 funcs->glBlendFuncSeparate(1, 0x0303, 1, 1);
never executed: funcs->glBlendFuncSeparate(1, 0x0303, 1, 1);
0
285 else-
286 funcs->glBlendFuncSeparate(0x0302, 0x0303, 1, 1);
never executed: funcs->glBlendFuncSeparate(0x0302, 0x0303, 1, 1);
0
287-
288 if (textureId
textureIdDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
289 if (d_ptr->needsSwizzle
d_ptr->needsSwizzleDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
290 d_ptr->blitter->setSwizzleRB(true);
never executed: d_ptr->blitter->setSwizzleRB(true);
0
291-
292-
293 const QRect srcRect = toBottomLeftRect(deviceWindowRect.translated(deviceWindowOffset), d_ptr->textureSize.height());-
294 const QMatrix3x3 source = QOpenGLTextureBlitter::sourceTransform(srcRect,-
295 d_ptr->textureSize,-
296 origin);-
297 d_ptr->blitter->blit(textureId, QMatrix4x4(), source);-
298 if (d_ptr->needsSwizzle
d_ptr->needsSwizzleDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
299 d_ptr->blitter->setSwizzleRB(false);
never executed: d_ptr->blitter->setSwizzleRB(false);
0
300 }
never executed: end of block
0
301-
302-
303 for (int i = 0; i < textures->count()
i < textures->count()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
304 if (textures->flags(i).testFlag(QPlatformTextureList::StacksOnTop)
textures->flag...::StacksOnTop)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
305 blitTextureForWidget(textures, i, window, deviceWindowRect, d_ptr->blitter, offset);
never executed: blitTextureForWidget(textures, i, window, deviceWindowRect, d_ptr->blitter, offset);
0
306 }
never executed: end of block
0
307-
308 funcs->glDisable(0x0BE2);-
309 d_ptr->blitter->release();-
310-
311 context->swapBuffers(window);-
312}
never executed: end of block
0
313QImage QPlatformBackingStore::toImage() const-
314{-
315 return
never executed: return QImage();
QImage();
never executed: return QImage();
0
316}-
317GLuint QPlatformBackingStore::toTexture(const QRegion &dirtyRegion, QSize *textureSize, TextureFlags *flags) const-
318{-
319 ((!(textureSize)) ? qt_assert("textureSize",__FILE__,460) : qt_noop());-
320 ((!(flags)) ? qt_assert("flags",__FILE__,461) : qt_noop());-
321-
322 QImage image = toImage();-
323 QSize imageSize = image.size();-
324-
325 QOpenGLContext *ctx = QOpenGLContext::currentContext();-
326 GLenum internalFormat = 0x1908;-
327 GLuint pixelType = 0x1401;-
328-
329 bool needsConversion = false;-
330 *flags = 0;-
331 switch (image.format()) {-
332 case
never executed: case QImage::Format_ARGB32_Premultiplied:
QImage::Format_ARGB32_Premultiplied:
never executed: case QImage::Format_ARGB32_Premultiplied:
0
333 *flags |= TexturePremultiplied;-
334-
335 case
never executed: case QImage::Format_RGB32:
QImage::Format_RGB32:
never executed: case QImage::Format_RGB32:
code before this statement never executed: case QImage::Format_RGB32:
0
336 case
never executed: case QImage::Format_ARGB32:
QImage::Format_ARGB32:
never executed: case QImage::Format_ARGB32:
0
337 *flags |= TextureSwizzle;-
338 break;
never executed: break;
0
339 case
never executed: case QImage::Format_RGBA8888_Premultiplied:
QImage::Format_RGBA8888_Premultiplied:
never executed: case QImage::Format_RGBA8888_Premultiplied:
0
340 *flags |= TexturePremultiplied;-
341-
342 case
never executed: case QImage::Format_RGBX8888:
QImage::Format_RGBX8888:
never executed: case QImage::Format_RGBX8888:
code before this statement never executed: case QImage::Format_RGBX8888:
0
343 case
never executed: case QImage::Format_RGBA8888:
QImage::Format_RGBA8888:
never executed: case QImage::Format_RGBA8888:
0
344 break;
never executed: break;
0
345 case
never executed: case QImage::Format_BGR30:
QImage::Format_BGR30:
never executed: case QImage::Format_BGR30:
0
346 case
never executed: case QImage::Format_A2BGR30_Premultiplied:
QImage::Format_A2BGR30_Premultiplied:
never executed: case QImage::Format_A2BGR30_Premultiplied:
0
347 if (!ctx->isOpenGLES()
!ctx->isOpenGLES()Description
TRUEnever evaluated
FALSEnever evaluated
|| ctx->format().majorVersion() >= 3
ctx->format()....Version() >= 3Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
348 pixelType = 0x8368;-
349 internalFormat = 0x8059;-
350 *flags |= TexturePremultiplied;-
351 }
never executed: end of block
else {
0
352 needsConversion = true;-
353 }
never executed: end of block
0
354 break;
never executed: break;
0
355 case
never executed: case QImage::Format_RGB30:
QImage::Format_RGB30:
never executed: case QImage::Format_RGB30:
0
356 case
never executed: case QImage::Format_A2RGB30_Premultiplied:
QImage::Format_A2RGB30_Premultiplied:
never executed: case QImage::Format_A2RGB30_Premultiplied:
0
357 if (!ctx->isOpenGLES()
!ctx->isOpenGLES()Description
TRUEnever evaluated
FALSEnever evaluated
|| ctx->format().majorVersion() >= 3
ctx->format()....Version() >= 3Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
358 pixelType = 0x8368;-
359 internalFormat = 0x8059;-
360 *flags |= TextureSwizzle | TexturePremultiplied;-
361 }
never executed: end of block
else {
0
362 needsConversion = true;-
363 }
never executed: end of block
0
364 break;
never executed: break;
0
365 default
never executed: default:
:
never executed: default:
0
366 needsConversion = true;-
367 break;
never executed: break;
0
368 }-
369 if (imageSize.isEmpty()
imageSize.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
370 *textureSize = imageSize;-
371 return
never executed: return 0;
0;
never executed: return 0;
0
372 }-
373-
374-
375-
376 bool resized = *textureSize != imageSize;-
377 if (dirtyRegion.isEmpty()
dirtyRegion.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
&& !resized
!resizedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
378 return
never executed: return d_ptr->textureId;
d_ptr->textureId;
never executed: return d_ptr->textureId;
0
379-
380 *textureSize = imageSize;-
381-
382 if (needsConversion
needsConversionDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
383 image = image.convertToFormat(QImage::Format_RGBA8888);
never executed: image = image.convertToFormat(QImage::Format_RGBA8888);
0
384-
385-
386-
387 static const int bytesPerPixel = 4;-
388 const int strideInPixels = image.bytesPerLine() / bytesPerPixel;-
389 const bool hasUnpackRowLength = !ctx->isOpenGLES()
!ctx->isOpenGLES()Description
TRUEnever evaluated
FALSEnever evaluated
|| ctx->format().majorVersion() >= 3
ctx->format()....Version() >= 3Description
TRUEnever evaluated
FALSEnever evaluated
;
0
390-
391 QOpenGLFunctions *funcs = ctx->functions();-
392-
393 if (hasUnpackRowLength
hasUnpackRowLengthDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
394 funcs->glPixelStorei(0x0CF2, strideInPixels);-
395 }
never executed: end of block
else if (strideInPixels != image.width()
strideInPixels... image.width()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
396-
397-
398-
399 image = image.copy();-
400 }
never executed: end of block
0
401-
402 if (resized
resizedDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
403 if (d_ptr->textureId
d_ptr->textureIdDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
404 funcs->glDeleteTextures(1, &d_ptr->textureId);
never executed: funcs->glDeleteTextures(1, &d_ptr->textureId);
0
405 funcs->glGenTextures(1, &d_ptr->textureId);-
406 funcs->glBindTexture(0x0DE1, d_ptr->textureId);-
407 if (!ctx->isOpenGLES()
!ctx->isOpenGLES()Description
TRUEnever evaluated
FALSEnever evaluated
|| ctx->format().majorVersion() >= 3
ctx->format()....Version() >= 3Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
408 funcs->glTexParameteri(0x0DE1, 0x813C, 0);-
409 funcs->glTexParameteri(0x0DE1, 0x813D, 0);-
410 }
never executed: end of block
0
411 funcs->glTexParameterf(0x0DE1, 0x2801, 0x2600);-
412 funcs->glTexParameterf(0x0DE1, 0x2800, 0x2600);-
413 funcs->glTexParameterf(0x0DE1, 0x2802, 0x812F);-
414 funcs->glTexParameterf(0x0DE1, 0x2803, 0x812F);-
415-
416 funcs->glTexImage2D(0x0DE1, 0, internalFormat, imageSize.width(), imageSize.height(), 0, 0x1908, pixelType,-
417 const_cast<uchar*>(image.constBits()));-
418 }
never executed: end of block
else {
0
419 funcs->glBindTexture(0x0DE1, d_ptr->textureId);-
420 QRect imageRect = image.rect();-
421 QRect rect = dirtyRegion.boundingRect() & imageRect;-
422-
423 if (hasUnpackRowLength
hasUnpackRowLengthDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
424 funcs->glTexSubImage2D(0x0DE1, 0, rect.x(), rect.y(), rect.width(), rect.height(), 0x1908, pixelType,-
425 image.constScanLine(rect.y()) + rect.x() * bytesPerPixel);-
426 }
never executed: end of block
else {
0
427-
428-
429 if (rect.width() >= imageRect.width() / 2
rect.width() >...ct.width() / 2Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
430 rect.setX(0);-
431 rect.setWidth(imageRect.width());-
432 }
never executed: end of block
0
433-
434-
435-
436-
437 if (rect.width() == imageRect.width()
rect.width() =...geRect.width()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
438 funcs->glTexSubImage2D(0x0DE1, 0, 0, rect.y(), rect.width(), rect.height(), 0x1908, pixelType,-
439 image.constScanLine(rect.y()));-
440 }
never executed: end of block
else {
0
441 funcs->glTexSubImage2D(0x0DE1, 0, rect.x(), rect.y(), rect.width(), rect.height(), 0x1908, pixelType,-
442 image.copy(rect).constBits());-
443 }
never executed: end of block
0
444 }-
445 }-
446-
447 if (hasUnpackRowLength
hasUnpackRowLengthDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
448 funcs->glPixelStorei(0x0CF2, 0);
never executed: funcs->glPixelStorei(0x0CF2, 0);
0
449-
450 return
never executed: return d_ptr->textureId;
d_ptr->textureId;
never executed: return d_ptr->textureId;
0
451}-
452QPlatformBackingStore::QPlatformBackingStore(QWindow *window)-
453 : d_ptr(new QPlatformBackingStorePrivate(window))-
454{-
455}
never executed: end of block
0
456-
457-
458-
459-
460QPlatformBackingStore::~QPlatformBackingStore()-
461{-
462 delete d_ptr;-
463}
never executed: end of block
0
464-
465-
466-
467-
468-
469QWindow* QPlatformBackingStore::window() const-
470{-
471 return
never executed: return d_ptr->window;
d_ptr->window;
never executed: return d_ptr->window;
0
472}-
473void QPlatformBackingStore::beginPaint(const QRegion &)-
474{-
475}-
476-
477-
478-
479-
480-
481-
482-
483void QPlatformBackingStore::endPaint()-
484{-
485}-
486-
487-
488-
489-
490QPlatformGraphicsBuffer *QPlatformBackingStore::graphicsBuffer() const-
491{-
492 return
never executed: return nullptr;
nullptr;
never executed: return nullptr;
0
493}-
494-
495-
496-
497-
498-
499-
500-
501bool QPlatformBackingStore::scroll(const QRegion &area, int dx, int dy)-
502{-
503 (void)area;;-
504 (void)dx;;-
505 (void)dy;;-
506-
507 return
never executed: return false;
false;
never executed: return false;
0
508}-
509-
510-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9