mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-14 23:34:08 +00:00
UI: Add command line opt to start w/ specific scene
This commit is contained in:
parent
21ea1b1947
commit
b52c4f9634
|
@ -57,6 +57,7 @@ static string currentLogFile;
|
|||
static string lastLogFile;
|
||||
|
||||
static bool portable_mode = false;
|
||||
string opt_starting_scene;
|
||||
|
||||
QObject *CreateShortcutFilter()
|
||||
{
|
||||
|
@ -1553,6 +1554,9 @@ int main(int argc, char *argv[])
|
|||
for (int i = 1; i < argc; i++) {
|
||||
if (arg_is(argv[i], "--portable", "-p")) {
|
||||
portable_mode = true;
|
||||
|
||||
} else if (arg_is(argv[i], "--scene", nullptr)) {
|
||||
if (++i < argc) opt_starting_scene = argv[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -153,3 +153,5 @@ static inline int GetProfilePath(char *path, size_t size, const char *file)
|
|||
App()->GetMainWindow());
|
||||
return window->GetProfilePath(path, size, file);
|
||||
}
|
||||
|
||||
extern std::string opt_starting_scene;
|
||||
|
|
|
@ -500,6 +500,12 @@ void OBSBasic::Load(const char *file)
|
|||
const char *transitionName = obs_data_get_string(data,
|
||||
"current_transition");
|
||||
|
||||
if (!opt_starting_scene.empty()) {
|
||||
programSceneName = opt_starting_scene.c_str();
|
||||
if (!IsPreviewProgramMode())
|
||||
sceneName = opt_starting_scene.c_str();
|
||||
}
|
||||
|
||||
int newDuration = obs_data_get_int(data, "transition_duration");
|
||||
if (!newDuration)
|
||||
newDuration = 300;
|
||||
|
@ -542,8 +548,22 @@ void OBSBasic::Load(const char *file)
|
|||
ui->transitionDuration->setValue(newDuration);
|
||||
SetTransition(curTransition);
|
||||
|
||||
retryScene:
|
||||
curScene = obs_get_source_by_name(sceneName);
|
||||
curProgramScene = obs_get_source_by_name(programSceneName);
|
||||
|
||||
/* if the starting scene command line parameter is bad at all,
|
||||
* fall back to original settings */
|
||||
if (!opt_starting_scene.empty() && (!curScene || !curProgramScene)) {
|
||||
sceneName = obs_data_get_string(data, "current_scene");
|
||||
programSceneName = obs_data_get_string(data,
|
||||
"current_program_scene");
|
||||
obs_source_release(curScene);
|
||||
obs_source_release(curProgramScene);
|
||||
opt_starting_scene.clear();
|
||||
goto retryScene;
|
||||
}
|
||||
|
||||
if (!curProgramScene) {
|
||||
curProgramScene = curScene;
|
||||
obs_source_addref(curScene);
|
||||
|
@ -575,6 +595,9 @@ void OBSBasic::Load(const char *file)
|
|||
|
||||
obs_data_release(data);
|
||||
|
||||
if (!opt_starting_scene.empty())
|
||||
opt_starting_scene.clear();
|
||||
|
||||
disableSaving--;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue