Merge pull request #1910 from Rosuav/open-projectors

UI: Create an API to open projectors
This commit is contained in:
Jim
2019-11-24 23:24:04 -08:00
committed by GitHub
6 changed files with 47 additions and 1 deletions
+25
View File
@@ -371,6 +371,31 @@ struct OBSStudioAPI : obs_frontend_callbacks {
return App()->GlobalConfig();
}
void obs_frontend_open_projector(const char *type, int monitor,
const char *geometry,
const char *name) override
{
SavedProjectorInfo proj = {
ProjectorType::Preview,
monitor,
geometry ? geometry : "",
name ? name : "",
};
if (type) {
if (astrcmpi(type, "Source") == 0)
proj.type = ProjectorType::Source;
else if (astrcmpi(type, "Scene") == 0)
proj.type = ProjectorType::Scene;
else if (astrcmpi(type, "StudioProgram") == 0)
proj.type = ProjectorType::StudioProgram;
else if (astrcmpi(type, "Multiview") == 0)
proj.type = ProjectorType::Multiview;
}
QMetaObject::invokeMethod(main, "OpenSavedProjector",
WaitConnection(),
Q_ARG(SavedProjectorInfo *, &proj));
}
void obs_frontend_save(void) override { main->SaveProject(); }
void obs_frontend_defer_save_begin(void) override
+7
View File
@@ -327,6 +327,13 @@ config_t *obs_frontend_get_global_config(void)
: nullptr;
}
void obs_frontend_open_projector(const char *type, int monitor,
const char *geometry, const char *name)
{
if (callbacks_valid())
c->obs_frontend_open_projector(type, monitor, geometry, name);
}
void obs_frontend_save(void)
{
if (callbacks_valid())
+2
View File
@@ -165,6 +165,8 @@ EXPORT void obs_frontend_replay_buffer_save(void);
EXPORT void obs_frontend_replay_buffer_stop(void);
EXPORT bool obs_frontend_replay_buffer_active(void);
EXPORT void obs_frontend_open_projector(const char *type, int monitor,
const char *geometry, const char *name);
EXPORT void obs_frontend_save(void);
EXPORT void obs_frontend_defer_save_begin(void);
EXPORT void obs_frontend_defer_save_end(void);
@@ -72,6 +72,9 @@ struct obs_frontend_callbacks {
virtual config_t *obs_frontend_get_profile_config(void) = 0;
virtual config_t *obs_frontend_get_global_config(void) = 0;
virtual void obs_frontend_open_projector(const char *type, int monitor,
const char *geometry,
const char *name) = 0;
virtual void obs_frontend_save(void) = 0;
virtual void obs_frontend_defer_save_begin(void) = 0;
virtual void obs_frontend_defer_save_end(void) = 0;
+9 -1
View File
@@ -242,6 +242,7 @@ OBSBasic::OBSBasic(QWidget *parent)
qRegisterMetaType<OBSSceneItem>("OBSSceneItem");
qRegisterMetaType<OBSSource>("OBSSource");
qRegisterMetaType<obs_hotkey_id>("obs_hotkey_id");
qRegisterMetaType<SavedProjectorInfo *>("SavedProjectorInfo *");
qRegisterMetaTypeStreamOperators<std::vector<std::shared_ptr<OBSSignal>>>(
"std::vector<std::shared_ptr<OBSSignal>>");
@@ -6570,6 +6571,13 @@ void OBSBasic::OpenSceneWindow()
void OBSBasic::OpenSavedProjectors()
{
for (SavedProjectorInfo *info : savedProjectorsArray) {
OpenSavedProjector(info);
}
}
void OBSBasic::OpenSavedProjector(SavedProjectorInfo *info)
{
if (info) {
OBSProjector *projector = nullptr;
switch (info->type) {
case ProjectorType::Source:
@@ -6577,7 +6585,7 @@ void OBSBasic::OpenSavedProjectors()
OBSSource source =
obs_get_source_by_name(info->name.c_str());
if (!source)
continue;
return;
projector = OpenProjector(source, info->monitor,
info->type);
+1
View File
@@ -621,6 +621,7 @@ private slots:
void ScenePasteFilters();
void CheckDiskSpaceRemaining();
void OpenSavedProjector(SavedProjectorInfo *info);
void ScenesReordered(const QModelIndex &parent, int start, int end,
const QModelIndex &destination, int row);