Fix macro hotkeys not working

This commit is contained in:
WarmUpTill 2021-11-17 20:59:03 +01:00 committed by WarmUpTill
parent c40a3af8ca
commit 00fec4b573
5 changed files with 23 additions and 23 deletions

View File

@ -422,7 +422,7 @@ void SwitcherData::Start()
void ResetMacroCounters()
{
for (auto &m : switcher->macros) {
m.ResetCount();
m->ResetCount();
}
}

View File

@ -95,7 +95,7 @@ struct SwitcherData {
Duration cooldown;
std::chrono::high_resolution_clock::time_point lastMatchTime;
std::deque<Macro> macros;
std::deque<std::shared_ptr<Macro>> macros;
std::condition_variable macroWaitCv;
std::atomic_bool abortMacroWait = {false};
bool macroSceneSwitched = false;

View File

@ -16,7 +16,7 @@ MacroSelection::MacroSelection(QWidget *parent) : QComboBox(parent)
firstItem->setEnabled(false);
for (auto &m : switcher->macros) {
addItem(QString::fromStdString(m.Name()));
addItem(QString::fromStdString(m->Name()));
}
QWidget::connect(parent, SIGNAL(MacroAdded(const QString &)), this,

View File

@ -47,7 +47,7 @@ bool AdvSceneSwitcher::addNewMacro(std::string &name)
{
std::lock_guard<std::mutex> lock(switcher->m);
switcher->macros.emplace_back(name);
switcher->macros.emplace_back(std::make_shared<Macro>(name));
}
return true;
}
@ -84,7 +84,7 @@ void AdvSceneSwitcher::on_macroRemove_clicked()
switcher->abortMacroWait = true;
switcher->macroWaitCv.notify_one();
int idx = ui->macros->currentRow();
QString::fromStdString(switcher->macros[idx].Name());
QString::fromStdString(switcher->macros[idx]->Name());
switcher->macros.erase(switcher->macros.begin() + idx);
}
@ -108,7 +108,7 @@ void AdvSceneSwitcher::on_macroUp_clicked()
switcher->macros.begin() + index - 1);
for (auto &m : switcher->macros) {
m.ResolveMacroRef();
m->ResolveMacroRef();
}
}
}
@ -125,7 +125,7 @@ void AdvSceneSwitcher::on_macroDown_clicked()
switcher->macros.begin() + index + 1);
for (auto &m : switcher->macros) {
m.ResolveMacroRef();
m->ResolveMacroRef();
}
}
}
@ -312,12 +312,12 @@ void AdvSceneSwitcher::on_macros_itemChanged(QListWidgetItem *item)
void AdvSceneSwitcher::setupMacroTab()
{
for (auto &m : switcher->macros) {
QString text = QString::fromStdString(m.Name());
QString text = QString::fromStdString(m->Name());
QListWidgetItem *item = new QListWidgetItem(text, ui->macros);
item->setData(Qt::UserRole, text);
item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
if (m.Paused()) {
if (m->Paused()) {
item->setCheckState(Qt::Unchecked);
} else {
item->setCheckState(Qt::Checked);
@ -390,8 +390,8 @@ void AdvSceneSwitcher::CopyMacro()
return;
}
switcher->macros.back().Load(data);
switcher->macros.back().SetName(name);
switcher->macros.back()->Load(data);
switcher->macros.back()->SetName(name);
obs_data_release(data);
QString text = QString::fromStdString(name);

View File

@ -458,7 +458,7 @@ void SwitcherData::saveMacros(obs_data_t *obj)
for (auto &m : macros) {
obs_data_t *array_obj = obs_data_create();
m.Save(array_obj);
m->Save(array_obj);
obs_data_array_push_back(macroArray, array_obj);
obs_data_release(array_obj);
@ -476,14 +476,14 @@ void SwitcherData::loadMacros(obs_data_t *obj)
for (size_t i = 0; i < count; i++) {
obs_data_t *array_obj = obs_data_array_item(macroArray, i);
macros.emplace_back();
macros.back().Load(array_obj);
macros.emplace_back(std::make_shared<Macro>());
macros.back()->Load(array_obj);
obs_data_release(array_obj);
}
obs_data_array_release(macroArray);
for (auto &m : macros) {
m.ResolveMacroRef();
m->ResolveMacroRef();
}
}
@ -491,11 +491,11 @@ bool SwitcherData::checkMacros()
{
bool ret = false;
for (auto &m : macros) {
if (m.CeckMatch()) {
if (m->CeckMatch()) {
ret = true;
// This has to be performed here for now as actions are
// not performed immediately after checking conditions.
if (m.SwitchesScene()) {
if (m->SwitchesScene()) {
switcher->macroSceneSwitched = true;
}
}
@ -509,11 +509,11 @@ bool SwitcherData::runMacros()
// events are available - see:
// https://github.com/obsproject/obs-studio/commit/feda1aaa283e8a99f6ba1159cfe6b9c1f2934a61
for (auto m : macros) {
if (m.Matched()) {
vblog(LOG_INFO, "running macro: %s", m.Name().c_str());
if (!m.PerformAction()) {
if (m->Matched()) {
vblog(LOG_INFO, "running macro: %s", m->Name().c_str());
if (!m->PerformAction()) {
blog(LOG_WARNING, "abort macro: %s",
m.Name().c_str());
m->Name().c_str());
return false;
}
}
@ -524,8 +524,8 @@ bool SwitcherData::runMacros()
Macro *GetMacroByName(const char *name)
{
for (auto &m : switcher->macros) {
if (m.Name() == name) {
return &m;
if (m->Name() == name) {
return m.get();
}
}