commit:     234ace8b5bdeaa481f073cea3a4372c31263015c
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Sun Apr  6 14:42:06 2025 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Sun Apr  6 14:47:26 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=234ace8b

dev-qt/qtwebengine: backport fix for QTBUG-133570

Haven't reproduced the crash myself, but both falkon and
qutebrowser upstreams had reports about that issue with 6.9.0,
and may as well include it before potential unmasking.

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 .../files/qtwebengine-6.9.0-QTBUG-133570.patch     | 108 +++++++++++++++++++++
 ...ne-6.9.0.ebuild => qtwebengine-6.9.0-r1.ebuild} |   1 +
 2 files changed, 109 insertions(+)

diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.9.0-QTBUG-133570.patch 
b/dev-qt/qtwebengine/files/qtwebengine-6.9.0-QTBUG-133570.patch
new file mode 100644
index 000000000000..decd83aa9b1b
--- /dev/null
+++ b/dev-qt/qtwebengine/files/qtwebengine-6.9.0-QTBUG-133570.patch
@@ -0,0 +1,108 @@
+https://bugs.kde.org/show_bug.cgi?id=497691
+https://github.com/qutebrowser/qutebrowser/issues/8534
+https://bugreports.qt.io/browse/QTBUG-133570
+https://codereview.qt-project.org/c/qt/qtwebengine/+/634920
+--- a/src/core/configure/BUILD.root.gn.in
++++ b/src/core/configure/BUILD.root.gn.in
+@@ -406,4 +406,5 @@
+         "//ui/base/x:gl",
+         "//ui/gfx/linux:gpu_memory_buffer_support_x11",
++        "//ui/gfx/x",
+       ]
+ 
+@@ -411,4 +412,6 @@
+         "//ui/ozone/platform/x11/gl_egl_utility_x11.cc",
+         "//ui/ozone/platform/x11/gl_egl_utility_x11.h",
++        "//ui/ozone/platform/x11/native_pixmap_egl_x11_binding.cc",
++        "//ui/ozone/platform/x11/native_pixmap_egl_x11_binding.h",
+       ]
+     }
+--- a/src/core/ozone/gl_ozone_angle_qt.cpp
++++ b/src/core/ozone/gl_ozone_angle_qt.cpp
+@@ -1,5 +1,9 @@
+-// Copyright (C) 2024 The Qt Company Ltd.
++// Copyright (C) 2025 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
+ 
++// Copyright 2016 The Chromium Authors
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
+ #include "gl_ozone_angle_qt.h"
+ 
+@@ -13,4 +17,6 @@
+ #if BUILDFLAG(IS_OZONE_X11)
+ #include "ozone_util_qt.h"
++
++#include "ui/ozone/platform/x11/native_pixmap_egl_x11_binding.h"
+ #endif
+ 
+@@ -21,4 +27,32 @@
+ 
+ namespace ui {
++namespace {
++// Based on //ui/ozone/platform/x11/x11_surface_factory.cc
++enum class NativePixmapSupportType {
++    // Importing native pixmaps not supported.
++    kNone,
++
++    // Native pixmaps are imported directly into EGL using the
++    // EGL_EXT_image_dma_buf_import extension.
++    kDMABuf,
++
++    // Native pixmaps are first imported as X11 pixmaps using DRI3 and then 
into
++    // EGL.
++    kX11Pixmap,
++};
++
++NativePixmapSupportType GetNativePixmapSupportType()
++{
++    if 
(gl::GLSurfaceEGL::GetGLDisplayEGL()->ext->b_EGL_EXT_image_dma_buf_import)
++        return NativePixmapSupportType::kDMABuf;
++
++#if BUILDFLAG(IS_OZONE_X11)
++    if (NativePixmapEGLX11Binding::CanImportNativeGLXPixmap())
++        return NativePixmapSupportType::kX11Pixmap;
++#endif
++
++    return NativePixmapSupportType::kNone;
++}
++} // namespace
+ 
+ bool GLOzoneANGLEQt::LoadGLES2Bindings(const gl::GLImplementationParts & 
/*implementation*/)
+@@ -74,5 +108,14 @@
+ bool GLOzoneANGLEQt::CanImportNativePixmap(gfx::BufferFormat format)
+ {
+-    return 
gl::GLSurfaceEGL::GetGLDisplayEGL()->ext->b_EGL_EXT_image_dma_buf_import;
++    switch (GetNativePixmapSupportType()) {
++    case NativePixmapSupportType::kDMABuf:
++        return NativePixmapEGLBinding::IsBufferFormatSupported(format);
++#if BUILDFLAG(IS_OZONE_X11)
++    case NativePixmapSupportType::kX11Pixmap:
++        return NativePixmapEGLX11Binding::IsBufferFormatSupported(format);
++#endif
++    default:
++        return false;
++    }
+ }
+ 
+@@ -83,6 +126,17 @@
+                                    GLenum target, GLuint texture_id)
+ {
+-    return NativePixmapEGLBinding::Create(pixmap, plane_format, plane, 
plane_size, color_space,
+-                                          target, texture_id);
++    switch (GetNativePixmapSupportType()) {
++    case NativePixmapSupportType::kDMABuf:
++        return NativePixmapEGLBinding::Create(pixmap, plane_format, plane, 
plane_size, color_space,
++                                              target, texture_id);
++#if BUILDFLAG(IS_OZONE_X11)
++    case NativePixmapSupportType::kX11Pixmap:
++        return NativePixmapEGLX11Binding::Create(pixmap, plane_format, 
plane_size, target,
++                                                 texture_id);
++#endif
++    default:
++        NOTREACHED();
++        return nullptr;
++    }
+ }
+ 

diff --git a/dev-qt/qtwebengine/qtwebengine-6.9.0.ebuild 
b/dev-qt/qtwebengine/qtwebengine-6.9.0-r1.ebuild
similarity index 99%
rename from dev-qt/qtwebengine/qtwebengine-6.9.0.ebuild
rename to dev-qt/qtwebengine/qtwebengine-6.9.0-r1.ebuild
index 5366adc7bed8..d01308b28bb7 100644
--- a/dev-qt/qtwebengine/qtwebengine-6.9.0.ebuild
+++ b/dev-qt/qtwebengine/qtwebengine-6.9.0-r1.ebuild
@@ -109,6 +109,7 @@ PATCHES+=(
        "${FILESDIR}"/${PN}-6.8.2-glibc2.41.patch
        "${FILESDIR}"/${PN}-6.8.3-pipewire1.4.patch
        "${FILESDIR}"/${PN}-6.9.0-x11-pixmap-leak.patch
+       "${FILESDIR}"/${PN}-6.9.0-QTBUG-133570.patch
 )
 
 python_check_deps() {

Reply via email to