|
|
@@ -5585,16 +5585,26 @@ void OBSBasic::OpenProjector(obs_source_t *source, int monitor, bool window,
|
|
|
if (monitor > 9 || monitor > QGuiApplication::screens().size() - 1)
|
|
|
return;
|
|
|
|
|
|
- if (!window) {
|
|
|
+ OBSProjector *projector = new OBSProjector(nullptr, source, !!window);
|
|
|
+ const char *name = obs_source_get_name(source);
|
|
|
+
|
|
|
+ if (window) {
|
|
|
+ projector->Init(monitor, true, title, type);
|
|
|
+
|
|
|
+ for (auto &projPtr : windowProjectors) {
|
|
|
+ if (!projPtr) {
|
|
|
+ projPtr = projector;
|
|
|
+ projector = nullptr;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (projector)
|
|
|
+ windowProjectors.push_back(projector);
|
|
|
+ } else {
|
|
|
delete projectors[monitor];
|
|
|
projectors[monitor].clear();
|
|
|
RemoveSavedProjectors(monitor);
|
|
|
- }
|
|
|
|
|
|
- OBSProjector *projector = new OBSProjector(nullptr, source, !!window);
|
|
|
- const char *name = obs_source_get_name(source);
|
|
|
-
|
|
|
- if (!window) {
|
|
|
if (type == ProjectorType::StudioProgram) {
|
|
|
studioProgramProjectorArray.at((size_t)monitor) = 1;
|
|
|
} else if (type == ProjectorType::Preview) {
|
|
|
@@ -5604,23 +5614,9 @@ void OBSBasic::OpenProjector(obs_source_t *source, int monitor, bool window,
|
|
|
} else {
|
|
|
projectorArray.at((size_t)monitor) = name;
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- if (!window) {
|
|
|
projector->Init(monitor, false, nullptr, type);
|
|
|
projectors[monitor] = projector;
|
|
|
- } else {
|
|
|
- projector->Init(monitor, true, title, type);
|
|
|
-
|
|
|
- for (auto &projPtr : windowProjectors) {
|
|
|
- if (!projPtr) {
|
|
|
- projPtr = projector;
|
|
|
- projector = nullptr;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (projector)
|
|
|
- windowProjectors.push_back(projector);
|
|
|
}
|
|
|
}
|
|
|
|