Merge pull request #3004 from cg2121/projector-screen-removed

UI: Delete projector when monitor is disconnected
This commit is contained in:
Jim
2020-07-08 09:32:18 -07:00
committed by GitHub
2 changed files with 18 additions and 1 deletions
+15 -1
View File
@@ -63,6 +63,8 @@ OBSProjector::OBSProjector(QWidget *widget, obs_source_t *source_, int monitor,
};
connect(this, &OBSQTDisplay::DisplayCreated, addDrawCallback);
connect(App(), &QGuiApplication::screenRemoved, this,
&OBSProjector::ScreenRemoved);
if (type == ProjectorType::Multiview) {
obs_enter_graphics();
@@ -168,12 +170,14 @@ OBSProjector::~OBSProjector()
multiviewProjectors.removeAll(this);
App()->DecrementSleepInhibition();
screen = nullptr;
}
void OBSProjector::SetMonitor(int monitor)
{
savedMonitor = monitor;
QScreen *screen = QGuiApplication::screens()[monitor];
screen = QGuiApplication::screens()[monitor];
setGeometry(screen->geometry());
showFullScreen();
SetHideCursor();
@@ -1078,6 +1082,7 @@ void OBSProjector::OpenWindowedProjector()
savedMonitor = -1;
UpdateProjectorTitle(QT_UTF8(obs_source_get_name(source)));
screen = nullptr;
}
void OBSProjector::ResizeToContent()
@@ -1135,3 +1140,12 @@ void OBSProjector::SetIsAlwaysOnTop(bool isAlwaysOnTop, bool isOverridden)
SetAlwaysOnTop(this, isAlwaysOnTop);
}
void OBSProjector::ScreenRemoved(QScreen *screen_)
{
if (GetMonitor() < 0 || !screen)
return;
if (screen == screen_)
EscapeTriggered();
}
+3
View File
@@ -77,12 +77,15 @@ private:
QRect prevGeometry;
void SetMonitor(int monitor);
QScreen *screen = nullptr;
private slots:
void EscapeTriggered();
void OpenFullScreenProjector();
void ResizeToContent();
void OpenWindowedProjector();
void AlwaysOnTopToggled(bool alwaysOnTop);
void ScreenRemoved(QScreen *screen_);
public:
OBSProjector(QWidget *widget, obs_source_t *source_, int monitor,