From 5b2006cd0635a9bd5f4266db88f69d132b8f14e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Tue, 31 Oct 2023 14:42:45 +0800 Subject: [PATCH] Global: get rid of locks Psychological burden NO MORE --- src/common/dbus.c | 4 ---- src/common/settings.c | 7 ------- src/detection/displayserver/linux/wayland.c | 5 ----- src/detection/gtk_qt/gtk.c | 13 +------------ src/detection/gtk_qt/qt.c | 6 ------ src/detection/internal.h | 6 ------ src/detection/temps/temps_linux.c | 9 --------- src/detection/terminalshell/terminalshell_linux.c | 6 ------ src/detection/terminalshell/terminalshell_windows.c | 9 +-------- src/detection/vulkan/vulkan.c | 6 ------ 10 files changed, 2 insertions(+), 69 deletions(-) diff --git a/src/common/dbus.c b/src/common/dbus.c index 05f66e402..cf94128c7 100644 --- a/src/common/dbus.c +++ b/src/common/dbus.c @@ -33,9 +33,6 @@ static const FFDBusLibrary* loadLib(void) static FFDBusLibrary lib; static bool loaded = false; static bool loadSuccess = false; - static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER; - - ffThreadMutexLock(&mutex); if(!loaded) { @@ -43,7 +40,6 @@ static const FFDBusLibrary* loadLib(void) loadSuccess = loadLibSymbols(&lib); } - ffThreadMutexUnlock(&mutex); return loadSuccess ? &lib : NULL; } diff --git a/src/common/settings.c b/src/common/settings.c index 0e1dbeb29..ae057a292 100644 --- a/src/common/settings.c +++ b/src/common/settings.c @@ -15,18 +15,14 @@ typedef enum FFInitState #define FF_LIBRARY_DATA_LOAD_INIT(dataObject, userLibraryName, ...) \ static dataObject data; \ - static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER; \ static FFInitState initState = FF_INITSTATE_UNINITIALIZED; \ - ffThreadMutexLock(&mutex); \ if(initState != FF_INITSTATE_UNINITIALIZED) {\ - ffThreadMutexUnlock(&mutex); \ return initState == FF_INITSTATE_SUCCESSFUL ? &data : NULL; \ } \ initState = FF_INITSTATE_SUCCESSFUL; \ void* libraryHandle = ffLibraryLoad(&userLibraryName, __VA_ARGS__, NULL); \ if(libraryHandle == NULL) { \ initState = FF_INITSTATE_FAILED; \ - ffThreadMutexUnlock(&mutex); \ return NULL; \ } \ @@ -35,20 +31,17 @@ typedef enum FFInitState if(data.ff ## symbolName == NULL) { \ dlclose(libraryHandle); \ initState = FF_INITSTATE_FAILED; \ - ffThreadMutexUnlock(&mutex); \ return NULL; \ } #define FF_LIBRARY_DATA_LOAD_RETURN \ initState = FF_INITSTATE_SUCCESSFUL; \ - ffThreadMutexUnlock(&mutex); \ return &data; #define FF_LIBRARY_DATA_LOAD_ERROR \ { \ dlclose(libraryHandle); \ initState = FF_INITSTATE_FAILED; \ - ffThreadMutexUnlock(&mutex); \ return NULL; \ } diff --git a/src/detection/displayserver/linux/wayland.c b/src/detection/displayserver/linux/wayland.c index e9bfca341..559587fa5 100644 --- a/src/detection/displayserver/linux/wayland.c +++ b/src/detection/displayserver/linux/wayland.c @@ -202,9 +202,6 @@ static void waylandOutputHandler(WaylandData* wldata, struct wl_registry* regist if(display.width <= 0 || display.height <= 0) return; - static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER; - ffThreadMutexLock(&mutex); - switch(display.transform) { case WL_OUTPUT_TRANSFORM_90: @@ -262,8 +259,6 @@ static void waylandOutputHandler(WaylandData* wldata, struct wl_registry* regist ffStrbufDestroy(&display.vendorAndModelId); ffStrbufDestroy(&display.name); ffStrbufDestroy(&display.edidName); - - ffThreadMutexUnlock(&mutex); } static void waylandGlobalAddListener(void* data, struct wl_registry* registry, uint32_t name, const char* interface, uint32_t version) diff --git a/src/detection/gtk_qt/gtk.c b/src/detection/gtk_qt/gtk.c index 8c7debe01..ef5e4f17a 100644 --- a/src/detection/gtk_qt/gtk.c +++ b/src/detection/gtk_qt/gtk.c @@ -36,8 +36,6 @@ static inline void applyGTKSettings(FFGTKResult* result, const char* themeName, static void detectGTKFromSettings(FFGTKResult* result) { - static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER; - static const char* themeName = NULL; static const char* iconsName = NULL; static const char* fontName = NULL; @@ -47,11 +45,8 @@ static void detectGTKFromSettings(FFGTKResult* result) static bool init = false; - ffThreadMutexLock(&mutex); - if(init) { - ffThreadMutexUnlock(&mutex); applyGTKSettings(result, themeName, iconsName, fontName, cursorTheme, cursorSize, wallpaper); return; } @@ -103,7 +98,6 @@ static void detectGTKFromSettings(FFGTKResult* result) wallpaper = ffSettingsGet("/org/gnome/desktop/background/picture-uri", "org.gnome.desktop.background", NULL, "picture-uri", FF_VARIANT_TYPE_STRING).strValue; } - ffThreadMutexUnlock(&mutex); applyGTKSettings(result, themeName, iconsName, fontName, cursorTheme, cursorSize, wallpaper); } @@ -178,14 +172,10 @@ static void detectGTK(const char* version, FFGTKResult* result) } #define FF_DETECT_GTK_IMPL(version) \ - static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER; \ static FFGTKResult result; \ static bool init = false; \ - ffThreadMutexLock(&mutex); \ - if(init){ \ - ffThreadMutexUnlock(&mutex);\ + if(init) \ return &result; \ - } \ init = true; \ ffStrbufInit(&result.theme); \ ffStrbufInit(&result.icons); \ @@ -194,7 +184,6 @@ static void detectGTK(const char* version, FFGTKResult* result) ffStrbufInit(&result.cursorSize); \ ffStrbufInit(&result.wallpaper); \ detectGTK(#version, &result); \ - ffThreadMutexUnlock(&mutex); \ return &result; const FFGTKResult* ffDetectGTK2(void) diff --git a/src/detection/gtk_qt/qt.c b/src/detection/gtk_qt/qt.c index 71b0536c7..a18a324b1 100644 --- a/src/detection/gtk_qt/qt.c +++ b/src/detection/gtk_qt/qt.c @@ -138,14 +138,9 @@ const FFQtResult* ffDetectQt(void) { static FFQtResult result; - static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER; static bool init = false; - ffThreadMutexLock(&mutex); if(init) - { - ffThreadMutexUnlock(&mutex); return &result; - } init = true; ffStrbufInit(&result.widgetStyle); @@ -161,6 +156,5 @@ const FFQtResult* ffDetectQt(void) else if(ffStrbufIgnCaseCompS(&wmde->dePrettyName, FF_DE_PRETTY_LXQT) == 0) detectLXQt(&result); - ffThreadMutexUnlock(&mutex); return &result; } diff --git a/src/detection/internal.h b/src/detection/internal.h index 11b081f7e..19ec8d1a2 100644 --- a/src/detection/internal.h +++ b/src/detection/internal.h @@ -6,18 +6,12 @@ #include "common/thread.h" #define FF_DETECTION_INTERNAL_GUARD(ResultType, ...) \ - static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER; \ static ResultType result; \ static bool init = false; \ - ffThreadMutexLock(&mutex); \ if(init) \ - { \ - ffThreadMutexUnlock(&mutex); \ return &result; \ - } \ init = true; \ __VA_ARGS__; \ - ffThreadMutexUnlock(&mutex); \ return &result; \ #endif diff --git a/src/detection/temps/temps_linux.c b/src/detection/temps/temps_linux.c index ee30a85c4..1599321f1 100644 --- a/src/detection/temps/temps_linux.c +++ b/src/detection/temps/temps_linux.c @@ -44,15 +44,10 @@ static bool parseHwmonDir(FFstrbuf* dir, FFTempValue* value) const FFTempsResult* ffDetectTemps(void) { static FFTempsResult result; - static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER; static bool init = false; - ffThreadMutexLock(&mutex); if(init) - { - ffThreadMutexUnlock(&mutex); return &result; - } init = true; ffListInitA(&result.values, sizeof(FFTempValue), 16); @@ -64,10 +59,7 @@ const FFTempsResult* ffDetectTemps(void) DIR* dirp = opendir(baseDir.chars); if(dirp == NULL) - { - ffThreadMutexUnlock(&mutex); return &result; - } struct dirent* entry; while((entry = readdir(dirp)) != NULL) @@ -92,6 +84,5 @@ const FFTempsResult* ffDetectTemps(void) closedir(dirp); - ffThreadMutexUnlock(&mutex); return &result; } diff --git a/src/detection/terminalshell/terminalshell_linux.c b/src/detection/terminalshell/terminalshell_linux.c index 38d83e800..4d44746ac 100644 --- a/src/detection/terminalshell/terminalshell_linux.c +++ b/src/detection/terminalshell/terminalshell_linux.c @@ -310,15 +310,10 @@ bool fftsGetTerminalVersion(FFstrbuf* processName, FFstrbuf* exe, FFstrbuf* vers const FFTerminalShellResult* ffDetectTerminalShell() { - static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER; static FFTerminalShellResult result; static bool init = false; - ffThreadMutexLock(&mutex); if(init) - { - ffThreadMutexUnlock(&mutex); return &result; - } init = true; #ifdef __APPLE__ @@ -413,6 +408,5 @@ const FFTerminalShellResult* ffDetectTerminalShell() ffStrbufInit(&result.terminalVersion); fftsGetTerminalVersion(&result.terminalProcessName, &result.terminalExe, &result.terminalVersion); - ffThreadMutexUnlock(&mutex); return &result; } diff --git a/src/detection/terminalshell/terminalshell_windows.c b/src/detection/terminalshell/terminalshell_windows.c index ebc062b33..746ba32a7 100644 --- a/src/detection/terminalshell/terminalshell_windows.c +++ b/src/detection/terminalshell/terminalshell_windows.c @@ -355,15 +355,10 @@ bool fftsGetTerminalVersion(FFstrbuf* processName, FFstrbuf* exe, FFstrbuf* vers const FFTerminalShellResult* ffDetectTerminalShell(void) { - static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER; static FFTerminalShellResult result; static bool init = false; - ffThreadMutexLock(&mutex); if(init) - { - ffThreadMutexUnlock(&mutex); return &result; - } init = true; ffStrbufInit(&result.shellProcessName); @@ -381,7 +376,7 @@ const FFTerminalShellResult* ffDetectTerminalShell(void) uint32_t ppid; if(!getProcessInfo(0, &ppid, NULL, NULL, NULL)) - goto exit; + return &result; ppid = getShellInfo(&result, ppid); if(ppid) @@ -393,7 +388,5 @@ const FFTerminalShellResult* ffDetectTerminalShell(void) ffStrbufInit(&result.terminalVersion); fftsGetTerminalVersion(&result.terminalProcessName, &result.terminalExe, &result.terminalVersion); -exit: - ffThreadMutexUnlock(&mutex); return &result; } diff --git a/src/detection/vulkan/vulkan.c b/src/detection/vulkan/vulkan.c index 07d10a57a..a9d3110be 100644 --- a/src/detection/vulkan/vulkan.c +++ b/src/detection/vulkan/vulkan.c @@ -228,15 +228,10 @@ static const char* detectVulkan(FFVulkanResult* result) FFVulkanResult* ffDetectVulkan(void) { static FFVulkanResult result; - static FFThreadMutex mutex = FF_THREAD_MUTEX_INITIALIZER; static bool init = false; - ffThreadMutexLock(&mutex); if(init) - { - ffThreadMutexUnlock(&mutex); return &result; - } init = true; ffStrbufInit(&result.driver); @@ -250,6 +245,5 @@ FFVulkanResult* ffDetectVulkan(void) result.error = "fastfetch was compiled without vulkan support"; #endif - ffThreadMutexUnlock(&mutex); return &result; }