diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_opengl.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_opengl.cpp index acde49904..083098757 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_opengl.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_opengl.cpp @@ -183,7 +183,7 @@ void OverlayWidget::RendererGL::paintTransformedVideoFrame( } if (data.format == Streaming::FrameFormat::ARGB32) { Assert(!data.original.isNull()); - paintTransformedStaticContent(data.original, geometry, false); + paintTransformedStaticContent(data.original, geometry, false, false); return; } Assert(data.format == Streaming::FrameFormat::YUV420); @@ -237,12 +237,14 @@ void OverlayWidget::RendererGL::paintTransformedVideoFrame( _yuv420Program->setUniformValue("u_texture", GLint(1)); _yuv420Program->setUniformValue("v_texture", GLint(2)); + toggleBlending(false); paintTransformedContent(&*_yuv420Program, geometry); } void OverlayWidget::RendererGL::paintTransformedStaticContent( const QImage &image, ContentGeometry geometry, + bool semiTransparent, bool fillTransparentBackground) { Expects(image.isNull() || image.format() == QImage::Format_RGB32 @@ -300,6 +302,7 @@ void OverlayWidget::RendererGL::paintTransformedStaticContent( } program->setUniformValue("s_texture", GLint(0)); + toggleBlending(semiTransparent && !fillTransparentBackground); paintTransformedContent(&*program, geometry); } @@ -341,7 +344,6 @@ void OverlayWidget::RendererGL::paintTransformedContent( program->setUniformValue("viewport", _uniformViewport); - toggleBlending(false); FillTexturedRectangle(*_f, &*program); } diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_opengl.h b/Telegram/SourceFiles/media/view/media_view_overlay_opengl.h index c0c5b43e3..dca170f5c 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_opengl.h +++ b/Telegram/SourceFiles/media/view/media_view_overlay_opengl.h @@ -45,6 +45,7 @@ private: void paintTransformedStaticContent( const QImage &image, ContentGeometry geometry, + bool semiTransparent, bool fillTransparentBackground) override; void paintTransformedContent( not_null program, diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_raster.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_raster.cpp index cce6d7831..7f60b9a60 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_raster.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_raster.cpp @@ -77,6 +77,7 @@ void OverlayWidget::RendererSW::paintTransformedVideoFrame( void OverlayWidget::RendererSW::paintTransformedStaticContent( const QImage &image, ContentGeometry geometry, + bool semiTransparent, bool fillTransparentBackground) { const auto rotation = int(geometry.rotation); const auto rect = TransformRect(geometry.rect, rotation); diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_raster.h b/Telegram/SourceFiles/media/view/media_view_overlay_raster.h index 72c6e6a00..365eb1c42 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_raster.h +++ b/Telegram/SourceFiles/media/view/media_view_overlay_raster.h @@ -26,6 +26,7 @@ private: void paintTransformedStaticContent( const QImage &image, ContentGeometry geometry, + bool semiTransparent, bool fillTransparentBackground) override; void paintTransformedImage( const QImage &image, diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_renderer.h b/Telegram/SourceFiles/media/view/media_view_overlay_renderer.h index 6f302915f..6b58abdcc 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_renderer.h +++ b/Telegram/SourceFiles/media/view/media_view_overlay_renderer.h @@ -18,6 +18,7 @@ public: virtual void paintTransformedStaticContent( const QImage &image, ContentGeometry geometry, + bool semiTransparent, bool fillTransparentBackground) = 0; virtual void paintRadialLoading( QRect inner, diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp index ee7dc30a3..252690e59 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp @@ -627,7 +627,8 @@ bool OverlayWidget::contentShown() const { bool OverlayWidget::opaqueContentShown() const { return contentShown() - && (!_document + && (!_staticContentTransparent + || !_document || (!_document->isVideoMessage() && !_document->sticker())); } @@ -3268,6 +3269,7 @@ void OverlayWidget::paint(not_null renderer) { renderer->paintTransformedStaticContent( _staticContent, contentGeometry(), + _staticContentTransparent, fillTransparentBackground); } paintRadialLoading(renderer);