Compare commits

...

4 Commits

Author SHA1 Message Date
WarmUpTill
438c54599e Reduce time it takes to close preview dialog 2023-01-20 12:30:47 -08:00
WarmUpTill
da42183177 Fix VariableResolvingString returning empty string if no variables exist 2023-01-20 12:30:47 -08:00
WarmUpTill
295fa3f122 Fix crash on import 2023-01-20 12:30:47 -08:00
WarmUpTill
cb87f1cc36 Fix file condition always returning false 2023-01-18 07:49:21 -08:00
5 changed files with 16 additions and 7 deletions

View File

@@ -159,7 +159,7 @@ bool MacroConditionFile::CheckCondition()
SetVariableValue(ret ? "true" : "false");
}
return false;
return ret;
}
bool MacroConditionFile::Save(obs_data_t *obj) const

View File

@@ -501,10 +501,13 @@ Qt::ItemFlags MacroTreeModel::flags(const QModelIndex &index) const
return QAbstractListModel::flags(index) | Qt::ItemIsDropEnabled;
}
std::shared_ptr<Macro> item =
_macros[ModelIndexToMacroIndex(index.row(), _macros)];
std::shared_ptr<Macro> item;
try {
item = _macros.at(ModelIndexToMacroIndex(index.row(), _macros));
} catch (const std::out_of_range &) {
return QAbstractListModel::flags(index) | Qt::ItemIsDropEnabled;
}
bool isGroup = item->IsGroup();
return QAbstractListModel::flags(index) | Qt::ItemIsEditable |
Qt::ItemIsDragEnabled |
(isGroup ? Qt::ItemIsDropEnabled : Qt::NoItemFlags);

View File

@@ -4,7 +4,6 @@
#include "utility.hpp"
#include <screenshot-helper.hpp>
#include <condition_variable>
PreviewDialog::PreviewDialog(QWidget *parent, int delay)
: QDialog(parent),
@@ -119,6 +118,7 @@ void PreviewDialog::SelectArea()
void PreviewDialog::Stop()
{
_stop = true;
_cv.notify_all();
if (_thread.joinable()) {
_thread.join();
}
@@ -189,13 +189,12 @@ void PreviewDialog::Start()
void PreviewDialog::CheckForMatchLoop()
{
std::condition_variable cv;
while (!_stop) {
std::unique_lock<std::mutex> lock(_mtx);
auto source = obs_weak_source_get_source(_video.GetVideo());
ScreenshotHelper screenshot(source);
obs_source_release(source);
cv.wait_for(lock, std::chrono::milliseconds(_delay));
_cv.wait_for(lock, std::chrono::milliseconds(_delay));
if (_stop || isHidden()) {
return;
}

View File

@@ -12,6 +12,7 @@
#include <thread>
#include <mutex>
#include <condition_variable>
class PreviewDialog : public QDialog {
Q_OBJECT
@@ -62,6 +63,7 @@ private:
std::atomic_bool _selectingArea = {false};
std::mutex _mtx;
std::condition_variable _cv;
std::thread _thread;
std::atomic_bool _stop = {true};

View File

@@ -103,6 +103,10 @@ QStringList GetVariablesNameList()
void VariableResolvingString::Resolve()
{
if (switcher->variables.empty()) {
_resolvedValue = _value;
return;
}
if (_lastResolve == lastVariableChange) {
return;
}
@@ -131,6 +135,7 @@ void VariableResolvingString::operator=(const char *value)
void VariableResolvingString::Load(obs_data_t *obj, const char *name)
{
_value = obs_data_get_string(obj, name);
Resolve();
}
void VariableResolvingString::Save(obs_data_t *obj, const char *name) const