0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 04:42:18 +02:00

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.
This commit is contained in:
Shaolin 2018-04-29 09:29:53 -03:00
parent 22a1887340
commit 32ee7ee4e2
3 changed files with 31 additions and 35 deletions

View File

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

View File

@ -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)
{

View File

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