diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2016-09-06 12:12:18 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2016-09-07 12:43:45 +0000 |
commit | 179fdc13c95198053c355182dae34fc554de320d (patch) | |
tree | 0efa61866845a053818501ea9d14229e28ba6d99 | |
parent | 1502c59a4e0dde8c5c27ccbe3ff2d6073c77e17a (diff) |
Eradicate Q_FOREACH loops and mark the module as Q_FOREACH-free
In CanvasContext::setContextLostState(), ported from iterating
over keys() to iterating over the container itself. This seems
to be pretty safe, as it doesn't look like there's recursing
into the CanvasContext happening.
In CanvasGlCommandQueue::getCanvasId(), replaced a convoluted
loop with QMap::key(value, default) (required implementing the
equality relational operators for GlResource).
In ~StaticFactoryMapDeleter(), replaced the Q_FOREACH with a
call to qDeleteAll().
Change-Id: I9b849cce6e8ff48b746c682895b00e0d5982bacb
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
-rw-r--r-- | .qmake.conf | 2 | ||||
-rw-r--r-- | src/imports/qtcanvas3d/context3d.cpp | 10 | ||||
-rw-r--r-- | src/imports/qtcanvas3d/glcommandqueue.cpp | 9 | ||||
-rw-r--r-- | src/imports/qtcanvas3d/glcommandqueue_p.h | 9 | ||||
-rw-r--r-- | src/imports/qtcanvas3d/teximage3d.cpp | 3 |
5 files changed, 18 insertions, 15 deletions
diff --git a/.qmake.conf b/.qmake.conf index 27b205b..391f6bf 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -1,5 +1,7 @@ load(qt_build_config) +DEFINES += QT_NO_FOREACH + MODULE_VERSION = 5.8.0 CMAKE_MODULE_TESTS=- diff --git a/src/imports/qtcanvas3d/context3d.cpp b/src/imports/qtcanvas3d/context3d.cpp index ec063ce..7e24c32 100644 --- a/src/imports/qtcanvas3d/context3d.cpp +++ b/src/imports/qtcanvas3d/context3d.cpp @@ -128,8 +128,8 @@ CanvasContext::~CanvasContext() EnumToStringMap::deleteInstance(); // Cleanup quick item textures to avoid crash when parent gets deleted before children - QList<CanvasTexture *> quickItemTextures = m_quickItemToTextureMap.values(); - foreach (CanvasTexture *texture, quickItemTextures) + const QList<CanvasTexture *> quickItemTextures = m_quickItemToTextureMap.values(); + for (CanvasTexture *texture : quickItemTextures) texture->del(); } @@ -6123,9 +6123,9 @@ void CanvasContext::setContextLostState(bool lost) m_error = CANVAS_NO_ERRORS; if (lost) { - foreach (CanvasAbstractObject *jsObj, m_validObjectMap.keys()) { - jsObj->setInvalidated(true); - disconnect(jsObj, &QObject::destroyed, this, &CanvasContext::handleObjectDeletion); + for (auto it = m_validObjectMap.cbegin(), end = m_validObjectMap.cend(); it != end; ++it) { + it.key()->setInvalidated(true); + disconnect(it.key(), &QObject::destroyed, this, &CanvasContext::handleObjectDeletion); } m_validObjectMap.clear(); m_quickItemToTextureMap.clear(); diff --git a/src/imports/qtcanvas3d/glcommandqueue.cpp b/src/imports/qtcanvas3d/glcommandqueue.cpp index cef1e86..0a23aae 100644 --- a/src/imports/qtcanvas3d/glcommandqueue.cpp +++ b/src/imports/qtcanvas3d/glcommandqueue.cpp @@ -303,14 +303,7 @@ GLint CanvasGlCommandQueue::getCanvasId(GLuint glId, GlCommandId type) QMutexLocker locker(&m_resourceMutex); - QList<GLint> keyList = m_resourceIdMap.keys(); - foreach (GLint canvasId, keyList) { - GlResource value = m_resourceIdMap.value(canvasId); - if (value.glId == glId && value.commandId == type) - return canvasId; - } - - return 0; + return m_resourceIdMap.key(GlResource(glId, type), 0); } void CanvasGlCommandQueue::setShaderToMap(GLint id, QOpenGLShader *shader) diff --git a/src/imports/qtcanvas3d/glcommandqueue_p.h b/src/imports/qtcanvas3d/glcommandqueue_p.h index 0858382..1c29009 100644 --- a/src/imports/qtcanvas3d/glcommandqueue_p.h +++ b/src/imports/qtcanvas3d/glcommandqueue_p.h @@ -319,6 +319,15 @@ private: GLbitfield m_clearMask; }; +inline bool operator==(CanvasGlCommandQueue::GlResource lhs, CanvasGlCommandQueue::GlResource rhs) Q_DECL_NOTHROW +{ + return lhs.glId == rhs.glId && lhs.commandId == rhs.commandId; +} +inline bool operator!=(CanvasGlCommandQueue::GlResource lhs, CanvasGlCommandQueue::GlResource rhs) Q_DECL_NOTHROW +{ + return !operator==(lhs, rhs); +} + class GlCommand { public: diff --git a/src/imports/qtcanvas3d/teximage3d.cpp b/src/imports/qtcanvas3d/teximage3d.cpp index 402313e..d3e1e07 100644 --- a/src/imports/qtcanvas3d/teximage3d.cpp +++ b/src/imports/qtcanvas3d/teximage3d.cpp @@ -55,8 +55,7 @@ class StaticFactoryMapDeleter public: StaticFactoryMapDeleter() {} ~StaticFactoryMapDeleter() { - foreach (CanvasTextureImageFactory *factory, m_qmlEngineToImageFactoryMap) - delete factory; + qDeleteAll(m_qmlEngineToImageFactoryMap); } }; static StaticFactoryMapDeleter staticFactoryMapDeleter; |