Browse Source

UI: Clean up Projector Creation

The Init function were only called on projector creation so this isn't
needed to be on a separate function. Its clearer to read the code.
Shaolin 7 years ago
parent
commit
32ee7ee4e2
3 changed files with 31 additions and 35 deletions
  1. 0 1
      UI/window-basic-main.cpp
  2. 31 32
      UI/window-projector.cpp
  3. 0 2
      UI/window-projector.hpp

+ 0 - 1
UI/window-basic-main.cpp

@@ -5672,7 +5672,6 @@ OBSProjector *OBSBasic::OpenProjector(obs_source_t *source, int monitor,
 		projectors[monitor] = projector;
 	}
 
-	projector->Init();
 	return projector;
 }
 

+ 31 - 32
UI/window-projector.cpp

@@ -22,16 +22,30 @@ OBSProjector::OBSProjector(QWidget *widget, obs_source_t *source_, int monitor,
 	  removedSignal                (obs_source_get_signal_handler(source),
 	                                "remove", OBSSourceRemoved, this)
 {
-	projectorTitle = title;
+	projectorTitle = std::move(title);
 	savedMonitor   = monitor;
 	isWindow       = savedMonitor < 0;
 	type           = type_;
 
 	if (isWindow) {
 		setWindowIcon(QIcon(":/res/images/obs.png"));
+
+		UpdateProjectorTitle(projectorTitle);
+		windowedProjectors.push_back(this);
+
+		resize(480, 270);
 	} else {
 		setWindowFlags(Qt::FramelessWindowHint |
 				Qt::X11BypassWindowManagerHint);
+
+		QScreen *screen = QGuiApplication::screens()[savedMonitor];
+		setGeometry(screen->geometry());
+
+		QAction *action = new QAction(this);
+		action->setShortcut(Qt::Key_Escape);
+		addAction(action);
+		connect(action, SIGNAL(triggered()), this,
+				SLOT(EscapeTriggered()));
 	}
 
 	setAttribute(Qt::WA_DeleteOnClose, true);
@@ -52,6 +66,11 @@ OBSProjector::OBSProjector(QWidget *widget, obs_source_t *source_, int monitor,
 
 	connect(this, &OBSQTDisplay::DisplayCreated, addDrawCallback);
 
+	bool alwaysOnTop = config_get_bool(GetGlobalConfig(), "BasicWindow",
+			"ProjectorAlwaysOnTop");
+	if (alwaysOnTop && !isWindow)
+		SetAlwaysOnTop(this, true);
+
 	bool hideCursor = config_get_bool(GetGlobalConfig(),
 			"BasicWindow", "HideProjectorCursor");
 	if (hideCursor && !isWindow) {
@@ -110,7 +129,17 @@ OBSProjector::OBSProjector(QWidget *widget, obs_source_t *source_, int monitor,
 	}
 
 	App()->IncrementSleepInhibition();
-	resize(480, 270);
+
+	if (source)
+		obs_source_inc_showing(source);
+
+	ready = true;
+
+	show();
+
+	// We need it here to allow keyboard input in X11 to listen to Escape
+	if (!isWindow)
+		activateWindow();
 }
 
 OBSProjector::~OBSProjector()
@@ -189,36 +218,6 @@ static OBSSource CreateLabel(const char *name, size_t h)
 	return txtSource;
 }
 
-void OBSProjector::Init()
-{
-	bool alwaysOnTop = config_get_bool(GetGlobalConfig(),
-			"BasicWindow", "ProjectorAlwaysOnTop");
-	if (alwaysOnTop && !isWindow)
-		SetAlwaysOnTop(this, true);
-
-	show();
-
-	if (isWindow) {
-		UpdateProjectorTitle(projectorTitle);
-		windowedProjectors.push_back(this);
-	} else {
-		QScreen *screen = QGuiApplication::screens()[savedMonitor];
-		setGeometry(screen->geometry());
-
-		QAction *action = new QAction(this);
-		action->setShortcut(Qt::Key_Escape);
-		addAction(action);
-		connect(action, SIGNAL(triggered()), this,
-				SLOT(EscapeTriggered()));
-		activateWindow();
-	}
-
-	if (source)
-		obs_source_inc_showing(source);
-
-	ready = true;
-}
-
 static inline void renderVB(gs_effect_t *effect, gs_vertbuffer_t *vb,
 		int cx, int cy)
 {

+ 0 - 2
UI/window-projector.hpp

@@ -67,8 +67,6 @@ public:
 			QString title, ProjectorType type_);
 	~OBSProjector();
 
-	void Init();
-
 	OBSSource GetSource();
 	ProjectorType GetProjectorType();
 	int GetMonitor();