added pause scene option

This commit is contained in:
WarmUpTill 2016-07-13 16:11:03 +02:00 committed by GitHub
parent 9cd78a403c
commit 67f0fa3adc
4 changed files with 39 additions and 6 deletions

View File

@ -22,6 +22,7 @@ void Settings::load() {
//reset the settings
settings = map<string, Data>();
sceneRoundTrip = vector<string>();
pauseScenes = vector<string>();
//read the settings file
vector<string> settingsElements;
ifstream infile(settingsFilePath);
@ -53,7 +54,6 @@ void Settings::load() {
numValues = 0;
//find Scene Round Trip
if (temp.find("Scene Round Trip") != temp.npos) {
//discard the first value ("Scene Round Trip")
getline(lineStream, value, ',');
while (lineStream.good()) {
@ -69,6 +69,19 @@ void Settings::load() {
sceneRoundTrip.push_back("");
}
}
else if (temp.find("Pause Scene Names") != temp.npos) {
//discard the first value ("Pause Scene Names")
getline(lineStream, value, ',');
while (lineStream.good()) {
//Scene Round Trip,TriggerSceneHere,DelayHere,NextSceneHere,DelayHere,AnotherSceneHere,DelayHere,...
getline(lineStream, value, ',');
pauseScenes.push_back(value);
}
//remove trailing /" of last value
if (pauseScenes.size() > 0) {
pauseScenes.back().pop_back();
}
}
//find values for Scene switching
else
{
@ -120,3 +133,7 @@ vector<string> Settings::getSceneRoundTrip(){
return sceneRoundTrip;
}
vector<string> Settings::getPauseScenes(){
return pauseScenes;
}

View File

@ -2,7 +2,6 @@
#include <map>
#include <vector>
#include <string>
#include <obs-module.h>
using namespace std;
@ -12,16 +11,18 @@ struct Data {
};
class Settings {
vector<string> sceneRoundTrip;
map<string, Data> settings;
bool startMessageDisable = false;
public:
void load();
bool getStartMessageDisable();
map<string, Data> getMap();
vector<string> getSceneRoundTrip();
vector<string> getPauseScenes();
string getSettingsFilePath();
void setSettingsFilePath(string path);
private:
string settingsFilePath = "";
map<string, Data> settings;
vector<string> sceneRoundTrip;
vector<string>pauseScenes;
bool startMessageDisable = false;
};

View File

@ -23,11 +23,21 @@ void Switcher::switcherThreadFunc() {
string windowname = "";
string sceneName = "";
bool checkFullscreen = false;
bool pauseSwitching = false;
while (isRunning) {
//get Scene Name
obs_source_t * transitionUsed = obs_get_output_source(0);
obs_source_t * sceneUsed = obs_transition_get_active_source(transitionUsed);
const char *sceneUsedName = obs_source_get_name(sceneUsed);
//check if scene switching should be paused
if ((sceneUsedName) && find(pauseScenes.begin(), pauseScenes.end(), string(sceneUsedName)) != pauseScenes.end()) {
pauseSwitching = true;
}
else {
pauseSwitching = false;
}
//are we in pause mode?
if (!pauseSwitching) {
//check if a Scene Round Trip should be started
if ((sceneUsedName) && strcmp(sceneUsedName, sceneRoundTrip.front().c_str()) == 0) {
sceneRoundTripActive = true;
@ -112,6 +122,7 @@ void Switcher::switcherThreadFunc() {
obs_source_release(transitionUsed);
}
}
}
//sleep for a bit
this_thread::sleep_for(chrono::milliseconds(1000));
}
@ -123,6 +134,7 @@ void Switcher::firstLoad() {
settings.load();
settingsMap = settings.getMap();
sceneRoundTrip = settings.getSceneRoundTrip();
pauseScenes = settings.getPauseScenes();
if (!settings.getStartMessageDisable()) {
string message = "The following settings were found for Scene Switcher:\n";
for (auto it = settingsMap.cbegin(); it != settingsMap.cend(); ++it)
@ -140,6 +152,7 @@ void Switcher::firstLoad() {
settings.load();
settingsMap = settings.getMap();
sceneRoundTrip = settings.getSceneRoundTrip();
pauseScenes = settings.getPauseScenes();
if (!settings.getStartMessageDisable()) {
string message = "The following settings were found for Scene Switcher:\n";
for (auto it = settingsMap.cbegin(); it != settingsMap.cend(); ++it)
@ -172,8 +185,9 @@ void Switcher::firstLoad() {
//load the settings needed to start the thread
void Switcher::load() {
settings.load();
sceneRoundTrip = settings.getSceneRoundTrip();
settingsMap = settings.getMap();
sceneRoundTrip = settings.getSceneRoundTrip();
pauseScenes = settings.getPauseScenes();
}
//start thread

View File

@ -22,6 +22,7 @@ private:
Settings settings;
map<string, Data> settingsMap;
vector<string> sceneRoundTrip;
vector<string> pauseScenes;
void switcherThreadFunc();
bool isWindowFullscreen();
string GetActiveWindowTitle();