mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-19 17:49:14 +00:00
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:
parent
60e1d7e90b
commit
6461b63623
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue