summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/FindGn.cmake3
-rw-r--r--cmake/QtConfigureHelpers.cmake2
-rw-r--r--configure.cmake8
-rw-r--r--src/core/CMakeLists.txt4
-rw-r--r--src/core/api/configure.cmake10
-rw-r--r--src/core/compositor/compositor.h3
-rw-r--r--src/core/compositor/native_skia_output_device.cpp10
-rw-r--r--src/core/compositor/native_skia_output_device.h1
-rw-r--r--src/core/compositor/native_skia_output_device_opengl.cpp86
-rw-r--r--src/core/compositor/wgl_helper.cpp34
-rw-r--r--src/core/compositor/wgl_helper.h5
-rw-r--r--src/core/render_widget_host_view_qt_delegate_item.cpp87
-rw-r--r--src/core/render_widget_host_view_qt_delegate_item.h2
-rw-r--r--src/webenginewidgets/api/qtwebenginewidgetsglobal.h1
-rw-r--r--src/webenginewidgets/api/qwebenginenotificationpresenter.cpp1
-rw-r--r--src/webenginewidgets/api/qwebenginenotificationpresenter_p.h1
-rw-r--r--src/webenginewidgets/api/qwebengineview.cpp1
-rw-r--r--src/webenginewidgets/api/qwebengineview.h1
-rw-r--r--src/webenginewidgets/api/qwebengineview_p.h1
-rw-r--r--src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.cpp1
-rw-r--r--src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.h1
-rw-r--r--src/webenginewidgets/qwebengine_accessible.cpp1
-rw-r--r--src/webenginewidgets/qwebengine_accessible_p.h1
-rw-r--r--src/webenginewidgets/ui/autofillpopupwidget.cpp1
-rw-r--r--src/webenginewidgets/ui/autofillpopupwidget_p.h1
-rw-r--r--src/webenginewidgets/ui/touchhandlewidget.cpp1
-rw-r--r--src/webenginewidgets/ui/touchhandlewidget_p.h1
-rw-r--r--src/webenginewidgets/ui/touchselectionmenuwidget.cpp1
-rw-r--r--src/webenginewidgets/ui/touchselectionmenuwidget_p.h1
29 files changed, 226 insertions, 45 deletions
diff --git a/cmake/FindGn.cmake b/cmake/FindGn.cmake
index f30edcd36..14cb3bc04 100644
--- a/cmake/FindGn.cmake
+++ b/cmake/FindGn.cmake
@@ -36,6 +36,9 @@ find_package_handle_standard_args(Gn
Gn_VERSION
REQUIRED_VARS
Gn_EXECUTABLE
+ FAIL_MESSAGE
+ "Could NOT find Gn. Building internal one instead."
+
)
if(Gn_FOUND AND NOT TARGET Gn::gn AND NOT CMAKE_SCRIPT_MODE_FILE)
diff --git a/cmake/QtConfigureHelpers.cmake b/cmake/QtConfigureHelpers.cmake
index e469fc67a..31b8c6230 100644
--- a/cmake/QtConfigureHelpers.cmake
+++ b/cmake/QtConfigureHelpers.cmake
@@ -64,7 +64,7 @@ macro(qt_webengine_check_support)
TYPE WARNING
MESSAGE "${module_checked} won't be built. ${error_message}"
)
- qt_webengine_add_error_target(${module_checked} "Delete CMakeCache.txt and try to reconfigure.")
+ qt_webengine_add_error_target(${module_checked} "Delete CMakeCache.txt, Gn stamp files in <build_dir>/src/gn/src/gn-stamp/* and try to reconfigure.")
endif()
endif()
endforeach()
diff --git a/configure.cmake b/configure.cmake
index f37910d7c..32b152c02 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -25,6 +25,7 @@ qt_webengine_set_version(vpx 1.10.0)
qt_webengine_set_version(libavutil 58.29.100)
qt_webengine_set_version(libavcodec 60.31.102)
qt_webengine_set_version(libavformat 60.16.100)
+qt_webengine_set_version(openh264 2.4.1)
qt_webengine_set_version(windows_sdk 26100) # we only care about minor number "10.0.26100.0"
if(QT_CONFIGURE_RUNNING)
@@ -93,6 +94,7 @@ if(PkgConfig_FOUND)
pkg_check_modules(XKBFILE xkbfile)
pkg_check_modules(XCBDRI3 xcb-dri3)
pkg_check_modules(LIBUDEV libudev)
+ pkg_check_modules(OPENH264 openh264>=${QT_CONFIGURE_CHECK_openh264_version})
endif()
if(Python3_EXECUTABLE)
@@ -723,6 +725,11 @@ qt_feature("webengine-system-libudev" PRIVATE
CONDITION UNIX AND LIBUDEV_FOUND
)
+qt_feature("webengine-system-openh264" PRIVATE
+ LABEL "openh264"
+ CONDITION UNIX AND OPENH264_FOUND
+)
+
qt_feature("webengine-ozone-x11" PRIVATE
LABEL "Support X11 on qpa-xcb"
CONDITION LINUX
@@ -778,6 +785,7 @@ if(UNIX)
qt_configure_add_summary_entry(ARGS "webengine-system-freetype")
qt_configure_add_summary_entry(ARGS "webengine-system-libpci")
qt_configure_add_summary_entry(ARGS "webengine-system-libudev")
+ qt_configure_add_summary_entry(ARGS "webengine-system-openh264")
qt_configure_end_summary_section()
endif()
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 23dc00dfa..ff8c958cb 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -535,6 +535,10 @@ foreach(arch ${archs})
CONDITION QT_FEATURE_webengine_system_gbm
)
extend_gn_list(gnArgArg
+ ARGS rtc_system_openh264
+ CONDITION QT_FEATURE_webengine_webrtc_system_openh264
+ )
+ extend_gn_list(gnArgArg
ARGS use_vaapi
CONDITION QT_FEATURE_webengine_vaapi
)
diff --git a/src/core/api/configure.cmake b/src/core/api/configure.cmake
index 4a556656e..79f44f9a2 100644
--- a/src/core/api/configure.cmake
+++ b/src/core/api/configure.cmake
@@ -84,6 +84,12 @@ qt_feature("webengine-system-gbm" PRIVATE
AUTODETECT UNIX
CONDITION GBM_FOUND
)
+qt_feature("webengine-webrtc-system-openh264" PRIVATE
+ LABEL "Use system openh264 for webrtc"
+ CONDITION UNIX
+ AND QT_FEATURE_webengine_system_openh264
+ AND QT_FEATURE_webengine_proprietary_codecs
+)
qt_feature("webengine-printing-and-pdf" PRIVATE
LABEL "Printing and PDF"
PURPOSE "Provides printing and output to PDF."
@@ -224,6 +230,10 @@ qt_configure_add_summary_entry(
ARGS "webengine-system-pulseaudio"
CONDITION LINUX
)
+qt_configure_add_summary_entry(
+ ARGS "webengine-webrtc-system-openh264"
+ CONDITION UNIX
+)
qt_configure_add_summary_entry(ARGS "webengine-v8-context-snapshot")
qt_configure_add_summary_entry(ARGS "webenginedriver")
qt_configure_end_summary_section() # end of "Qt WebEngineCore" section
diff --git a/src/core/compositor/compositor.h b/src/core/compositor/compositor.h
index aebd8f4c5..b160ca03c 100644
--- a/src/core/compositor/compositor.h
+++ b/src/core/compositor/compositor.h
@@ -131,6 +131,9 @@ public:
// Is the texture produced upside down?
virtual bool textureIsFlipped();
+ // Are there resources to be released?
+ virtual bool hasResources() { return false; }
+
// Release resources created in texture()
virtual void releaseResources();
diff --git a/src/core/compositor/native_skia_output_device.cpp b/src/core/compositor/native_skia_output_device.cpp
index b91512a40..8b79d574c 100644
--- a/src/core/compositor/native_skia_output_device.cpp
+++ b/src/core/compositor/native_skia_output_device.cpp
@@ -180,6 +180,11 @@ void NativeSkiaOutputDevice::releaseTexture()
}
}
+bool NativeSkiaOutputDevice::hasResources()
+{
+ return m_frontBuffer && m_frontBuffer->textureCleanupCallback;
+}
+
void NativeSkiaOutputDevice::releaseResources()
{
if (m_frontBuffer)
@@ -225,7 +230,10 @@ NativeSkiaOutputDevice::Buffer::Buffer(NativeSkiaOutputDevice *parent)
NativeSkiaOutputDevice::Buffer::~Buffer()
{
- DCHECK(!textureCleanupCallback);
+ // FIXME: Can't be called in case of threaded rendering with unexposed window.
+ //DCHECK(!textureCleanupCallback);
+ if (textureCleanupCallback)
+ qWarning("NativeSkiaOutputDevice: Leaking graphics resources.");
if (m_scopedSkiaWriteAccess)
endWriteSkia(false);
diff --git a/src/core/compositor/native_skia_output_device.h b/src/core/compositor/native_skia_output_device.h
index 9a573055d..a405f6684 100644
--- a/src/core/compositor/native_skia_output_device.h
+++ b/src/core/compositor/native_skia_output_device.h
@@ -74,6 +74,7 @@ public:
void swapFrame() override;
void waitForTexture() override;
void releaseTexture() override;
+ bool hasResources() override;
void releaseResources() override;
bool textureIsFlipped() override;
QSize size() override;
diff --git a/src/core/compositor/native_skia_output_device_opengl.cpp b/src/core/compositor/native_skia_output_device_opengl.cpp
index c43311d80..49bacd5fc 100644
--- a/src/core/compositor/native_skia_output_device_opengl.cpp
+++ b/src/core/compositor/native_skia_output_device_opengl.cpp
@@ -51,6 +51,56 @@
namespace QtWebEngineCore {
+class ScopedGLContextForCleanup
+{
+public:
+ ScopedGLContextForCleanup(QOpenGLContext *createContext, QSurface *createSurface)
+ : m_createContext(createContext), m_currentContext(QOpenGLContext::currentContext())
+ {
+ if (m_createContext == m_currentContext)
+ return;
+
+ if (!m_createContext->isValid()) {
+ skipCleanup = true;
+ return;
+ }
+
+ if (m_currentContext)
+ m_currentSurface = m_currentContext->surface();
+
+ if (!createContext->makeCurrent(createSurface)) {
+ skipCleanup = true;
+ qWarning("Failed to make OpenGL context current for clean-up, OpenGL resources will "
+ "not be destroyed.");
+ }
+ }
+
+ ~ScopedGLContextForCleanup()
+ {
+ if (!m_currentContext || m_createContext == m_currentContext || skipCleanup)
+ return;
+
+ if (!m_currentContext->makeCurrent(m_currentSurface))
+ qFatal("Failed to restore OpenGL context after clean-up.");
+ }
+
+ void deleteTexture(GLuint glTexture)
+ {
+ if (skipCleanup)
+ return;
+
+ auto *glFun = m_createContext->functions();
+ Q_ASSERT(glFun->glGetError() == GL_NO_ERROR);
+ glFun->glDeleteTextures(1, &glTexture);
+ }
+
+private:
+ QOpenGLContext *m_createContext;
+ QOpenGLContext *m_currentContext;
+ QSurface *m_currentSurface = nullptr;
+ bool skipCleanup = false;
+};
+
NativeSkiaOutputDeviceOpenGL::NativeSkiaOutputDeviceOpenGL(
scoped_refptr<gpu::SharedContextState> contextState, bool requiresAlpha,
gpu::MemoryTracker *memoryTracker, viz::SkiaOutputSurfaceDependency *dependency,
@@ -221,10 +271,12 @@ QSGTexture *NativeSkiaOutputDeviceOpenGL::texture(QQuickWindow *win, uint32_t te
glxFun->glXBindTexImageEXT(display, glxPixmap, GLX_FRONT_LEFT_EXT, nullptr);
glFun->glBindTexture(GL_TEXTURE_2D, 0);
- m_frontBuffer->textureCleanupCallback = [glFun, glxFun, display, glxPixmap, glTexture,
- glxHelper, pixmapId]() {
+ QSurface *createSurface = glContext->surface();
+ m_frontBuffer->textureCleanupCallback = [glContext, createSurface, glxFun, display,
+ glxPixmap, glTexture, glxHelper, pixmapId]() {
+ ScopedGLContextForCleanup cleanupContext(glContext, createSurface);
glxFun->glXReleaseTexImageEXT(display, glxPixmap, GLX_FRONT_LEFT_EXT);
- glFun->glDeleteTextures(1, &glTexture);
+ cleanupContext.deleteTexture(glTexture);
glXDestroyGLXPixmap(display, glxPixmap);
glxHelper->freePixmap(pixmapId);
};
@@ -273,9 +325,11 @@ QSGTexture *NativeSkiaOutputDeviceOpenGL::texture(QQuickWindow *win, uint32_t te
glExtFun->glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, eglImage);
glFun->glBindTexture(GL_TEXTURE_2D, 0);
- m_frontBuffer->textureCleanupCallback = [glFun, eglFun, glTexture, eglDisplay,
- eglImage]() {
- glFun->glDeleteTextures(1, &glTexture);
+ QSurface *createSurface = glContext->surface();
+ m_frontBuffer->textureCleanupCallback = [glContext, createSurface, eglFun, glTexture,
+ eglDisplay, eglImage]() {
+ ScopedGLContextForCleanup cleanupContext(glContext, createSurface);
+ cleanupContext.deleteTexture(glTexture);
eglFun->eglDestroyImage(eglDisplay, eglImage);
};
}
@@ -328,11 +382,12 @@ QSGTexture *NativeSkiaOutputDeviceOpenGL::texture(QQuickWindow *win, uint32_t te
glMemoryObject, 0);
glFun->glBindTexture(GL_TEXTURE_2D, 0);
- m_frontBuffer->textureCleanupCallback = [glFun, glExtFun, glTexture, glMemoryObject]() {
- Q_ASSERT(glFun->glGetError() == GL_NO_ERROR);
-
+ QSurface *createSurface = glContext->surface();
+ m_frontBuffer->textureCleanupCallback = [glContext, createSurface, glExtFun, glTexture,
+ glMemoryObject]() {
+ ScopedGLContextForCleanup cleanupContext(glContext, createSurface);
glExtFun->glDeleteMemoryObjectsEXT(1, &glMemoryObject);
- glFun->glDeleteTextures(1, &glTexture);
+ cleanupContext.deleteTexture(glTexture);
};
#else
Q_UNREACHABLE();
@@ -384,12 +439,11 @@ QSGTexture *NativeSkiaOutputDeviceOpenGL::texture(QQuickWindow *win, uint32_t te
uint32_t glTexture = makeCGLTexture(win, ioSurface.get(), size());
texture = QNativeInterface::QSGOpenGLTexture::fromNative(glTexture, win, size(), texOpts);
- m_frontBuffer->textureCleanupCallback = [glTexture]() {
- auto *glContext = QOpenGLContext::currentContext();
- if (!glContext)
- return;
- auto glFun = glContext->functions();
- glFun->glDeleteTextures(1, &glTexture);
+ QOpenGLContext *glContext = QOpenGLContext::currentContext();
+ QSurface *createSurface = glContext->surface();
+ m_frontBuffer->textureCleanupCallback = [glContext, createSurface, glTexture]() {
+ ScopedGLContextForCleanup cleanupContext(glContext, createSurface);
+ cleanupContext.deleteTexture(glTexture);
};
#endif // BUILDFLAG(IS_OZONE)
diff --git a/src/core/compositor/wgl_helper.cpp b/src/core/compositor/wgl_helper.cpp
index 85e6bb915..3c3a096b9 100644
--- a/src/core/compositor/wgl_helper.cpp
+++ b/src/core/compositor/wgl_helper.cpp
@@ -124,9 +124,10 @@ D3DSharedTexture::D3DSharedTexture(WGLHelper::WGLFunctions *wglFun, ID3D11Device
// for an already shared texture.
immediateContext->CopyResource(m_d3dTexture.Get(), srcTexture.Get());
- auto *glContext = QOpenGLContext::currentContext();
- Q_ASSERT(glContext);
- auto *glFun = glContext->functions();
+ m_createContext = QOpenGLContext::currentContext();
+ m_createSurface = m_createContext->surface();
+ Q_ASSERT(m_createContext);
+ auto *glFun = m_createContext->functions();
glFun->glGenTextures(1, &m_glTexture);
@@ -148,10 +149,31 @@ D3DSharedTexture::~D3DSharedTexture()
m_wglFun->wglDXUnregisterObjectNV(m_interopDevice, m_glTextureHandle);
}
- auto *glContext = QOpenGLContext::currentContext();
- if (m_glTexture && glContext) {
- auto *glFun = glContext->functions();
+ if (m_glTexture) {
+ QOpenGLContext *currentContext = QOpenGLContext::currentContext();
+ QSurface *currentSurface = nullptr;
+
+ if (m_createContext != currentContext) {
+ if (currentContext)
+ currentSurface = currentContext->surface();
+
+ if (!m_createContext->makeCurrent(m_createSurface)) {
+ qWarning("Failed to make OpenGL context current for clean-up, OpenGL resources "
+ "will not be destroyed.");
+ return;
+ }
+ }
+
+ if (!m_createContext->isValid())
+ return;
+
+ auto *glFun = m_createContext->functions();
glFun->glDeleteTextures(1, &m_glTexture);
+
+ if (currentSurface) {
+ if (!currentContext->makeCurrent(currentSurface))
+ qFatal("Failed to restore OpenGL context after clean-up.");
+ }
}
}
diff --git a/src/core/compositor/wgl_helper.h b/src/core/compositor/wgl_helper.h
index c726c234c..1f94e0706 100644
--- a/src/core/compositor/wgl_helper.h
+++ b/src/core/compositor/wgl_helper.h
@@ -20,6 +20,9 @@
QT_BEGIN_NAMESPACE
+class QOpenGLContext;
+class QSurface;
+
class WGLHelper
{
public:
@@ -88,6 +91,8 @@ private:
HANDLE m_interopDevice;
Microsoft::WRL::ComPtr<ID3D11Texture2D> m_d3dTexture;
+ QOpenGLContext *m_createContext = nullptr;
+ QSurface *m_createSurface = nullptr;
GLuint m_glTexture = 0;
HANDLE m_glTextureHandle = INVALID_HANDLE_VALUE;
diff --git a/src/core/render_widget_host_view_qt_delegate_item.cpp b/src/core/render_widget_host_view_qt_delegate_item.cpp
index 77adb843c..dc8eac4de 100644
--- a/src/core/render_widget_host_view_qt_delegate_item.cpp
+++ b/src/core/render_widget_host_view_qt_delegate_item.cpp
@@ -5,10 +5,13 @@
#include "render_widget_host_view_qt_delegate_client.h"
+#include <QtCore/qrunnable.h>
+#include <QtCore/qthread.h>
#include <QtGui/qevent.h>
#include <QtGui/qguiapplication.h>
#include <QtGui/qwindow.h>
#include <QtQuick/qsgimagenode.h>
+#include <rhi/qrhi.h>
#if QT_CONFIG(accessibility)
#include <QtGui/qaccessible.h>
@@ -37,7 +40,9 @@ RenderWidgetHostViewQtDelegateItem::RenderWidgetHostViewQtDelegateItem(RenderWid
RenderWidgetHostViewQtDelegateItem::~RenderWidgetHostViewQtDelegateItem()
{
- releaseTextureResources();
+ if (QQuickItem::window())
+ releaseResources();
+
unbind(); // Compositor::Observer
if (m_widgetDelegate) {
m_widgetDelegate->Unbind();
@@ -326,12 +331,6 @@ void RenderWidgetHostViewQtDelegateItem::itemChange(ItemChange change, const Ite
for (const QMetaObject::Connection &c : std::as_const(m_windowConnections))
disconnect(c);
m_windowConnections.clear();
-
- auto comp = compositor();
- if (comp && comp->type() == Compositor::Type::Native) {
- comp->releaseTexture();
- comp->releaseResources();
- }
}
if (value.window) {
@@ -343,10 +342,12 @@ void RenderWidgetHostViewQtDelegateItem::itemChange(ItemChange change, const Ite
m_windowConnections.append(connect(value.window, SIGNAL(xChanged(int)), SLOT(onWindowPosChanged())));
m_windowConnections.append(
connect(value.window, SIGNAL(yChanged(int)), SLOT(onWindowPosChanged())));
- m_windowConnections.append(
- connect(value.window, &QQuickWindow::sceneGraphAboutToStop, this,
- &RenderWidgetHostViewQtDelegateItem::releaseTextureResources,
- Qt::DirectConnection));
+ m_windowConnections.append(connect(
+ value.window, &QQuickWindow::sceneGraphAboutToStop, this,
+ &RenderWidgetHostViewQtDelegateItem::releaseResources, Qt::DirectConnection));
+ m_windowConnections.append(connect(
+ value.window, &QQuickWindow::sceneGraphInvalidated, this,
+ &RenderWidgetHostViewQtDelegateItem::releaseResources, Qt::DirectConnection));
if (!m_isPopup)
m_windowConnections.append(connect(value.window, SIGNAL(closing(QQuickCloseEvent*)), SLOT(onHide())));
}
@@ -366,6 +367,61 @@ void RenderWidgetHostViewQtDelegateItem::itemChange(ItemChange change, const Ite
}
}
+class CleanupJob : public QRunnable
+{
+public:
+ CleanupJob(Compositor::Handle<Compositor> compositor) : m_compositor(std::move(compositor)) { }
+
+ ~CleanupJob()
+ {
+ if (m_compositor->hasResources()) {
+ qWarning("Failed to release graphics resources because the clean-up render job was "
+ "deleted.");
+ }
+ }
+
+ void run() override { m_compositor->releaseResources(); }
+
+private:
+ Compositor::Handle<Compositor> m_compositor;
+};
+
+void RenderWidgetHostViewQtDelegateItem::releaseResources()
+{
+ auto comp = compositor();
+ if (!comp || comp->type() != Compositor::Type::Native || !comp->hasResources())
+ return;
+
+ comp->releaseTexture();
+
+ QQuickWindow *win = QQuickItem::window();
+ if (!win) {
+ qWarning("Failed to release graphics resources because QQuickWindow is not available.");
+ return;
+ }
+
+ QRhi *rhi = win->rhi();
+ if (!rhi) {
+ qWarning("Failed to release graphics resources because RHI is not available.");
+ return;
+ }
+
+ // Do not schedule clean-up if the resources were created on the current thread.
+ if (QThread::currentThread() == rhi->thread()) {
+ comp->releaseResources();
+ return;
+ }
+
+ if (win->isExposed())
+ win->scheduleRenderJob(new CleanupJob(std::move(comp)), QQuickWindow::NoStage);
+ else {
+ // TODO: Try to find a proper way to schedule job on the render thread if the window is
+ // not exposed.
+ // This is reproducible with ./tst_qquickwebengineviewgraphics simpleGraphics simpleGraphics
+ qWarning("Failed to release graphics resources because QQuickWindow is not exposed.");
+ }
+}
+
QSGNode *RenderWidgetHostViewQtDelegateItem::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
auto comp = compositor();
@@ -447,15 +503,6 @@ void RenderWidgetHostViewQtDelegateItem::onHide()
m_client->forwardEvent(&event);
}
-void RenderWidgetHostViewQtDelegateItem::releaseTextureResources()
-{
- auto comp = compositor();
- if (!comp || comp->type() != Compositor::Type::Native)
- return;
-
- comp->releaseResources();
-}
-
void RenderWidgetHostViewQtDelegateItem::adapterClientChanged(WebContentsAdapterClient *client)
{
m_adapterClient = client;
diff --git a/src/core/render_widget_host_view_qt_delegate_item.h b/src/core/render_widget_host_view_qt_delegate_item.h
index 65fbeeb17..f0351aa9f 100644
--- a/src/core/render_widget_host_view_qt_delegate_item.h
+++ b/src/core/render_widget_host_view_qt_delegate_item.h
@@ -95,6 +95,7 @@ protected:
void inputMethodEvent(QInputMethodEvent *event) override;
void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override;
void itemChange(ItemChange change, const ItemChangeData &value) override;
+ void releaseResources() override;
QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *) override;
void adapterClientChanged(WebContentsAdapterClient *client) override;
@@ -104,7 +105,6 @@ private Q_SLOTS:
void onBeforeRendering();
void onAfterFrameEnd();
void onWindowPosChanged();
- void releaseTextureResources();
void onHide();
private:
diff --git a/src/webenginewidgets/api/qtwebenginewidgetsglobal.h b/src/webenginewidgets/api/qtwebenginewidgetsglobal.h
index 58b9c7a2b..edf6632ac 100644
--- a/src/webenginewidgets/api/qtwebenginewidgetsglobal.h
+++ b/src/webenginewidgets/api/qtwebenginewidgetsglobal.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QTWEBENGINEWIDGETSGLOBAL_H
#define QTWEBENGINEWIDGETSGLOBAL_H
diff --git a/src/webenginewidgets/api/qwebenginenotificationpresenter.cpp b/src/webenginewidgets/api/qwebenginenotificationpresenter.cpp
index 83814fe4a..2adcbf912 100644
--- a/src/webenginewidgets/api/qwebenginenotificationpresenter.cpp
+++ b/src/webenginewidgets/api/qwebenginenotificationpresenter.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qwebenginenotificationpresenter_p.h"
diff --git a/src/webenginewidgets/api/qwebenginenotificationpresenter_p.h b/src/webenginewidgets/api/qwebenginenotificationpresenter_p.h
index 61e7f9e45..c42c6cc84 100644
--- a/src/webenginewidgets/api/qwebenginenotificationpresenter_p.h
+++ b/src/webenginewidgets/api/qwebenginenotificationpresenter_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QWEBENGINENOTIFICATIONPRESENTER_P_H
#define QWEBENGINENOTIFICATIONPRESENTER_P_H
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp
index 53fcc4628..9745654ac 100644
--- a/src/webenginewidgets/api/qwebengineview.cpp
+++ b/src/webenginewidgets/api/qwebengineview.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:critical reason:data-parser
#include "qapplication.h"
#include "qwebenginenotificationpresenter_p.h"
diff --git a/src/webenginewidgets/api/qwebengineview.h b/src/webenginewidgets/api/qwebengineview.h
index 008aaa032..48d82acb1 100644
--- a/src/webenginewidgets/api/qwebengineview.h
+++ b/src/webenginewidgets/api/qwebengineview.h
@@ -1,5 +1,6 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:critical reason:data-parser
#ifndef QWEBENGINEVIEW_H
#define QWEBENGINEVIEW_H
diff --git a/src/webenginewidgets/api/qwebengineview_p.h b/src/webenginewidgets/api/qwebengineview_p.h
index 389bc4a66..27ad6db71 100644
--- a/src/webenginewidgets/api/qwebengineview_p.h
+++ b/src/webenginewidgets/api/qwebengineview_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:critical reason:data-parser
#ifndef QWEBENGINEVIEW_P_H
#define QWEBENGINEVIEW_P_H
diff --git a/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.cpp b/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.cpp
index 6ba64a178..f018b6d19 100644
--- a/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.cpp
+++ b/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qwebengineview_plugin.h"
diff --git a/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.h b/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.h
index a7150151d..6706ab34e 100644
--- a/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.h
+++ b/src/webenginewidgets/plugins/qwebengineview/qwebengineview_plugin.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QWEBENGINEVIEW_PLUGIN_H
#define QWEBENGINEVIEW_PLUGIN_H
diff --git a/src/webenginewidgets/qwebengine_accessible.cpp b/src/webenginewidgets/qwebengine_accessible.cpp
index cbdd90104..402a8cf0f 100644
--- a/src/webenginewidgets/qwebengine_accessible.cpp
+++ b/src/webenginewidgets/qwebengine_accessible.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qwebengine_accessible_p.h"
diff --git a/src/webenginewidgets/qwebengine_accessible_p.h b/src/webenginewidgets/qwebengine_accessible_p.h
index 99604d90d..c95514737 100644
--- a/src/webenginewidgets/qwebengine_accessible_p.h
+++ b/src/webenginewidgets/qwebengine_accessible_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QWEBENGINE_ACCESSIBLE_H
#define QWEBENGINE_ACCESSIBLE_H
diff --git a/src/webenginewidgets/ui/autofillpopupwidget.cpp b/src/webenginewidgets/ui/autofillpopupwidget.cpp
index a4dc31beb..4e463361a 100644
--- a/src/webenginewidgets/ui/autofillpopupwidget.cpp
+++ b/src/webenginewidgets/ui/autofillpopupwidget.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "autofillpopupwidget_p.h"
#include "qwebengineview.h"
diff --git a/src/webenginewidgets/ui/autofillpopupwidget_p.h b/src/webenginewidgets/ui/autofillpopupwidget_p.h
index 79decc6ab..d84b34bef 100644
--- a/src/webenginewidgets/ui/autofillpopupwidget_p.h
+++ b/src/webenginewidgets/ui/autofillpopupwidget_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef AUTOFILLPOPUPWIDGET_P_H
#define AUTOFILLPOPUPWIDGET_P_H
diff --git a/src/webenginewidgets/ui/touchhandlewidget.cpp b/src/webenginewidgets/ui/touchhandlewidget.cpp
index 88af0ff36..b855e425c 100644
--- a/src/webenginewidgets/ui/touchhandlewidget.cpp
+++ b/src/webenginewidgets/ui/touchhandlewidget.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "touchhandlewidget_p.h"
#include "qwebengineview.h"
diff --git a/src/webenginewidgets/ui/touchhandlewidget_p.h b/src/webenginewidgets/ui/touchhandlewidget_p.h
index 9f181c935..9ab8fc9d6 100644
--- a/src/webenginewidgets/ui/touchhandlewidget_p.h
+++ b/src/webenginewidgets/ui/touchhandlewidget_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef TOUCHHANDLEWIDGET_P_H
#define TOUCHHANDLEWIDGET_P_H
diff --git a/src/webenginewidgets/ui/touchselectionmenuwidget.cpp b/src/webenginewidgets/ui/touchselectionmenuwidget.cpp
index ff69fe84b..dee65ae0e 100644
--- a/src/webenginewidgets/ui/touchselectionmenuwidget.cpp
+++ b/src/webenginewidgets/ui/touchselectionmenuwidget.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "touchselectionmenuwidget_p.h"
#include "qwebengineview.h"
diff --git a/src/webenginewidgets/ui/touchselectionmenuwidget_p.h b/src/webenginewidgets/ui/touchselectionmenuwidget_p.h
index 1f822023b..89216a510 100644
--- a/src/webenginewidgets/ui/touchselectionmenuwidget_p.h
+++ b/src/webenginewidgets/ui/touchselectionmenuwidget_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef TOUCHSELECTIONMENUWIDGET_P_H
#define TOUCHSELECTIONMENUWIDGET_P_H