Browse Source

UI: Fix preview/program projectors being swapped

If a preview projector was created in normal mode, it would become a
studio projector in studio mode.  The window title of the window
projector would reflect that it was in fact a preview projector and not
a program projector.
jp9000 8 years ago
parent
commit
6461b63623
3 changed files with 11 additions and 28 deletions
  1. 4 12
      UI/window-basic-main.cpp
  2. 5 5
      UI/window-basic-main.hpp
  3. 2 11
      UI/window-projector.cpp

+ 4 - 12
UI/window-basic-main.cpp

@@ -3733,23 +3733,15 @@ void OBSBasic::CreateSourcePopupMenu(QListWidgetItem *item, bool preview)
 		popup.addAction(ui->actionLockPreview);
 		popup.addMenu(ui->scalingMenu);
 
-		const char *slot = IsPreviewProgramMode()
-			? SLOT(OpenStudioProgramProjector())
-			: SLOT(OpenPreviewProjector());
-
 		previewProjector = new QMenu(QTStr("PreviewProjector"));
 		AddProjectorMenuMonitors(previewProjector, this,
-				slot);
+				SLOT(OpenPreviewProjector()));
 
 		popup.addMenu(previewProjector);
 
-		slot = IsPreviewProgramMode()
-			? SLOT(OpenStudioProgramWindow())
-			: SLOT(OpenPreviewWindow());
-
 		QAction *previewWindow = popup.addAction(
 				QTStr("PreviewWindow"),
-				this, slot);
+				this, SLOT(OpenPreviewWindow()));
 
 		popup.addAction(previewWindow);
 
@@ -4951,13 +4943,13 @@ void OBSBasic::on_program_customContextMenuRequested(const QPoint&)
 	studioProgramProjector = new QMenu(
 			QTStr("StudioProgramProjector"));
 	AddProjectorMenuMonitors(studioProgramProjector, this,
-			SLOT(OpenPreviewProjector()));
+			SLOT(OpenStudioProgramProjector()));
 
 	popup.addMenu(studioProgramProjector);
 
 	QAction *studioProgramWindow = popup.addAction(
 			QTStr("StudioProgramWindow"),
-			this, SLOT(OpenPreviewWindow()));
+			this, SLOT(OpenStudioProgramWindow()));
 
 	popup.addAction(studioProgramWindow);
 

+ 5 - 5
UI/window-basic-main.hpp

@@ -327,11 +327,6 @@ private:
 
 	int disableOutputsRef = 0;
 
-	inline bool IsPreviewProgramMode() const
-	{
-		return os_atomic_load_bool(&previewProgramMode);
-	}
-
 	inline void OnActivate();
 	inline void OnDeactivate();
 
@@ -495,6 +490,11 @@ public:
 	obs_service_t *GetService();
 	void          SetService(obs_service_t *service);
 
+	inline bool IsPreviewProgramMode() const
+	{
+		return os_atomic_load_bool(&previewProgramMode);
+	}
+
 	bool StreamingActive() const;
 	bool Active() const;
 

+ 2 - 11
UI/window-projector.cpp

@@ -73,12 +73,6 @@ void OBSProjector::Init(int monitor, bool window, QString title,
 
 	show();
 
-	if (studioProgram && !source) {
-		OBSBasic *main =
-			reinterpret_cast<OBSBasic*>(App()->GetMainWindow());
-		source = main->GetCurrentSceneSource();
-	}
-
 	if (source)
 		obs_source_inc_showing(source);
 
@@ -99,6 +93,7 @@ void OBSProjector::Init(int monitor, bool window, QString title,
 void OBSProjector::OBSRender(void *data, uint32_t cx, uint32_t cy)
 {
 	OBSProjector *window = reinterpret_cast<OBSProjector*>(data);
+	OBSBasic *main = reinterpret_cast<OBSBasic*>(App()->GetMainWindow());
 
 	uint32_t targetCX;
 	uint32_t targetCY;
@@ -126,14 +121,10 @@ void OBSProjector::OBSRender(void *data, uint32_t cx, uint32_t cy)
 	gs_ortho(0.0f, float(targetCX), 0.0f, float(targetCY), -100.0f, 100.0f);
 	gs_set_viewport(x, y, newCX, newCY);
 
-	if (window->useStudioProgram) {
-		OBSBasic *main =
-			reinterpret_cast<OBSBasic*>(App()->GetMainWindow());
+	if (!window->useStudioProgram && main->IsPreviewProgramMode()) {
 		OBSSource curSource = main->GetCurrentSceneSource();
 
 		if (window->source != curSource) {
-			blog(LOG_INFO, "new scene for studio preview projector: '%s'",
-					obs_source_get_name(curSource));
 			obs_source_dec_showing(window->source);
 			obs_source_inc_showing(curSource);
 			window->source = curSource;