From de72c98a28ffadf7bad8e5738cf4a614ebb1ae01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Fri, 24 Feb 2023 17:45:04 +0800 Subject: [PATCH] Init: don't create detection thread for displayserver on Windows / macOS Displayserver (mainly resolutions) detection is cheap on win / mac, but creating an detection thread is unnecessary --- src/common/init.c | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/src/common/init.c b/src/common/init.c index 90970089a..ca9cf7c69 100644 --- a/src/common/init.c +++ b/src/common/init.c @@ -212,42 +212,29 @@ void ffInitInstance(FFinstance* instance) defaultConfig(instance); } -#ifdef FF_HAVE_THREADS - -FF_THREAD_ENTRY_DECL_WRAPPER(ffConnectDisplayServer, FFinstance*) - -#if !(defined(__APPLE__) || defined(_WIN32)) +#if defined(FF_HAVE_THREADS) && !(defined(__APPLE__) || defined(_WIN32) || defined(__ANDROID__)) #include "detection/gtk_qt/gtk_qt.h" -#define FF_DETECT_QT_GTK 1 +#define FF_START_DETECTION_THREADS +FF_THREAD_ENTRY_DECL_WRAPPER(ffConnectDisplayServer, FFinstance*) FF_THREAD_ENTRY_DECL_WRAPPER(ffDetectQt, FFinstance*) FF_THREAD_ENTRY_DECL_WRAPPER(ffDetectGTK2, FFinstance*) FF_THREAD_ENTRY_DECL_WRAPPER(ffDetectGTK3, FFinstance*) FF_THREAD_ENTRY_DECL_WRAPPER(ffDetectGTK4, FFinstance*) -#endif //!(defined(__APPLE__) || defined(_WIN32)) - -#endif //FF_HAVE_THREADS - void startDetectionThreads(FFinstance* instance) { - #ifdef FF_HAVE_THREADS ffThreadDetach(ffThreadCreate(ffConnectDisplayServerThreadMain, instance)); - - #ifdef FF_DETECT_QT_GTK ffThreadDetach(ffThreadCreate(ffDetectQtThreadMain, instance)); ffThreadDetach(ffThreadCreate(ffDetectGTK2ThreadMain, instance)); ffThreadDetach(ffThreadCreate(ffDetectGTK3ThreadMain, instance)); ffThreadDetach(ffThreadCreate(ffDetectGTK4ThreadMain, instance)); - #endif - - #else - FF_UNUSED(instance); - #endif } +#endif //FF_HAVE_THREADS + static volatile bool ffDisableLinewrap = true; static volatile bool ffHideCursor = true; @@ -268,7 +255,7 @@ static void resetConsole() BOOL WINAPI consoleHandler(DWORD signal) { FF_UNUSED(signal); - resetConsole(); + resetConsole(); exit(0); } #else @@ -282,8 +269,10 @@ static void exitSignalHandler(int signal) void ffStart(FFinstance* instance) { - if(instance->config.multithreading) - startDetectionThreads(instance); + #ifdef FF_START_DETECTION_THREADS + if(instance->config.multithreading) + startDetectionThreads(instance); + #endif ffDisableLinewrap = instance->config.disableLinewrap && !instance->config.pipe; ffHideCursor = instance->config.hideCursor && !instance->config.pipe;