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.
This commit is contained in:
jp9000 2017-11-30 06:17:07 -08:00
parent 60e1d7e90b
commit 6461b63623
3 changed files with 11 additions and 28 deletions

View file

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

View file

@ -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;

View file

@ -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;