add fallback option if multiple audio matches are active (#95)

This commit is contained in:
WarmUpTill
2021-01-07 18:59:06 +01:00
committed by GitHub
parent 2b90493ae9
commit 17c4fefb37
7 changed files with 333 additions and 143 deletions

View File

@@ -184,6 +184,7 @@ public slots:
void on_audioRemove_clicked();
void on_audioUp_clicked();
void on_audioDown_clicked();
void on_audioFallback_toggled(bool on);
void on_priorityUp_clicked();
void on_priorityDown_clicked();

View File

@@ -44,6 +44,13 @@ struct AudioSwitch : virtual SceneSwitcherEntry {
friend void swap(AudioSwitch &first, AudioSwitch &second);
};
struct AudioSwitchFallback : virtual SceneSwitcherEntry {
const char *getType() { return "audio_fallback"; }
bool enable = false;
double duration = 0;
unsigned int matchCount = 0;
};
class AudioSwitchWidget : public SwitchWidget {
Q_OBJECT
@@ -71,3 +78,18 @@ private:
AudioSwitch *switchData;
};
class AudioSwitchFallbackWidget : public SwitchWidget {
Q_OBJECT
public:
AudioSwitchFallbackWidget(AudioSwitchFallback *s);
private slots:
void DurationChanged(double dur);
private:
QDoubleSpinBox *duration;
AudioSwitchFallback *switchData;
};

View File

@@ -111,6 +111,7 @@ struct SwitcherData {
QDateTime liveTime;
std::deque<AudioSwitch> audioSwitches;
AudioSwitchFallback audioFallback;
std::vector<int> functionNamesByPriority = std::vector<int>{
default_priority_0, default_priority_1, default_priority_2,
@@ -188,6 +189,8 @@ struct SwitcherData {
OBSWeakSource &transition);
void checkAudioSwitch(bool &match, OBSWeakSource &scene,
OBSWeakSource &transition);
void checkAudioSwitchFallback(OBSWeakSource &scene,
OBSWeakSource &transition);
void checkNoMatchSwitch(bool &match, OBSWeakSource &scene,
OBSWeakSource &transition, int &sleep);
void checkSwitchCooldown(bool &match);