diff options
author | Kirill Burtsev <kirill.burtsev@qt.io> | 2022-02-02 19:05:33 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-02-08 16:10:26 +0000 |
commit | b43c44fde9391f833026a6a36ba957e81a3bb609 (patch) | |
tree | e4634b2ef7aa189bb37deb60c8c19542150c29c2 /src | |
parent | 3c356d8f275d31bbba17fc6c1ebf0d7330dc11ef (diff) |
Fix accumulation of compositor-observer bindings for skia-on-gl
One of Compositor's derived classes, DisplaySkiaOutputDevice, was
missing call to 'unbind' from its observer, leading to not releasing
binding from global cache on destroy. Since unbind is done on destroy,
remove all explicit calls to unbind from derived classes, and just do
them in their base implementations. Ammends b117909825.
Change-Id: I75c909eaa22ca1946ad67aa5093a8ee268c3562b
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
(cherry picked from commit 16b2976e2c983cabe6011cd732e3ec46e3402d22)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
5 files changed, 2 insertions, 11 deletions
diff --git a/src/core/compositor/compositor.h b/src/core/compositor/compositor.h index 7968e8201..b0c7d212e 100644 --- a/src/core/compositor/compositor.h +++ b/src/core/compositor/compositor.h @@ -125,7 +125,7 @@ public: protected: Observer() = default; - ~Observer() = default; + ~Observer() { if (m_binding) unbind(); } private: Binding *m_binding = nullptr; @@ -177,7 +177,7 @@ public: protected: Compositor(Type type) : m_type(type) { } - virtual ~Compositor() = default; + virtual ~Compositor() { if (m_binding) unbind(); } private: template<typename T> diff --git a/src/core/compositor/display_gl_output_surface.cpp b/src/core/compositor/display_gl_output_surface.cpp index 7f27b6ac4..cdc93ce62 100644 --- a/src/core/compositor/display_gl_output_surface.cpp +++ b/src/core/compositor/display_gl_output_surface.cpp @@ -67,7 +67,6 @@ DisplayGLOutputSurface::DisplayGLOutputSurface( DisplayGLOutputSurface::~DisplayGLOutputSurface() { - unbind(); m_vizContextProvider->SetUpdateVSyncParametersCallback(viz::UpdateVSyncParametersCallback()); m_gl->DeleteFramebuffers(1, &m_fboId); } diff --git a/src/core/compositor/display_software_output_surface.cpp b/src/core/compositor/display_software_output_surface.cpp index b811449c9..c4bd6052b 100644 --- a/src/core/compositor/display_software_output_surface.cpp +++ b/src/core/compositor/display_software_output_surface.cpp @@ -57,7 +57,6 @@ class DisplaySoftwareOutputSurface::Device final : public viz::SoftwareOutputDev { public: Device(); - ~Device(); // Overridden from viz::SoftwareOutputDevice. void Resize(const gfx::Size &sizeInPixels, float devicePixelRatio) override; @@ -83,11 +82,6 @@ DisplaySoftwareOutputSurface::Device::Device() : Compositor(Type::Software) {} -DisplaySoftwareOutputSurface::Device::~Device() -{ - unbind(); -} - void DisplaySoftwareOutputSurface::Device::Resize(const gfx::Size &sizeInPixels, float devicePixelRatio) { if (viewport_pixel_size_ == sizeInPixels && m_devicePixelRatio == devicePixelRatio) diff --git a/src/webenginequick/render_widget_host_view_qt_delegate_quick.cpp b/src/webenginequick/render_widget_host_view_qt_delegate_quick.cpp index cdc0cf426..7a9fa86b2 100644 --- a/src/webenginequick/render_widget_host_view_qt_delegate_quick.cpp +++ b/src/webenginequick/render_widget_host_view_qt_delegate_quick.cpp @@ -69,7 +69,6 @@ RenderWidgetHostViewQtDelegateQuick::RenderWidgetHostViewQtDelegateQuick(RenderW RenderWidgetHostViewQtDelegateQuick::~RenderWidgetHostViewQtDelegateQuick() { - unbind(); QQuickWebEngineViewPrivate::bindViewAndWidget(nullptr, this); } diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp index 4fa0667b8..3d4e127dc 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp @@ -64,7 +64,6 @@ public: bind(client->compositorId()); } - ~RenderWidgetHostViewQuickItem() { unbind(); } protected: bool event(QEvent *event) override |