diff options
Diffstat (limited to 'src/gui/opengl/qopengltexture.cpp')
-rw-r--r-- | src/gui/opengl/qopengltexture.cpp | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/src/gui/opengl/qopengltexture.cpp b/src/gui/opengl/qopengltexture.cpp index 766d4a327a..3563f1b5d3 100644 --- a/src/gui/opengl/qopengltexture.cpp +++ b/src/gui/opengl/qopengltexture.cpp @@ -43,6 +43,7 @@ #include "qopenglfunctions.h" #include <QtGui/qcolor.h> #include <QtGui/qopenglcontext.h> +#include <QtCore/qdebug.h> #include <private/qobject_p.h> #include <private/qopenglcontext_p.h> @@ -190,11 +191,20 @@ void QOpenGLTexturePrivate::destroy() return; } QOpenGLContext *currentContext = QOpenGLContext::currentContext(); - if (!currentContext || !QOpenGLContext::areSharing(currentContext, context)) { - qWarning("Texture is not valid in the current context.\n" + if (!currentContext) { + qWarning("QOpenGLTexturePrivate::destroy() called without a current context.\n" "Texture has not been destroyed"); return; } + if (!QOpenGLContext::areSharing(currentContext, context)) { + + qWarning("QOpenGLTexturePrivate::destroy() called but texture context %p" + " is not shared with current context %p.\n" + "Texture has not been destroyed", + static_cast<const void *>(context), + static_cast<const void *>(currentContext)); + return; + } functions->glDeleteTextures(1, &textureId); @@ -4661,4 +4671,40 @@ float QOpenGLTexture::levelofDetailBias() const return d->levelOfDetailBias; } +#ifndef QT_NO_DEBUG_STREAM +QDebug operator<<(QDebug debug, const QOpenGLTexture *t) +{ + QDebugStateSaver saver(debug); + debug.nospace(); + debug << "QOpenGLTexture("; + if (t) { + const QOpenGLTexturePrivate *d = t->d_ptr.data(); + debug << d->target << ", bindingTarget=" << d->bindingTarget + << ", size=[" << d->dimensions[0] + << ", " << d->dimensions[1]; + if (d->target == QOpenGLTexture::Target3D) + debug << ", " << d->dimensions[2]; + debug << "], format=" << d->format << ", formatClass=" << d->formatClass; + if (t->isCreated()) + debug << ", textureId=" << d->textureId; + if (t->isBound()) + debug << ", [bound]"; + if (t->isTextureView()) + debug << ", [view]"; + if (d->fixedSamplePositions) + debug << ", [fixedSamplePositions]"; + debug << ", mipLevels=" << d->requestedMipLevels << ", layers=" << d->layers + << ", faces=" << d->faces << ", samples=" << d->samples + << ", depthStencilMode=" << d->depthStencilMode << ", comparisonFunction=" + << d->comparisonFunction << ", comparisonMode=" << d->comparisonMode + << ", features=" << d->features << ", minificationFilter=" << d->minFilter + << ", magnificationFilter=" << d->magFilter << ", wrapMode=" << d->wrapModes[0]; + } else { + debug << '0'; + } + debug << ')'; + return debug; +} +#endif // QT_NO_DEBUG_STREAM + QT_END_NAMESPACE |