viewer: fixed crash caused by setting interlace mode before opengl instance was initialized

This commit is contained in:
itsmattkc
2021-05-03 13:54:13 +10:00
parent 20b3fe76a8
commit b2835b77df
+9 -4
View File
@@ -126,10 +126,11 @@ void ViewerDisplayWidget::SetDeinterlacing(bool e)
{
deinterlace_ = e;
if (deinterlace_) {
deinterlace_shader_ = renderer()->CreateNativeShader(ShaderCode(FileFunctions::ReadFileAsString(QStringLiteral(":/shaders/deinterlace.frag"))));
} else {
renderer()->DestroyNativeShader(deinterlace_shader_);
if (!deinterlace_) {
if (!deinterlace_shader_.isNull()) {
renderer()->DestroyNativeShader(deinterlace_shader_);
deinterlace_shader_.clear();
}
deinterlace_texture_ = nullptr;
}
@@ -340,6 +341,10 @@ void ViewerDisplayWidget::OnPaint()
TexturePtr texture_to_draw = texture_;
if (deinterlace_) {
if (deinterlace_shader_.isNull()) {
deinterlace_shader_ = renderer()->CreateNativeShader(ShaderCode(FileFunctions::ReadFileAsString(QStringLiteral(":/shaders/deinterlace.frag"))));
}
if (!deinterlace_texture_
|| deinterlace_texture_->params() != texture_to_draw->params()) {
// (Re)create texture