diff --git a/effects/effect_builtins.cpp b/effects/effect_builtins.cpp index 4513f57bda..6ccb651ed5 100644 --- a/effects/effect_builtins.cpp +++ b/effects/effect_builtins.cpp @@ -84,7 +84,9 @@ inline Effect *createHelper() return new T(); } -static const QVector s_effectData = { +static const QVector &effectData() +{ + static const QVector s_effectData = { { QString(), QString(), @@ -683,7 +685,9 @@ EFFECT_FALLBACK #endif EFFECT_FALLBACK } -}; + }; + return s_effectData; +} static inline int index(BuiltInEffect effect) { @@ -701,12 +705,12 @@ Effect *create(BuiltInEffect effect) bool available(const QString &name) { - auto it = std::find_if(s_effectData.begin(), s_effectData.end(), + auto it = std::find_if(effectData().begin(), effectData().end(), [name](const EffectData &data) { return data.name == name; } ); - return it != s_effectData.end(); + return it != effectData().end(); } bool supported(BuiltInEffect effect) @@ -741,7 +745,7 @@ bool enabledByDefault(BuiltInEffect effect) QStringList availableEffectNames() { QStringList result; - for (const EffectData &data : s_effectData) { + for (const EffectData &data : effectData()) { if (data.name.isEmpty()) { continue; } @@ -761,15 +765,15 @@ QList< BuiltInEffect > availableEffects() BuiltInEffect builtInForName(const QString &name) { - auto it = std::find_if(s_effectData.begin(), s_effectData.end(), + auto it = std::find_if(effectData().begin(), effectData().end(), [name](const EffectData &data) { return data.name == name; } ); - if (it == s_effectData.end()) { + if (it == effectData().end()) { return BuiltInEffect::Invalid; } - return BuiltInEffect(std::distance(s_effectData.begin(), it)); + return BuiltInEffect(std::distance(effectData().begin(), it)); } QString nameForEffect(BuiltInEffect effect) @@ -779,7 +783,7 @@ QString nameForEffect(BuiltInEffect effect) const EffectData &effectData(BuiltInEffect effect) { - return s_effectData.at(index(effect)); + return effectData().at(index(effect)); } } // BuiltInEffects