summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKirill Burtsev <kirill.burtsev@qt.io>2022-02-02 19:05:33 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-02-04 20:15:54 +0000
commitb2931bd3d49518cb31063404630ba177e4ecc187 (patch)
tree45fd334efacdcc53779bc7c79cf9635e91b56f9a
parent51c16e6c80d99c0a1ddcf72861e78d5db2a343d4 (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>
-rw-r--r--src/core/compositor/compositor.h4
-rw-r--r--src/core/compositor/display_gl_output_surface.cpp1
-rw-r--r--src/core/compositor/display_software_output_surface.cpp6
-rw-r--r--src/webenginequick/render_widget_host_view_qt_delegate_quick.cpp1
-rw-r--r--src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp1
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 1a6e6cf72..c9f45fc15 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