From 8c1580ebc876d993988c5926aaf5ba036048e657 Mon Sep 17 00:00:00 2001 From: robxnano <89391914+robxnano@users.noreply.github.com> Date: Wed, 28 Aug 2024 01:18:32 +0100 Subject: [PATCH] GTK3: Fix crash on changing theme SDL uses GTK to draw window title bars on Wayland, and can crash when the color scheme is changed. Disconnecting from the portal before launching the emulator works around this. --- BasiliskII/src/Unix/color_scheme.cpp | 9 +++++++++ BasiliskII/src/Unix/main_unix.cpp | 4 ++++ BasiliskII/src/include/color_scheme.h | 1 + SheepShaver/src/Unix/main_unix.cpp | 6 +++++- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/BasiliskII/src/Unix/color_scheme.cpp b/BasiliskII/src/Unix/color_scheme.cpp index 648a185d..b43900e8 100644 --- a/BasiliskII/src/Unix/color_scheme.cpp +++ b/BasiliskII/src/Unix/color_scheme.cpp @@ -287,4 +287,13 @@ color_scheme_set_async (AppColorScheme scheme) init_color_scheme_async(); } +void +color_scheme_disconnect (void) +{ + if (desktop_portal) + { + g_object_unref(desktop_portal); + } +} + #endif // GTK_CHECK_VERSION diff --git a/BasiliskII/src/Unix/main_unix.cpp b/BasiliskII/src/Unix/main_unix.cpp index 6c00a8df..21ac9e5b 100755 --- a/BasiliskII/src/Unix/main_unix.cpp +++ b/BasiliskII/src/Unix/main_unix.cpp @@ -432,6 +432,10 @@ static void gui_startup (void) #endif if (use_gui && !PrefsEditor()) QuitEmulator(); +#ifdef ENABLE_GTK_3_22 + else + color_scheme_disconnect(); +#endif } #ifdef ENABLE_GTK3 diff --git a/BasiliskII/src/include/color_scheme.h b/BasiliskII/src/include/color_scheme.h index a51e55dc..e3f1d260 100644 --- a/BasiliskII/src/include/color_scheme.h +++ b/BasiliskII/src/include/color_scheme.h @@ -54,5 +54,6 @@ gboolean color_scheme_is_dark_theme (void); gboolean color_scheme_toggle (void); AppColorScheme color_scheme_get_app_scheme (void); DesktopColorScheme color_scheme_get_desktop_scheme (void); +void color_scheme_disconnect (void); G_END_DECLS diff --git a/SheepShaver/src/Unix/main_unix.cpp b/SheepShaver/src/Unix/main_unix.cpp index deec68ff..d715e693 100755 --- a/SheepShaver/src/Unix/main_unix.cpp +++ b/SheepShaver/src/Unix/main_unix.cpp @@ -767,10 +767,14 @@ GtkWindow *win; static void gui_startup (void) { #ifdef ENABLE_GTK_3_22 - color_scheme_set(APP_PREFERS_LIGHT); + color_scheme_set(APP_PREFERS_LIGHT); #endif if (use_gui && !PrefsEditor()) QuitEmulator(); +#ifdef ENABLE_GTK_3_22 + else + color_scheme_disconnect(); +#endif } #ifdef ENABLE_GTK3