summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2016-09-06 12:12:18 +0200
committerMarc Mutz <marc.mutz@kdab.com>2016-09-07 12:43:45 +0000
commit179fdc13c95198053c355182dae34fc554de320d (patch)
tree0efa61866845a053818501ea9d14229e28ba6d99
parent1502c59a4e0dde8c5c27ccbe3ff2d6073c77e17a (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.conf2
-rw-r--r--src/imports/qtcanvas3d/context3d.cpp10
-rw-r--r--src/imports/qtcanvas3d/glcommandqueue.cpp9
-rw-r--r--src/imports/qtcanvas3d/glcommandqueue_p.h9
-rw-r--r--src/imports/qtcanvas3d/teximage3d.cpp3
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;