diff options
author | Sona Kurazyan <sona.kurazyan@qt.io> | 2019-07-30 09:39:00 +0200 |
---|---|---|
committer | Sona Kurazyan <sona.kurazyan@qt.io> | 2019-08-01 14:30:53 +0000 |
commit | 55a0fe4539e2a9ac934bb02cdb935389a26f74ad (patch) | |
tree | 865656c8e8ccb1f938bb70c7980926e3d0d74a1c /src/quick/items | |
parent | 4bac72aa13e6818460f6b71127d3af5bd7e00ca5 (diff) |
Remove usages of deprecated QSignalMapper
The code using QSignalMapper relies on dynamic property inspection,
and therefore can't use the lambda syntax for capturing the int value.
Since there is only one sender object, replace QSignalMapper with a
simpler mapper class, which emits the mapped signal by passing the
saved member value.
Task-number: QTBUG-76491
Change-Id: I6e8e527b1a92d39a1711d85c203df704c293d294
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src/quick/items')
-rw-r--r-- | src/quick/items/qquickgenericshadereffect.cpp | 31 | ||||
-rw-r--r-- | src/quick/items/qquickgenericshadereffect_p.h | 4 |
2 files changed, 23 insertions, 12 deletions
diff --git a/src/quick/items/qquickgenericshadereffect.cpp b/src/quick/items/qquickgenericshadereffect.cpp index 1d71555849..df61ee853d 100644 --- a/src/quick/items/qquickgenericshadereffect.cpp +++ b/src/quick/items/qquickgenericshadereffect.cpp @@ -40,10 +40,27 @@ #include <private/qquickgenericshadereffect_p.h> #include <private/qquickwindow_p.h> #include <private/qquickitem_p.h> -#include <QSignalMapper> QT_BEGIN_NAMESPACE +namespace { +class IntSignalMapper : public QObject +{ + Q_OBJECT + + int value; +public: + explicit IntSignalMapper(int v) + : QObject(nullptr), value(v) {} + +public Q_SLOTS: + void map() { emit mapped(value); } + +Q_SIGNALS: + void mapped(int); +}; +} // unnamed namespace + // The generic shader effect is used whenever on the RHI code path, or when the // scenegraph backend indicates SupportsShaderEffectNode. This, unlike the // monolithic and interconnected (e.g. with particles) OpenGL variant, passes @@ -547,15 +564,10 @@ void QQuickGenericShaderEffect::updateShaderVars(Shader shaderType) if (!mp.hasNotifySignal()) qWarning("ShaderEffect: property '%s' does not have notification method", v.name.constData()); - // Have a QSignalMapper that emits mapped() with an index+type on each property change notify signal. + // Have a IntSignalMapper that emits mapped() with an index+type on each property change notify signal. auto &sm(m_signalMappers[shaderType][i]); - if (!sm.mapper) { -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED - sm.mapper = new QSignalMapper; -QT_WARNING_POP - sm.mapper->setMapping(m_item, i | (shaderType << 16)); - } + if (!sm.mapper) + sm.mapper = new IntSignalMapper(i | (shaderType << 16)); sm.active = true; const QByteArray signalName = '2' + mp.notifySignal().methodSignature(); QObject::connect(m_item, signalName, sm.mapper, SLOT(map())); @@ -665,3 +677,4 @@ void QQuickGenericShaderEffect::markGeometryDirtyAndUpdateIfSupportsAtlas() QT_END_NAMESPACE #include "moc_qquickgenericshadereffect_p.cpp" +#include "qquickgenericshadereffect.moc" diff --git a/src/quick/items/qquickgenericshadereffect_p.h b/src/quick/items/qquickgenericshadereffect_p.h index 3f6f92921b..368c32d2f8 100644 --- a/src/quick/items/qquickgenericshadereffect_p.h +++ b/src/quick/items/qquickgenericshadereffect_p.h @@ -59,8 +59,6 @@ QT_BEGIN_NAMESPACE -class QSignalMapper; - class Q_QUICK_PRIVATE_EXPORT QQuickGenericShaderEffect : public QObject { Q_OBJECT @@ -142,7 +140,7 @@ private: struct SignalMapper { SignalMapper() : mapper(nullptr), active(false) { } - QSignalMapper *mapper; + QObject *mapper; bool active; }; QVector<SignalMapper> m_signalMappers[NShader]; |