Fix crash when creating macro which uses macro segment factories

This commit is contained in:
WarmUpTill 2024-08-15 23:54:18 +02:00 committed by WarmUpTill
parent 263565700a
commit 27859e83b3
2 changed files with 15 additions and 15 deletions

View File

@ -21,7 +21,7 @@ public:
} // namespace
static std::mutex mutex;
static std::recursive_mutex mutex;
std::map<std::string, MacroActionInfo> &MacroActionFactory::GetMap()
{
@ -31,7 +31,7 @@ std::map<std::string, MacroActionInfo> &MacroActionFactory::GetMap()
bool MacroActionFactory::Register(const std::string &id, MacroActionInfo info)
{
std::lock_guard<std::mutex> lock(mutex);
std::lock_guard<std::recursive_mutex> lock(mutex);
if (auto it = GetMap().find(id); it == GetMap().end()) {
GetMap()[id] = info;
return true;
@ -41,7 +41,7 @@ bool MacroActionFactory::Register(const std::string &id, MacroActionInfo info)
bool MacroActionFactory::Deregister(const std::string &id)
{
std::lock_guard<std::mutex> lock(mutex);
std::lock_guard<std::recursive_mutex> lock(mutex);
if (GetMap().count(id) == 0) {
return false;
}
@ -57,7 +57,7 @@ static std::shared_ptr<MacroAction> createUnknownAction(Macro *m)
std::shared_ptr<MacroAction> MacroActionFactory::Create(const std::string &id,
Macro *m)
{
std::lock_guard<std::mutex> lock(mutex);
std::lock_guard<std::recursive_mutex> lock(mutex);
if (auto it = GetMap().find(id); it != GetMap().end()) {
return it->second._create(m);
}
@ -74,7 +74,7 @@ QWidget *MacroActionFactory::CreateWidget(const std::string &id,
QWidget *parent,
std::shared_ptr<MacroAction> action)
{
std::lock_guard<std::mutex> lock(mutex);
std::lock_guard<std::recursive_mutex> lock(mutex);
if (auto it = GetMap().find(id); it != GetMap().end()) {
return it->second._createWidget(parent, action);
}
@ -84,7 +84,7 @@ QWidget *MacroActionFactory::CreateWidget(const std::string &id,
std::string MacroActionFactory::GetActionName(const std::string &id)
{
std::lock_guard<std::mutex> lock(mutex);
std::lock_guard<std::recursive_mutex> lock(mutex);
if (auto it = GetMap().find(id); it != GetMap().end()) {
return it->second._name;
}
@ -93,7 +93,7 @@ std::string MacroActionFactory::GetActionName(const std::string &id)
std::string MacroActionFactory::GetIdByName(const QString &name)
{
std::lock_guard<std::mutex> lock(mutex);
std::lock_guard<std::recursive_mutex> lock(mutex);
for (auto it : GetMap()) {
if (name == obs_module_text(it.second._name.c_str())) {
return it.first;

View File

@ -17,7 +17,7 @@ public:
} // namespace
static std::mutex mutex;
static std::recursive_mutex mutex;
std::map<std::string, MacroConditionInfo> &MacroConditionFactory::GetMap()
{
@ -28,7 +28,7 @@ std::map<std::string, MacroConditionInfo> &MacroConditionFactory::GetMap()
bool MacroConditionFactory::Register(const std::string &id,
MacroConditionInfo info)
{
std::lock_guard<std::mutex> lock(mutex);
std::lock_guard<std::recursive_mutex> lock(mutex);
if (auto it = GetMap().find(id); it == GetMap().end()) {
GetMap()[id] = info;
return true;
@ -38,7 +38,7 @@ bool MacroConditionFactory::Register(const std::string &id,
bool MacroConditionFactory::Deregister(const std::string &id)
{
std::lock_guard<std::mutex> lock(mutex);
std::lock_guard<std::recursive_mutex> lock(mutex);
if (GetMap().count(id) == 0) {
return false;
}
@ -54,7 +54,7 @@ static std::shared_ptr<MacroCondition> createUnknownCondition(Macro *m)
std::shared_ptr<MacroCondition>
MacroConditionFactory::Create(const std::string &id, Macro *m)
{
std::lock_guard<std::mutex> lock(mutex);
std::lock_guard<std::recursive_mutex> lock(mutex);
if (auto it = GetMap().find(id); it != GetMap().end()) {
return it->second._create(m);
}
@ -71,7 +71,7 @@ QWidget *
MacroConditionFactory::CreateWidget(const std::string &id, QWidget *parent,
std::shared_ptr<MacroCondition> cond)
{
std::lock_guard<std::mutex> lock(mutex);
std::lock_guard<std::recursive_mutex> lock(mutex);
if (auto it = GetMap().find(id); it != GetMap().end()) {
return it->second._createWidget(parent, cond);
}
@ -80,7 +80,7 @@ MacroConditionFactory::CreateWidget(const std::string &id, QWidget *parent,
std::string MacroConditionFactory::GetConditionName(const std::string &id)
{
std::lock_guard<std::mutex> lock(mutex);
std::lock_guard<std::recursive_mutex> lock(mutex);
if (auto it = GetMap().find(id); it != GetMap().end()) {
return it->second._name;
}
@ -89,7 +89,7 @@ std::string MacroConditionFactory::GetConditionName(const std::string &id)
std::string MacroConditionFactory::GetIdByName(const QString &name)
{
std::lock_guard<std::mutex> lock(mutex);
std::lock_guard<std::recursive_mutex> lock(mutex);
for (auto it : GetMap()) {
if (name == obs_module_text(it.second._name.c_str())) {
return it.first;
@ -100,7 +100,7 @@ std::string MacroConditionFactory::GetIdByName(const QString &name)
bool MacroConditionFactory::UsesDurationModifier(const std::string &id)
{
std::lock_guard<std::mutex> lock(mutex);
std::lock_guard<std::recursive_mutex> lock(mutex);
if (auto it = GetMap().find(id); it != GetMap().end()) {
return it->second._useDurationModifier;
}