summaryrefslogtreecommitdiff
path: root/www/qt6-webengine
diff options
context:
space:
mode:
Diffstat (limited to 'www/qt6-webengine')
-rw-r--r--www/qt6-webengine/Makefile28
-rw-r--r--www/qt6-webengine/distinfo6
-rw-r--r--www/qt6-webengine/files/patch-cmake_Functions.cmake4
-rw-r--r--www/qt6-webengine/files/patch-cmake_QtToolchainHelpers.cmake10
-rw-r--r--www/qt6-webengine/files/patch-configure.cmake16
-rw-r--r--www/qt6-webengine/files/patch-security-rollup246
-rw-r--r--www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_signin_profile__picker__handler.cc4
-rw-r--r--www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__init.cc18
-rw-r--r--www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_build_scripts_gperf.py27
-rw-r--r--www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_runtime__enabled__features.json58
-rw-r--r--www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_dragdrop_os__exchange__data__provider__non__backed.cc4
-rw-r--r--www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.cc4
-rw-r--r--www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.h4
-rw-r--r--www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_gfx_linux_gbm__wrapper.cc4
-rw-r--r--www/qt6-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc2
-rw-r--r--www/qt6-webengine/files/patch-src_core_CMakeLists.txt10
-rw-r--r--www/qt6-webengine/files/patch-src_core_api_configure.cmake8
-rw-r--r--www/qt6-webengine/files/patch-src_core_compositor_native__skia__output__device__opengl.cpp4
18 files changed, 320 insertions, 87 deletions
diff --git a/www/qt6-webengine/Makefile b/www/qt6-webengine/Makefile
index af4e2c6f7452..9939ff2dc4d5 100644
--- a/www/qt6-webengine/Makefile
+++ b/www/qt6-webengine/Makefile
@@ -12,22 +12,25 @@
PORTNAME?= webengine
DISTVERSION= ${QT6_VERSION}
-PORTREVISION?= 0 # Master port for print/qt6-pdf. Please keep this line.
+# This is the parent port of print/qt6-pdf. Please always keep 'PORTREVISION?='
+# and reset the value to '0' only after increasing QT6_VERSION in Mk/Uses/qt.mk.
+PORTREVISION?= 0
CATEGORIES?= www
PKGNAMEPREFIX= qt6-
MAINTAINER= kde@FreeBSD.org
COMMENT?= Qt 6 library to render web content
-BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}html5lib>0:www/py-html5lib@${PY_FLAVOR} \
- ${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers
+# 32-bit platforms are not supported by upstream, but we're limping them along.
+ONLY_FOR_ARCHS= aarch64 amd64 armv7 i386
+
+BUILD_DEPENDS= ${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers
LIB_DEPENDS= libfreetype.so:print/freetype2 \
libnss3.so:security/nss \
libopenjp2.so:graphics/openjpeg \
libxkbcommon.so:x11/libxkbcommon
-USES= bison cmake compiler:c++20-lang gl gperf \
- localbase:ldflags ninja:build nodejs:build,lts \
+USES= cmake compiler:c++20-lang gl localbase:ldflags ninja:build \
pkgconfig python:build qt-dist:6,webengine
USE_GL= opengl
USE_QT= base declarative tools
@@ -45,7 +48,8 @@ CMAKE_OFF+= QT_FEATURE_qtwebengine_build
SYS_LIBS= freetype
.else
-BUILD_DEPENDS+= ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat
+BUILD_DEPENDS+= ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \
+ ${PYTHON_PKGNAMEPREFIX}html5lib>0:www/py-html5lib@${PY_FLAVOR}
LIB_DEPENDS+= libabsl_base.so:devel/abseil \
libavcodec.so:multimedia/ffmpeg \
libdbus-1.so:devel/dbus \
@@ -68,7 +72,7 @@ LIB_DEPENDS+= libabsl_base.so:devel/abseil \
libvpx.so:multimedia/libvpx \
libwebp.so:graphics/webp
-USES+= gnome jpeg minizip xorg
+USES+= bison gnome gperf jpeg minizip xorg
USE_GL+= gbm
USE_QT+= positioning quick3d:build webchannel
USE_GNOME+= glib20 libxml2 libxslt
@@ -139,6 +143,16 @@ SNDIO_CMAKE_ON= -DQT_FEATURE_webengine_system_sndio:BOOL=ON
SNDIO_CMAKE_OFF= -DQT_FEATURE_webengine_system_sndio:BOOL=OFF
.endif
+.include <bsd.port.options.mk>
+
+.if !defined(BUILD_QTPDF)
+. if ${ARCH:Mi386}
+USES+= nodejs:build,20
+. else
+USES+= nodejs:build,lts
+. endif
+.endif
+
post-extract:
@${MKDIR} ${WRKSRC}/src/3rdparty/chromium/media/audio/sndio \
${WRKSRC}/src/3rdparty/chromium/sandbox/policy/freebsd \
diff --git a/www/qt6-webengine/distinfo b/www/qt6-webengine/distinfo
index d4d0b5b8184a..1937cd5f2816 100644
--- a/www/qt6-webengine/distinfo
+++ b/www/qt6-webengine/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1749159742
-SHA256 (KDE/Qt/6.9.1/qtwebengine-everywhere-src-6.9.1.tar.xz) = 787dfde22b348f6d620f2207ed7e32ad0a5389373182614272de28ff3f91c26c
-SIZE (KDE/Qt/6.9.1/qtwebengine-everywhere-src-6.9.1.tar.xz) = 672204388
+TIMESTAMP = 1756198709
+SHA256 (KDE/Qt/6.9.2/qtwebengine-everywhere-src-6.9.2.tar.xz) = 99cb0792abc2e39b299d73d8e2aa076b9ebcd55c3f4a4b5fd514eef5a62d03ab
+SIZE (KDE/Qt/6.9.2/qtwebengine-everywhere-src-6.9.2.tar.xz) = 672191852
diff --git a/www/qt6-webengine/files/patch-cmake_Functions.cmake b/www/qt6-webengine/files/patch-cmake_Functions.cmake
index 8264af9b3658..8bb309145150 100644
--- a/www/qt6-webengine/files/patch-cmake_Functions.cmake
+++ b/www/qt6-webengine/files/patch-cmake_Functions.cmake
@@ -1,4 +1,4 @@
---- cmake/Functions.cmake.orig 2025-05-29 01:27:28 UTC
+--- cmake/Functions.cmake.orig 2025-08-18 00:53:11 UTC
+++ cmake/Functions.cmake
@@ -103,7 +103,7 @@ function(add_linker_options target buildDir completeSt
set(libs_rsp "${buildDir}/${ninjaTarget}_libs.rsp")
@@ -9,7 +9,7 @@
get_gn_arch(cpu ${TEST_architecture_arch})
if(CMAKE_CROSSCOMPILING AND cpu STREQUAL "arm" AND ${config} STREQUAL "Debug")
target_link_options(${cmakeTarget} PRIVATE "LINKER:--long-plt")
-@@ -370,6 +370,20 @@ function(add_gn_build_artifacts_to_target)
+@@ -373,6 +373,20 @@ function(add_gn_build_artifacts_to_target)
set_target_properties(${arg_CMAKE_TARGET} PROPERTIES
LINK_DEPENDS ${arg_BUILDDIR}/${config}/${arch}/${arg_NINJA_STAMP}
)
diff --git a/www/qt6-webengine/files/patch-cmake_QtToolchainHelpers.cmake b/www/qt6-webengine/files/patch-cmake_QtToolchainHelpers.cmake
index 4417cdb8a943..b732070f2d7e 100644
--- a/www/qt6-webengine/files/patch-cmake_QtToolchainHelpers.cmake
+++ b/www/qt6-webengine/files/patch-cmake_QtToolchainHelpers.cmake
@@ -1,4 +1,4 @@
---- cmake/QtToolchainHelpers.cmake.orig 2025-05-29 01:27:28 UTC
+--- cmake/QtToolchainHelpers.cmake.orig 2025-08-18 00:53:11 UTC
+++ cmake/QtToolchainHelpers.cmake
@@ -95,6 +95,8 @@ function(get_gn_os result)
set(${result} "mac" PARENT_SCOPE)
@@ -9,7 +9,7 @@
else()
message(DEBUG "Unrecognized OS")
endif()
-@@ -310,7 +312,7 @@ macro(append_build_type_setup)
+@@ -323,7 +325,7 @@ macro(append_build_type_setup)
extend_gn_list(gnArgArg
ARGS enable_precompiled_headers
@@ -18,7 +18,7 @@
)
extend_gn_list(gnArgArg
ARGS dcheck_always_on
-@@ -402,7 +404,7 @@ macro(append_compiler_linker_sdk_setup)
+@@ -415,7 +417,7 @@ macro(append_compiler_linker_sdk_setup)
use_libcxx=true
)
endif()
@@ -27,7 +27,7 @@
extend_gn_list(gnArgArg ARGS use_libcxx
CONDITION QT_FEATURE_stdlib_libcpp
)
-@@ -443,7 +445,7 @@ macro(append_compiler_linker_sdk_setup)
+@@ -456,7 +458,7 @@ macro(append_compiler_linker_sdk_setup)
)
endif()
get_gn_arch(cpu ${TEST_architecture_arch})
@@ -36,7 +36,7 @@
extend_gn_list_cflag(gnArgArg
ARG arm_tune
-@@ -548,7 +550,7 @@ macro(append_toolchain_setup)
+@@ -561,7 +563,7 @@ macro(append_toolchain_setup)
endif()
unset(host_cpu)
unset(target_cpu)
diff --git a/www/qt6-webengine/files/patch-configure.cmake b/www/qt6-webengine/files/patch-configure.cmake
index 5505a55e5e3c..b9217899f331 100644
--- a/www/qt6-webengine/files/patch-configure.cmake
+++ b/www/qt6-webengine/files/patch-configure.cmake
@@ -1,11 +1,11 @@
---- configure.cmake.orig 2025-02-21 12:29:33 UTC
+--- configure.cmake.orig 2025-08-18 00:53:11 UTC
+++ configure.cmake
-@@ -292,12 +292,12 @@ qt_webengine_configure_check("supported-platform"
+@@ -291,12 +291,12 @@ qt_webengine_configure_check("supported-platform"
qt_webengine_configure_check("supported-platform"
MODULES QtWebEngine
-- CONDITION LINUX OR (WIN32 AND NOT (WIN_ARM_64 AND DEFINED ENV{COIN_PLATFORM_ID})) OR MACOS
-+ CONDITION LINUX OR (WIN32 AND NOT (WIN_ARM_64 AND DEFINED ENV{COIN_PLATFORM_ID})) OR MACOS OR FREEBSD
+- CONDITION LINUX OR WIN32 OR MACOS
++ CONDITION LINUX OR WIN32 OR MACOS OR FREEBSD
MESSAGE "Build can be done only on Linux, Windows or macOS."
)
qt_webengine_configure_check("supported-platform"
@@ -15,7 +15,7 @@
MESSAGE "Build can be done only on Linux, Windows, macO, iOS and Android."
)
-@@ -317,15 +317,6 @@ qt_webengine_configure_check("static-build"
+@@ -316,15 +316,6 @@ qt_webengine_configure_check("static-build"
MESSAGE "Static build is not supported."
)
@@ -31,7 +31,7 @@
qt_webengine_configure_check("python3"
MODULES QtWebEngine QtPdf
CONDITION Python3_FOUND
-@@ -448,6 +439,8 @@ qt_webengine_configure_check("compiler"
+@@ -455,6 +446,8 @@ qt_webengine_configure_check("compiler"
CONDITION MSVC OR
(LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
(LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR
@@ -40,7 +40,7 @@
(MACOS AND CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
MESSAGE
"${CMAKE_CXX_COMPILER_ID} compiler is not supported."
-@@ -457,6 +450,8 @@ qt_webengine_configure_check("compiler"
+@@ -464,6 +457,8 @@ qt_webengine_configure_check("compiler"
CONDITION MSVC OR
(LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
(LINUX AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR
@@ -49,7 +49,7 @@
(APPLE AND CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") OR
(ANDROID AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR
(MINGW AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
-@@ -709,7 +704,7 @@ qt_feature("webengine-ozone-x11" PRIVATE
+@@ -725,7 +720,7 @@ qt_feature("webengine-ozone-x11" PRIVATE
qt_feature("webengine-ozone-x11" PRIVATE
LABEL "Support X11 on qpa-xcb"
diff --git a/www/qt6-webengine/files/patch-security-rollup b/www/qt6-webengine/files/patch-security-rollup
new file mode 100644
index 000000000000..8955c1fb52d9
--- /dev/null
+++ b/www/qt6-webengine/files/patch-security-rollup
@@ -0,0 +1,246 @@
+Security patches since 6.9.2 release
+
+CVE-2025-8879: Heap buffer overflow in libaom
+CVE-2025-8880: Race in V8
+CVE-2025-8881: Inappropriate implementation in File Picker
+CVE-2025-8901: Out of bounds write in ANGLE
+
+https://github.com/qt/qtwebengine-chromium/compare/136d7fe8aa41c9d4cd764a6b890af9699f5141dd..130-based.diff
+
+diff --git a/chromium/content/browser/web_contents/file_chooser_impl.cc b/chromium/content/browser/web_contents/file_chooser_impl.cc
+index 7e2391bd1afd..d366c5d26bba 100644
+--- src/3rdparty/chromium/content/browser/web_contents/file_chooser_impl.cc
++++ src/3rdparty/chromium/content/browser/web_contents/file_chooser_impl.cc
+@@ -169,6 +169,12 @@ void FileChooserImpl::OpenFileChooser(blink::mojom::FileChooserParamsPtr params,
+ return;
+ }
+
++ // Do not allow open dialogs to have renderer-controlled default_file_name.
++ // See https://crbug.com/433800617 for context.
++ if (params->mode != blink::mojom::FileChooserParams::Mode::kSave) {
++ params->default_file_name = base::FilePath();
++ }
++
+ // Don't allow page with open FileChooser to enter BackForwardCache to avoid
+ // any unexpected behaviour from BackForwardCache.
+ BackForwardCache::DisableForRenderFrameHost(
+diff --git a/chromium/media/audio/audio_input_device.cc b/chromium/media/audio/audio_input_device.cc
+index a7d8e1098241..44abd451c397 100644
+--- src/3rdparty/chromium/media/audio/audio_input_device.cc
++++ src/3rdparty/chromium/media/audio/audio_input_device.cc
+@@ -482,7 +482,7 @@ void AudioInputDevice::AudioThreadCallback::Process(uint32_t pending_data) {
+ const base::TimeTicks capture_time =
+ base::TimeTicks() + base::Microseconds(buffer->params.capture_time_us);
+ const base::TimeTicks now_time = base::TimeTicks::Now();
+- DCHECK_GE(now_time, capture_time);
++ // DCHECK_GE(now_time, capture_time);
+
+ AudioGlitchInfo glitch_info{
+ .duration = base::Microseconds(buffer->params.glitch_duration_us),
+diff --git a/chromium/third_party/angle/src/compiler/translator/Compiler.cpp b/chromium/third_party/angle/src/compiler/translator/Compiler.cpp
+index 107f61cf4603..04b698b7fc08 100644
+--- src/3rdparty/chromium/third_party/angle/src/compiler/translator/Compiler.cpp
++++ src/3rdparty/chromium/third_party/angle/src/compiler/translator/Compiler.cpp
+@@ -775,24 +775,6 @@ bool TCompiler::checkAndSimplifyAST(TIntermBlock *root,
+ return false;
+ }
+
+- // For now, rewrite pixel local storage before collecting variables or any operations on images.
+- //
+- // TODO(anglebug.com/40096838):
+- // Should this actually run after collecting variables?
+- // Do we need more introspection?
+- // Do we want to hide rewritten shader image uniforms from glGetActiveUniform?
+- if (hasPixelLocalStorageUniforms())
+- {
+- ASSERT(
+- IsExtensionEnabled(mExtensionBehavior, TExtension::ANGLE_shader_pixel_local_storage));
+- if (!RewritePixelLocalStorage(this, root, getSymbolTable(), compileOptions,
+- getShaderVersion()))
+- {
+- mDiagnostics.globalError("internal compiler error translating pixel local storage");
+- return false;
+- }
+- }
+-
+ if (shouldRunLoopAndIndexingValidation(compileOptions) &&
+ !ValidateLimitations(root, mShaderType, &mSymbolTable, &mDiagnostics))
+ {
+@@ -939,6 +921,24 @@ bool TCompiler::checkAndSimplifyAST(TIntermBlock *root,
+ return false;
+ }
+
++ // For now, rewrite pixel local storage before collecting variables or any operations on images.
++ //
++ // TODO(anglebug.com/40096838):
++ // Should this actually run after collecting variables?
++ // Do we need more introspection?
++ // Do we want to hide rewritten shader image uniforms from glGetActiveUniform?
++ if (hasPixelLocalStorageUniforms())
++ {
++ ASSERT(
++ IsExtensionEnabled(mExtensionBehavior, TExtension::ANGLE_shader_pixel_local_storage));
++ if (!RewritePixelLocalStorage(this, root, getSymbolTable(), compileOptions,
++ getShaderVersion()))
++ {
++ mDiagnostics.globalError("internal compiler error translating pixel local storage");
++ return false;
++ }
++ }
++
+ // Clamping uniform array bounds needs to happen after validateLimitations pass.
+ if (compileOptions.clampIndirectArrayBounds)
+ {
+diff --git a/chromium/third_party/angle/src/compiler/translator/ValidateOutputs.cpp b/chromium/third_party/angle/src/compiler/translator/ValidateOutputs.cpp
+index 927783db73f6..d3481f1a4d1f 100644
+--- src/3rdparty/chromium/third_party/angle/src/compiler/translator/ValidateOutputs.cpp
++++ src/3rdparty/chromium/third_party/angle/src/compiler/translator/ValidateOutputs.cpp
+@@ -72,15 +72,19 @@ ValidateOutputsTraverser::ValidateOutputsTraverser(const TExtensionBehavior &ext
+ void ValidateOutputsTraverser::visitSymbol(TIntermSymbol *symbol)
+ {
+ if (symbol->variable().symbolType() == SymbolType::Empty)
++ {
+ return;
++ }
+
+ if (mVisitedSymbols.count(symbol->uniqueId().get()) == 1)
++ {
+ return;
++ }
+
+ mVisitedSymbols.insert(symbol->uniqueId().get());
+
+ TQualifier qualifier = symbol->getQualifier();
+- if (qualifier == EvqFragmentOut)
++ if (qualifier == EvqFragmentOut || qualifier == EvqFragmentInOut)
+ {
+ const TLayoutQualifier &layoutQualifier = symbol->getType().getLayoutQualifier();
+ if (layoutQualifier.location != -1)
+diff --git a/chromium/third_party/blink/public/mojom/choosers/file_chooser.mojom b/chromium/third_party/blink/public/mojom/choosers/file_chooser.mojom
+index 22ccb9cc709f..f323fa2aa2eb 100644
+--- src/3rdparty/chromium/third_party/blink/public/mojom/choosers/file_chooser.mojom
++++ src/3rdparty/chromium/third_party/blink/public/mojom/choosers/file_chooser.mojom
+@@ -25,7 +25,7 @@ struct FileChooserParams {
+ kUploadFolder,
+
+ // Allows picking a nonexistent file, and prompts to overwrite if the file
+- // already exists. This is not for Blink but for PPAPI.
++ // already exists.
+ kSave,
+ };
+ Mode mode = kOpen;
+@@ -34,7 +34,8 @@ struct FileChooserParams {
+ // which will be either "Open" or "Save" depending on the mode.
+ mojo_base.mojom.String16 title;
+
+- // Default file name to select in the dialog with kSave mode.
++ // Default file name to select in the dialog with kSave mode. This value
++ // is cleared if mode is not kSave.
+ mojo_base.mojom.FilePath default_file_name;
+
+ // |selected_files| has filenames which a file upload control already
+diff --git a/chromium/third_party/libaom/source/libaom/av1/encoder/ratectrl.c b/chromium/third_party/libaom/source/libaom/av1/encoder/ratectrl.c
+index 4fd5ec6bf54b..82a48c39cb10 100644
+--- src/3rdparty/chromium/third_party/libaom/source/libaom/av1/encoder/ratectrl.c
++++ src/3rdparty/chromium/third_party/libaom/source/libaom/av1/encoder/ratectrl.c
+@@ -3236,8 +3236,9 @@ static void rc_scene_detection_onepass_rt(AV1_COMP *cpi,
+ // non-zero sad exists along bottom border even though source is static.
+ const int border =
+ rc->prev_frame_is_dropped || cpi->svc.number_temporal_layers > 1;
+- // Store blkwise SAD for later use
+- if (width == cm->render_width && height == cm->render_height) {
++ // Store blkwise SAD for later use. Disable for spatial layers for now.
++ if (width == cm->render_width && height == cm->render_height &&
++ cpi->svc.number_spatial_layers == 1) {
+ if (cpi->src_sad_blk_64x64 == NULL) {
+ CHECK_MEM_ERROR(cm, cpi->src_sad_blk_64x64,
+ (uint64_t *)aom_calloc(sb_cols * sb_rows,
+diff --git a/chromium/v8/src/wasm/streaming-decoder.cc b/chromium/v8/src/wasm/streaming-decoder.cc
+index f3745b4c055a..ce5dad96d52f 100644
+--- src/3rdparty/chromium/v8/src/wasm/streaming-decoder.cc
++++ src/3rdparty/chromium/v8/src/wasm/streaming-decoder.cc
+@@ -230,45 +230,61 @@ class V8_EXPORT_PRIVATE AsyncStreamingDecoder : public StreamingDecoder {
+ };
+
+ void AsyncStreamingDecoder::OnBytesReceived(base::Vector<const uint8_t> bytes) {
+- DCHECK(!full_wire_bytes_.empty());
++ TRACE_STREAMING("OnBytesReceived(%zu bytes)\n", bytes.size());
++
++ // Note: The bytes are passed by the embedder, and they might point into the
++ // sandbox. Hence we copy them once and then process those copied bytes, to
++ // avoid being vulnerable to concurrent modification.
++ // Since we might not be able to store the bytes contiguously in memory,
++ // remember up to two byte vectors to process after copying.
++ base::Vector<const uint8_t> copied_bytes[2] = {{}, {}};
++
+ // Fill the previous vector, growing up to 16kB. After that, allocate new
+ // vectors on overflow.
++ DCHECK(!full_wire_bytes_.empty());
++ std::vector<uint8_t>* last_wire_byte_vector = &full_wire_bytes_.back();
++ size_t existing_vector_size = last_wire_byte_vector->size();
+ size_t remaining_capacity =
+- std::max(full_wire_bytes_.back().capacity(), size_t{16} * KB) -
+- full_wire_bytes_.back().size();
++ std::max(last_wire_byte_vector->capacity(), size_t{16} * KB) -
++ existing_vector_size;
+ size_t bytes_for_existing_vector = std::min(remaining_capacity, bytes.size());
+- full_wire_bytes_.back().insert(full_wire_bytes_.back().end(), bytes.data(),
+- bytes.data() + bytes_for_existing_vector);
++ last_wire_byte_vector->insert(last_wire_byte_vector->end(), bytes.data(),
++ bytes.data() + bytes_for_existing_vector);
++ copied_bytes[0] =
++ base::VectorOf(last_wire_byte_vector->data() + existing_vector_size,
++ bytes_for_existing_vector);
+ if (bytes.size() > bytes_for_existing_vector) {
+ // The previous vector's capacity is not enough to hold all new bytes, and
+ // it's bigger than 16kB, so expensive to copy. Allocate a new vector for
+ // the remaining bytes, growing exponentially.
+ size_t new_capacity = std::max(bytes.size() - bytes_for_existing_vector,
+- 2 * full_wire_bytes_.back().capacity());
++ 2 * last_wire_byte_vector->capacity());
+ full_wire_bytes_.emplace_back();
+- full_wire_bytes_.back().reserve(new_capacity);
+- full_wire_bytes_.back().insert(full_wire_bytes_.back().end(),
+- bytes.data() + bytes_for_existing_vector,
+- bytes.end());
++ last_wire_byte_vector = &full_wire_bytes_.back();
++ last_wire_byte_vector->reserve(new_capacity);
++ last_wire_byte_vector->insert(last_wire_byte_vector->end(),
++ bytes.data() + bytes_for_existing_vector,
++ bytes.end());
++ copied_bytes[1] = base::VectorOf(*last_wire_byte_vector);
+ }
++ // Do not access `bytes` any more after copying.
++ DCHECK_EQ(bytes.size(), copied_bytes[0].size() + copied_bytes[1].size());
++ bytes = {};
+
+ if (deserializing()) return;
+
+- TRACE_STREAMING("OnBytesReceived(%zu bytes)\n", bytes.size());
+-
+- size_t current = 0;
+- while (ok() && current < bytes.size()) {
+- size_t num_bytes =
+- state_->ReadBytes(this, bytes.SubVector(current, bytes.size()));
+- current += num_bytes;
+- module_offset_ += num_bytes;
+- if (state_->offset() == state_->buffer().size()) {
+- state_ = state_->Next(this);
++ for (base::Vector<const uint8_t> vec : copied_bytes) {
++ size_t current = 0;
++ while (ok() && current < vec.size()) {
++ size_t num_bytes = state_->ReadBytes(this, vec.SubVectorFrom(current));
++ current += num_bytes;
++ module_offset_ += num_bytes;
++ if (state_->offset() == state_->buffer().size()) {
++ state_ = state_->Next(this);
++ }
+ }
+ }
+- if (ok()) {
+- processor_->OnFinishedChunk();
+- }
++ if (ok()) processor_->OnFinishedChunk();
+ }
+
+ size_t AsyncStreamingDecoder::DecodingState::ReadBytes(
diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_signin_profile__picker__handler.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_signin_profile__picker__handler.cc
index 36e6cd423191..f4c2e1339c83 100644
--- a/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_signin_profile__picker__handler.cc
+++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_chrome_browser_ui_webui_signin_profile__picker__handler.cc
@@ -1,4 +1,4 @@
---- src/3rdparty/chromium/chrome/browser/ui/webui/signin/profile_picker_handler.cc.orig 2024-10-22 08:31:56 UTC
+--- src/3rdparty/chromium/chrome/browser/ui/webui/signin/profile_picker_handler.cc.orig 2025-08-18 00:53:11 UTC
+++ src/3rdparty/chromium/chrome/browser/ui/webui/signin/profile_picker_handler.cc
@@ -209,7 +209,7 @@ base::Value::Dict CreateProfileEntry(const ProfileAttr
@@ -9,7 +9,7 @@
} else if (base::FeatureList::IsEnabled(
supervised_user::kShowKiteForSupervisedUsers) &&
entry->IsSupervised()) {
-@@ -1224,7 +1224,7 @@ void ProfilePickerHandler::BeginFirstWebContentsProfil
+@@ -1222,7 +1222,7 @@ void ProfilePickerHandler::MaybeUpdateGuestMode() {
}
void ProfilePickerHandler::MaybeUpdateGuestMode() {
diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__init.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__init.cc
index ac3ee9a58d74..a5c5e3cf4a66 100644
--- a/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__init.cc
+++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_gpu_ipc_service_gpu__init.cc
@@ -1,6 +1,6 @@
---- src/3rdparty/chromium/gpu/ipc/service/gpu_init.cc.orig 2025-02-21 12:29:33 UTC
+--- src/3rdparty/chromium/gpu/ipc/service/gpu_init.cc.orig 2025-08-18 00:53:11 UTC
+++ src/3rdparty/chromium/gpu/ipc/service/gpu_init.cc
-@@ -403,7 +403,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -401,7 +401,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
enable_watchdog = false;
#endif
@@ -9,7 +9,7 @@
bool gpu_sandbox_start_early = gpu_preferences_.gpu_sandbox_start_early;
#else // !(BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS))
// For some reasons MacOSX's VideoToolbox might crash when called after
-@@ -440,7 +440,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -438,7 +438,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
}
bool attempted_startsandbox = false;
@@ -18,7 +18,7 @@
// On Chrome OS ARM Mali, GPU driver userspace creates threads when
// initializing a GL context, so start the sandbox early.
// TODO(zmo): Need to collect OS version before this.
-@@ -544,7 +544,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -542,7 +542,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
gpu_preferences_.gr_context_type = GrContextType::kGL;
}
@@ -27,7 +27,7 @@
// The ContentSandboxHelper is currently the only one implementation of
// GpuSandboxHelper and it has no dependency. Except on Linux where
// VaapiWrapper checks the GL implementation to determine which display
-@@ -626,7 +626,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -624,7 +624,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
command_line, gpu_feature_info_,
gpu_preferences_.disable_software_rasterizer, false);
if (gl_use_swiftshader_) {
@@ -36,7 +36,7 @@
VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly "
<< "on Linux";
return false;
-@@ -777,7 +777,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -775,7 +775,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
InitializePlatformOverlaySettings(&gpu_info_, gpu_feature_info_);
@@ -45,7 +45,7 @@
// Driver may create a compatibility profile context when collect graphics
// information on Linux platform. Try to collect graphics information
// based on core profile context after disabling platform extensions.
-@@ -832,7 +832,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+@@ -830,7 +830,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
}
}
}
@@ -54,7 +54,7 @@
(BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_CHROMEOS_DEVICE))
if (!gl_disabled && !gl_use_swiftshader_ && std::getenv("RUNNING_UNDER_RR")) {
// https://rr-project.org/ is a Linux-only record-and-replay debugger that
-@@ -1017,7 +1017,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
+@@ -1015,7 +1015,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
}
bool gl_disabled = gl::GetGLImplementation() == gl::kGLImplementationDisabled;
@@ -63,7 +63,7 @@
(BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_CHROMEOS_DEVICE))
if (!gl_disabled && !gl_use_swiftshader_ && std::getenv("RUNNING_UNDER_RR")) {
// https://rr-project.org/ is a Linux-only record-and-replay debugger that
-@@ -1078,7 +1078,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
+@@ -1076,7 +1076,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
}
}
diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_build_scripts_gperf.py b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_build_scripts_gperf.py
deleted file mode 100644
index d42d489f943d..000000000000
--- a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_build_scripts_gperf.py
+++ /dev/null
@@ -1,27 +0,0 @@
---- src/3rdparty/chromium/third_party/blink/renderer/build/scripts/gperf.py.orig 2025-03-29 00:50:57 UTC
-+++ src/3rdparty/chromium/third_party/blink/renderer/build/scripts/gperf.py
-@@ -28,24 +28,6 @@ def generate_gperf(gperf_path, gperf_input, gperf_args
- stdout=subprocess.PIPE,
- universal_newlines=True)
- gperf_output = gperf.communicate(gperf_input)[0]
-- # Massage gperf output to be more palatable for modern compilers.
-- # TODO(thakis): Upstream these to gperf so we don't need massaging.
-- # `register` is deprecated in C++11 and removed in C++17, so remove
-- # it from gperf's output.
-- # https://savannah.gnu.org/bugs/index.php?53028
-- gperf_output = re.sub(r'\bregister ', '', gperf_output)
-- # -Wimplicit-fallthrough needs an explicit fallthrough statement,
-- # so replace gperf's /*FALLTHROUGH*/ comment with the statement.
-- # https://savannah.gnu.org/bugs/index.php?53029
-- gperf_output = gperf_output.replace('/*FALLTHROUGH*/',
-- ' [[fallthrough]];')
-- # -Wpointer-to-int-cast warns about casting pointers to smaller ints
-- # Replace {(int)(long)&(foo), bar} with
-- # {static_cast<int>(reinterpret_cast<uintptr_t>(&(foo)), bar}
-- gperf_output = re.sub(
-- r'\(int\)\(long\)(.*?),',
-- r'static_cast<int>(reinterpret_cast<uintptr_t>(\1)),',
-- gperf_output)
- script = 'third_party/blink/renderer/build/scripts/gperf.py'
- return '// Generated by %s\n' % script + gperf_output
- except OSError:
diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_runtime__enabled__features.json5 b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_runtime__enabled__features.json5
index 04a903bd35f2..b3b99e8e202e 100644
--- a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_runtime__enabled__features.json5
+++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_runtime__enabled__features.json5
@@ -1,4 +1,4 @@
---- src/3rdparty/chromium/third_party/blink/renderer/platform/runtime_enabled_features.json5.orig 2025-02-21 12:29:33 UTC
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/runtime_enabled_features.json5.orig 2025-08-18 00:53:11 UTC
+++ src/3rdparty/chromium/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -384,7 +384,7 @@
name: "AppTitle",
@@ -36,7 +36,7 @@
status: "stable",
public: true,
base_feature: "none",
-@@ -4313,7 +4313,7 @@
+@@ -4320,7 +4320,7 @@
name: "UnrestrictedSharedArrayBuffer",
base_feature: "none",
origin_trial_feature_name: "UnrestrictedSharedArrayBuffer",
@@ -45,7 +45,7 @@
},
// Enables using policy-controlled feature "usb-unrestricted" to allow
// isolated context to access protected USB interface classes and to
-@@ -4460,7 +4460,7 @@
+@@ -4467,7 +4467,7 @@
{
name: "WebAppScopeExtensions",
origin_trial_feature_name: "WebAppScopeExtensions",
@@ -54,7 +54,7 @@
status: "experimental",
base_feature: "none",
},
-@@ -4503,7 +4503,7 @@
+@@ -4510,7 +4510,7 @@
status: "experimental",
base_feature: "none",
origin_trial_feature_name: "WebAppUrlHandling",
diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_dragdrop_os__exchange__data__provider__non__backed.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_dragdrop_os__exchange__data__provider__non__backed.cc
index 9008177cfd17..577dde022f49 100644
--- a/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_dragdrop_os__exchange__data__provider__non__backed.cc
+++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_dragdrop_os__exchange__data__provider__non__backed.cc
@@ -1,6 +1,6 @@
---- src/3rdparty/chromium/ui/base/dragdrop/os_exchange_data_provider_non_backed.cc.orig 2024-04-19 13:02:56 UTC
+--- src/3rdparty/chromium/ui/base/dragdrop/os_exchange_data_provider_non_backed.cc.orig 2025-08-18 00:53:11 UTC
+++ src/3rdparty/chromium/ui/base/dragdrop/os_exchange_data_provider_non_backed.cc
-@@ -99,7 +99,7 @@ void OSExchangeDataProviderNonBacked::SetPickledData(
+@@ -101,7 +101,7 @@ std::optional<std::u16string> OSExchangeDataProviderNo
std::optional<std::u16string> OSExchangeDataProviderNonBacked::GetString()
const {
diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.cc
index 05f2a3caf372..38b6dcc88c83 100644
--- a/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.cc
+++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.cc
@@ -1,4 +1,4 @@
---- src/3rdparty/chromium/ui/base/ui_base_features.cc.orig 2025-02-21 12:29:33 UTC
+--- src/3rdparty/chromium/ui/base/ui_base_features.cc.orig 2025-08-18 00:53:11 UTC
+++ src/3rdparty/chromium/ui/base/ui_base_features.cc
@@ -165,7 +165,7 @@ BASE_FEATURE(kWaylandTextInputV3,
base::FEATURE_DISABLED_BY_DEFAULT);
@@ -18,7 +18,7 @@
(BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS_ASH) && \
!BUILDFLAG(IS_CHROMEOS_LACROS))
BASE_FEATURE(kExperimentalFlingAnimation,
-@@ -385,7 +385,7 @@ bool IsForcedColorsEnabled() {
+@@ -389,7 +389,7 @@ bool IsForcedColorsEnabled() {
// and Linux. This feature will be released for other platforms in later
// milestones.
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.h
index 2aca842bce0d..0cdc36728a12 100644
--- a/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.h
+++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_base_ui__base__features.h
@@ -1,6 +1,6 @@
---- src/3rdparty/chromium/ui/base/ui_base_features.h.orig 2025-02-21 12:29:33 UTC
+--- src/3rdparty/chromium/ui/base/ui_base_features.h.orig 2025-08-18 00:53:11 UTC
+++ src/3rdparty/chromium/ui/base/ui_base_features.h
-@@ -143,7 +143,7 @@ BASE_DECLARE_FEATURE(kWaylandTextInputV3);
+@@ -146,7 +146,7 @@ BASE_DECLARE_FEATURE(kWaylandTextInputV3);
BASE_DECLARE_FEATURE(kWaylandTextInputV3);
#endif // BUILDFLAG(IS_OZONE)
diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_gfx_linux_gbm__wrapper.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_gfx_linux_gbm__wrapper.cc
index 2a4d92824384..b48a98195aeb 100644
--- a/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_gfx_linux_gbm__wrapper.cc
+++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_ui_gfx_linux_gbm__wrapper.cc
@@ -1,6 +1,6 @@
---- src/3rdparty/chromium/ui/gfx/linux/gbm_wrapper.cc.orig 2024-09-30 07:45:04 UTC
+--- src/3rdparty/chromium/ui/gfx/linux/gbm_wrapper.cc.orig 2025-08-18 00:53:11 UTC
+++ src/3rdparty/chromium/ui/gfx/linux/gbm_wrapper.cc
-@@ -319,7 +319,7 @@ class Device final : public ui::GbmDevice {
+@@ -331,7 +331,7 @@ class Device final : public ui::GbmDevice {
// of 1x1 BOs which are destroyed before creating the final BO creation used
// to instantiate the returned GbmBuffer.
gfx::Size size_for_verification =
diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc b/www/qt6-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc
index 3c3165a63310..177de066160d 100644
--- a/www/qt6-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc
+++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc
@@ -20,7 +20,7 @@
lib_name = std::string(path);
}
result.push_back(SharedLibraryAddress(
-+#if defined(__i386__) || defined(OS_FREEBSD)
++#if defined(__i386__) || defined(__arm__) || defined(OS_FREEBSD)
+ lib_name, static_cast<uintptr_t>(map->kve_start),
+ static_cast<uintptr_t>(map->kve_end)));
+#else
diff --git a/www/qt6-webengine/files/patch-src_core_CMakeLists.txt b/www/qt6-webengine/files/patch-src_core_CMakeLists.txt
index 4c6f56a2e4e2..f04b00dfc8d5 100644
--- a/www/qt6-webengine/files/patch-src_core_CMakeLists.txt
+++ b/www/qt6-webengine/files/patch-src_core_CMakeLists.txt
@@ -1,4 +1,4 @@
---- src/core/CMakeLists.txt.orig 2025-03-09 19:36:47 UTC
+--- src/core/CMakeLists.txt.orig 2025-08-18 00:53:11 UTC
+++ src/core/CMakeLists.txt
@@ -21,7 +21,7 @@ add_subdirectory(tools/qwebengine_convert_dict)
# TOOLCHAIN SETUP
@@ -9,7 +9,7 @@
setup_toolchains()
endif()
-@@ -200,7 +200,7 @@ foreach(arch ${archs})
+@@ -205,7 +205,7 @@ foreach(arch ${archs})
accessibility_activation_observer.cpp accessibility_activation_observer.h
)
@@ -18,7 +18,7 @@
SOURCES
ozone/gl_ozone_angle_qt.cpp ozone/gl_ozone_angle_qt.h
ozone/ozone_util_qt.cpp ozone/ozone_util_qt.h
-@@ -208,17 +208,17 @@ foreach(arch ${archs})
+@@ -213,17 +213,17 @@ foreach(arch ${archs})
ozone/surface_factory_qt.cpp ozone/surface_factory_qt.h
)
@@ -39,7 +39,7 @@
SOURCES
ozone/egl_helper.cpp ozone/egl_helper.h
)
-@@ -438,7 +438,7 @@ foreach(arch ${archs})
+@@ -443,7 +443,7 @@ foreach(arch ${archs})
CONDITION QT_FEATURE_webenginedriver
)
@@ -48,7 +48,7 @@
list(APPEND gnArgArg
angle_enable_gl=true
use_gtk=false # GTK toolkit bindings
-@@ -505,6 +505,10 @@ foreach(arch ${archs})
+@@ -510,6 +510,10 @@ foreach(arch ${archs})
extend_gn_list(gnArgArg
ARGS use_pulseaudio
CONDITION QT_FEATURE_webengine_system_pulseaudio
diff --git a/www/qt6-webengine/files/patch-src_core_api_configure.cmake b/www/qt6-webengine/files/patch-src_core_api_configure.cmake
index 05e20daffc73..3988f9c60e8f 100644
--- a/www/qt6-webengine/files/patch-src_core_api_configure.cmake
+++ b/www/qt6-webengine/files/patch-src_core_api_configure.cmake
@@ -1,4 +1,4 @@
---- src/core/api/configure.cmake.orig 2025-02-21 12:29:33 UTC
+--- src/core/api/configure.cmake.orig 2025-08-18 00:53:11 UTC
+++ src/core/api/configure.cmake
@@ -10,6 +10,7 @@ if(NOT QT_CONFIGURE_RUNNING)
if(PkgConfig_FOUND AND QT_FEATURE_pkg_config)
@@ -8,7 +8,7 @@
pkg_check_modules(XDAMAGE xdamage)
pkg_check_modules(GBM gbm)
pkg_check_modules(LIBVA libva>=1.14)
-@@ -76,6 +77,11 @@ qt_feature("webengine-printing-and-pdf" PRIVATE
+@@ -90,6 +91,11 @@ qt_feature("webengine-printing-and-pdf" PRIVATE
AUTODETECT NOT QT_FEATURE_webengine_embedded_build
CONDITION TARGET Qt::PrintSupport AND QT_FEATURE_printer
)
@@ -20,7 +20,7 @@
qt_feature("webengine-pepper-plugins" PRIVATE
LABEL "Pepper Plugins"
PURPOSE "Enables use of Pepper plugins."
-@@ -157,7 +163,7 @@ qt_feature("webengine-vaapi" PRIVATE
+@@ -171,7 +177,7 @@ qt_feature("webengine-vaapi" PRIVATE
PURPOSE "Enables support for VA-API hardware acceleration"
AUTODETECT GBM_FOUND AND LIBVA_FOUND AND QT_FEATURE_vulkan
# hardware accelerated encoding requires bundled libvpx
@@ -29,7 +29,7 @@
)
list(LENGTH CMAKE_OSX_ARCHITECTURES osx_arch_count)
qt_feature("webenginedriver" PUBLIC
-@@ -196,15 +202,19 @@ qt_configure_add_summary_entry(
+@@ -214,15 +220,19 @@ qt_configure_add_summary_entry(
)
qt_configure_add_summary_entry(
ARGS "webengine-vaapi"
diff --git a/www/qt6-webengine/files/patch-src_core_compositor_native__skia__output__device__opengl.cpp b/www/qt6-webengine/files/patch-src_core_compositor_native__skia__output__device__opengl.cpp
index 079bb283b405..07a5f9437eea 100644
--- a/www/qt6-webengine/files/patch-src_core_compositor_native__skia__output__device__opengl.cpp
+++ b/www/qt6-webengine/files/patch-src_core_compositor_native__skia__output__device__opengl.cpp
@@ -1,6 +1,6 @@
---- src/core/compositor/native_skia_output_device_opengl.cpp.orig 2025-03-09 19:36:47 UTC
+--- src/core/compositor/native_skia_output_device_opengl.cpp.orig 2025-08-18 00:53:11 UTC
+++ src/core/compositor/native_skia_output_device_opengl.cpp
-@@ -247,7 +247,7 @@ QSGTexture *NativeSkiaOutputDeviceOpenGL::texture(QQui
+@@ -248,7 +248,7 @@ QSGTexture *NativeSkiaOutputDeviceOpenGL::texture(QQui
EGL_LINUX_DRM_FOURCC_EXT, drmFormat,
EGL_DMA_BUF_PLANE0_FD_EXT, scopedFd.get(),
EGL_DMA_BUF_PLANE0_OFFSET_EXT, static_cast<EGLAttrib>(nativePixmap->GetDmaBufOffset(0)),