From 4290fc8bdaad327cdf726e176c7a9fb2ad0e2a38 Mon Sep 17 00:00:00 2001
From: Simon McVittie <[EMAIL REDACTED]>
Date: Tue, 7 Jan 2025 20:18:57 +0000
Subject: [PATCH] tray: Load GTK and libappindicator by versioned names, except
on OpenBSD
We are expecting a specific ABI (we can see that from the declarations
listed in this file) and the whole point of SONAME versioning is to
say that the library conforms to a specific ABI. If the SONAME is not
the one we expect, then calling its functions is likely to crash.
As usual, an exception to this is that OpenBSD does not use SONAME
versioning.
Signed-off-by: Simon McVittie <smcv@collabora.com>
---
src/tray/unix/SDL_tray.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/tray/unix/SDL_tray.c b/src/tray/unix/SDL_tray.c
index 3db86808aa7b5..ae06a697bd773 100644
--- a/src/tray/unix/SDL_tray.c
+++ b/src/tray/unix/SDL_tray.c
@@ -174,22 +174,31 @@ static void quit_gtk(void)
}
const char *appindicator_names[] = {
+#ifdef SDL_PLATFORM_OPENBSD
"libayatana-appindicator3.so",
- "libayatana-appindicator3.so.1",
"libappindicator3.so",
+#else
+ "libayatana-appindicator3.so.1",
"libappindicator3.so.1",
+#endif
NULL
};
const char *gtk_names[] = {
+#ifdef SDL_PLATFORM_OPENBSD
"libgtk-3.so",
+#else
"libgtk-3.so.0",
+#endif
NULL
};
const char *gdk_names[] = {
+#ifdef SDL_PLATFORM_OPENBSD
"libgdk-3.so",
+#else
"libgdk-3.so.0",
+#endif
NULL
};