diff options
Diffstat (limited to 'fix-debug-crash-and-log-spam-with-GTK3-Wayland.patch')
-rw-r--r-- | fix-debug-crash-and-log-spam-with-GTK3-Wayland.patch | 181 |
1 files changed, 0 insertions, 181 deletions
diff --git a/fix-debug-crash-and-log-spam-with-GTK3-Wayland.patch b/fix-debug-crash-and-log-spam-with-GTK3-Wayland.patch deleted file mode 100644 index bbbde2cbc9ed..000000000000 --- a/fix-debug-crash-and-log-spam-with-GTK3-Wayland.patch +++ /dev/null @@ -1,181 +0,0 @@ -From f40f0f994d6fbabf75f6acf796fa4b62809851c0 Mon Sep 17 00:00:00 2001 -From: Tom Anderson <thomasanderson@chromium.org> -Date: Thu, 18 Aug 2022 23:00:41 +0000 -Subject: [PATCH] Fix debug crash and log spam with - GTK3+Wayland+text-input-unstable-v3 - -This fixes a regression after [1]. The GTK IME doesn't work on -Wayland+GTK3, so this change skips GTK IME creation for that case. -This effectively restores the behavior to before [1]. - -[1] https://chromium-review.googlesource.com/c/chromium/src/+/3759236 - -Change-Id: I4019e8da6929489e302ba7f8699ad62ca604b4aa -Fixed: 1347979 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3836775 -Auto-Submit: Thomas Anderson <thomasanderson@chromium.org> -Reviewed-by: Nick Yamane <nickdiego@igalia.com> -Commit-Queue: Nick Yamane <nickdiego@igalia.com> -Cr-Commit-Position: refs/heads/main@{#1036838} ---- - ui/gtk/gtk_ui.cc | 2 +- - ui/gtk/gtk_ui_platform.h | 10 +++++++++- - ui/gtk/gtk_ui_platform_stub.cc | 6 ++++++ - ui/gtk/gtk_ui_platform_stub.h | 2 ++ - ui/gtk/wayland/gtk_ui_platform_wayland.cc | 12 ++++++++++++ - ui/gtk/wayland/gtk_ui_platform_wayland.h | 2 ++ - ui/gtk/x/gtk_ui_platform_x11.cc | 7 +++++++ - ui/gtk/x/gtk_ui_platform_x11.h | 2 ++ - 8 files changed, 41 insertions(+), 2 deletions(-) - -diff --git a/ui/gtk/gtk_ui.cc b/ui/gtk/gtk_ui.cc -index 1fbb58152c..dd42b1e87c 100644 ---- a/ui/gtk/gtk_ui.cc -+++ b/ui/gtk/gtk_ui.cc -@@ -447,7 +447,7 @@ void GtkUi::SetWindowFrameAction(WindowFrameActionSource source, - - std::unique_ptr<ui::LinuxInputMethodContext> GtkUi::CreateInputMethodContext( - ui::LinuxInputMethodContextDelegate* delegate) const { -- return std::make_unique<InputMethodContextImplGtk>(delegate); -+ return GetPlatform()->CreateInputMethodContext(delegate); - } - - gfx::FontRenderParams GtkUi::GetDefaultFontRenderParams() const { -diff --git a/ui/gtk/gtk_ui_platform.h b/ui/gtk/gtk_ui_platform.h -index 390d90af83..633efbcf16 100644 ---- a/ui/gtk/gtk_ui_platform.h -+++ b/ui/gtk/gtk_ui_platform.h -@@ -10,11 +10,15 @@ - #include "ui/gfx/native_widget_types.h" - #include "ui/gtk/gtk_compat.h" - --using GdkKeymap = struct _GdkKeymap; - using GtkWindow = struct _GtkWindow; - using GtkWidget = struct _GtkWidget; - using GdkWindow = struct _GdkWindow; - -+namespace ui { -+class LinuxInputMethodContext; -+class LinuxInputMethodContextDelegate; -+} // namespace ui -+ - namespace gtk { - - // GtkUiPlatform encapsulates platform-specific functionalities required by -@@ -52,6 +56,10 @@ class GtkUiPlatform { - // Presents |window|, doing all the necessary platform-specific operations - // needed, if any. - virtual void ShowGtkWindow(GtkWindow* window) = 0; -+ -+ // Creates a new IME context or may return nullptr. -+ virtual std::unique_ptr<ui::LinuxInputMethodContext> CreateInputMethodContext( -+ ui::LinuxInputMethodContextDelegate* delegate) const = 0; - }; - - } // namespace gtk -diff --git a/ui/gtk/gtk_ui_platform_stub.cc b/ui/gtk/gtk_ui_platform_stub.cc -index 76746254ef..5f01c8bd8f 100644 ---- a/ui/gtk/gtk_ui_platform_stub.cc -+++ b/ui/gtk/gtk_ui_platform_stub.cc -@@ -43,4 +43,10 @@ void GtkUiPlatformStub::ShowGtkWindow(GtkWindow* window) { - gtk_window_present(window); - } - -+std::unique_ptr<ui::LinuxInputMethodContext> -+GtkUiPlatformStub::CreateInputMethodContext( -+ ui::LinuxInputMethodContextDelegate* delegate) const { -+ return nullptr; -+} -+ - } // namespace gtk -diff --git a/ui/gtk/gtk_ui_platform_stub.h b/ui/gtk/gtk_ui_platform_stub.h -index ae186455bd..708e05ab04 100644 ---- a/ui/gtk/gtk_ui_platform_stub.h -+++ b/ui/gtk/gtk_ui_platform_stub.h -@@ -26,6 +26,8 @@ class GtkUiPlatformStub : public GtkUiPlatform { - gfx::AcceleratedWidget parent) override; - void ClearTransientFor(gfx::AcceleratedWidget parent) override; - void ShowGtkWindow(GtkWindow* window) override; -+ std::unique_ptr<ui::LinuxInputMethodContext> CreateInputMethodContext( -+ ui::LinuxInputMethodContextDelegate* delegate) const override; - }; - - } // namespace gtk -diff --git a/ui/gtk/wayland/gtk_ui_platform_wayland.cc b/ui/gtk/wayland/gtk_ui_platform_wayland.cc -index 13fb58a84a..cae3475b14 100644 ---- a/ui/gtk/wayland/gtk_ui_platform_wayland.cc -+++ b/ui/gtk/wayland/gtk_ui_platform_wayland.cc -@@ -11,7 +11,9 @@ - #include "base/logging.h" - #include "ui/base/glib/glib_cast.h" - #include "ui/events/event_utils.h" -+#include "ui/gtk/gtk_compat.h" - #include "ui/gtk/gtk_util.h" -+#include "ui/gtk/input_method_context_impl_gtk.h" - #include "ui/linux/linux_ui_delegate.h" - - namespace gtk { -@@ -145,4 +147,14 @@ void GtkUiPlatformWayland::OnHandleSetTransient(GtkWidget* widget, - } - } - -+std::unique_ptr<ui::LinuxInputMethodContext> -+GtkUiPlatformWayland::CreateInputMethodContext( -+ ui::LinuxInputMethodContextDelegate* delegate) const { -+ // GDK3 doesn't have a way to create foreign wayland windows, so we can't -+ // translate from ui::KeyEvent to GdkEventKey for InputMethodContextImplGtk. -+ if (!GtkCheckVersion(4)) -+ return nullptr; -+ return std::make_unique<InputMethodContextImplGtk>(delegate); -+} -+ - } // namespace gtk -diff --git a/ui/gtk/wayland/gtk_ui_platform_wayland.h b/ui/gtk/wayland/gtk_ui_platform_wayland.h -index 2c444793db..315d6ced31 100644 ---- a/ui/gtk/wayland/gtk_ui_platform_wayland.h -+++ b/ui/gtk/wayland/gtk_ui_platform_wayland.h -@@ -31,6 +31,8 @@ class GtkUiPlatformWayland : public GtkUiPlatform { - gfx::AcceleratedWidget parent) override; - void ClearTransientFor(gfx::AcceleratedWidget parent) override; - void ShowGtkWindow(GtkWindow* window) override; -+ std::unique_ptr<ui::LinuxInputMethodContext> CreateInputMethodContext( -+ ui::LinuxInputMethodContextDelegate* delegate) const override; - - private: - GdkDisplay* GetDefaultGdkDisplay(); -diff --git a/ui/gtk/x/gtk_ui_platform_x11.cc b/ui/gtk/x/gtk_ui_platform_x11.cc -index 5fa9d040c6..f7ba25c30c 100644 ---- a/ui/gtk/x/gtk_ui_platform_x11.cc -+++ b/ui/gtk/x/gtk_ui_platform_x11.cc -@@ -19,6 +19,7 @@ - #include "ui/gfx/x/xproto_util.h" - #include "ui/gtk/gtk_compat.h" - #include "ui/gtk/gtk_util.h" -+#include "ui/gtk/input_method_context_impl_gtk.h" - #include "ui/gtk/x/gtk_event_loop_x11.h" - #include "ui/linux/linux_ui_delegate.h" - -@@ -114,4 +115,10 @@ void GtkUiPlatformX11::ShowGtkWindow(GtkWindow* window) { - static_cast<uint32_t>(ui::X11EventSource::GetInstance()->GetTimestamp())); - } - -+std::unique_ptr<ui::LinuxInputMethodContext> -+GtkUiPlatformX11::CreateInputMethodContext( -+ ui::LinuxInputMethodContextDelegate* delegate) const { -+ return std::make_unique<InputMethodContextImplGtk>(delegate); -+} -+ - } // namespace gtk -diff --git a/ui/gtk/x/gtk_ui_platform_x11.h b/ui/gtk/x/gtk_ui_platform_x11.h -index 3055b7d7ff..74011a8a1c 100644 ---- a/ui/gtk/x/gtk_ui_platform_x11.h -+++ b/ui/gtk/x/gtk_ui_platform_x11.h -@@ -34,6 +34,8 @@ class GtkUiPlatformX11 : public GtkUiPlatform { - gfx::AcceleratedWidget parent) override; - void ClearTransientFor(gfx::AcceleratedWidget parent) override; - void ShowGtkWindow(GtkWindow* window) override; -+ std::unique_ptr<ui::LinuxInputMethodContext> CreateInputMethodContext( -+ ui::LinuxInputMethodContextDelegate* delegate) const override; - - private: - GdkDisplay* GetGdkDisplay(); |