Merge pull request #1332 from Andersama/patch-21

UI: Hide preview for sources and filters where possible
This commit is contained in:
Jim 2018-08-01 23:05:45 -07:00 committed by GitHub
commit 9565f9cd0c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 46 additions and 11 deletions

View File

@ -390,6 +390,19 @@
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">

View File

@ -56,7 +56,8 @@ OBSBasicFilters::OBSBasicFilters(QWidget *parent, OBSSource source_)
OBSBasicFilters::SourceRemoved, this),
renameSourceSignal (obs_source_get_signal_handler(source),
"rename",
OBSBasicFilters::SourceRenamed, this)
OBSBasicFilters::SourceRenamed, this),
noPreviewMargin (13)
{
main = reinterpret_cast<OBSBasic*>(parent);
@ -97,10 +98,10 @@ OBSBasicFilters::OBSBasicFilters(QWidget *parent, OBSSource source_)
connect(ui->buttonBox->button(QDialogButtonBox::Reset),
SIGNAL(clicked()), this, SLOT(ResetFilters()));
uint32_t flags = obs_source_get_output_flags(source);
bool audio = (flags & OBS_SOURCE_AUDIO) != 0;
bool audioOnly = (flags & OBS_SOURCE_VIDEO) == 0;
bool async = (flags & OBS_SOURCE_ASYNC) != 0;
uint32_t caps = obs_source_get_output_flags(source);
bool audio = (caps & OBS_SOURCE_AUDIO) != 0;
bool audioOnly = (caps & OBS_SOURCE_VIDEO) == 0;
bool async = (caps & OBS_SOURCE_ASYNC) != 0;
if (!async && !audio) {
ui->asyncWidget->setVisible(false);
@ -121,13 +122,19 @@ OBSBasicFilters::OBSBasicFilters(QWidget *parent, OBSSource source_)
};
enum obs_source_type type = obs_source_get_type(source);
uint32_t caps = obs_source_get_output_flags(source);
bool drawable_type = type == OBS_SOURCE_TYPE_INPUT ||
type == OBS_SOURCE_TYPE_SCENE;
if (drawable_type && (caps & OBS_SOURCE_VIDEO) != 0)
connect(ui->preview, &OBSQTDisplay::DisplayCreated,
addDrawCallback);
if ((caps & OBS_SOURCE_VIDEO) != 0) {
ui->rightLayout->setContentsMargins(0, 0, 0, 0);
ui->preview->show();
if (drawable_type)
connect(ui->preview, &OBSQTDisplay::DisplayCreated,
addDrawCallback);
} else {
ui->rightLayout->setContentsMargins(0, noPreviewMargin, 0, 0);
ui->preview->hide();
}
}
OBSBasicFilters::~OBSBasicFilters()
@ -179,6 +186,15 @@ void OBSBasicFilters::UpdatePropertiesView(int row, bool async)
OBSBasicFilters::UpdateProperties,
this);
uint32_t caps = obs_source_get_output_flags(filter);
if ((caps & OBS_SOURCE_VIDEO)) {
ui->rightLayout->setContentsMargins(0, 0, 0, 0);
ui->preview->show();
} else {
ui->rightLayout->setContentsMargins(0, noPreviewMargin, 0, 0);
ui->preview->hide();
}
obs_data_release(settings);
view->setMaximumHeight(250);

View File

@ -72,6 +72,8 @@ private:
bool isAsync;
int noPreviewMargin;
private slots:
void AddFilter(OBSSource filter);
void RemoveFilter(OBSSource filter);

View File

@ -114,15 +114,19 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_)
obs_display_add_draw_callback(preview->GetDisplay(),
OBSBasicProperties::DrawPreview, this);
};
enum obs_source_type type = obs_source_get_type(source);
uint32_t caps = obs_source_get_output_flags(source);
bool drawable_type = type == OBS_SOURCE_TYPE_INPUT ||
type == OBS_SOURCE_TYPE_SCENE;
bool drawable_preview = (caps & OBS_SOURCE_VIDEO) != 0;
if (drawable_type && (caps & OBS_SOURCE_VIDEO) != 0)
if (drawable_preview && drawable_type) {
preview->show();
connect(preview.data(), &OBSQTDisplay::DisplayCreated,
addDrawCallback);
} else {
preview->hide();
}
}
OBSBasicProperties::~OBSBasicProperties()