From 4202e618dbc018c79362e69c415558fa53ba0ba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sun, 23 Jul 2023 13:15:22 +0800 Subject: [PATCH] Brightness: improve performance --- src/detection/brightness/brightness_apple.c | 14 +++++++++++++- src/detection/brightness/brightness_windows.cpp | 14 +++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/detection/brightness/brightness_apple.c b/src/detection/brightness/brightness_apple.c index 2b31d45e8..c584fc4a4 100644 --- a/src/detection/brightness/brightness_apple.c +++ b/src/detection/brightness/brightness_apple.c @@ -127,10 +127,22 @@ static const char* detectWithDdcci(FFlist* result) return NULL; } +static bool hasBuiltinDisplay(const FFDisplayServerResult* displayServer) +{ + FF_LIST_FOR_EACH(FFDisplayResult, display, displayServer->displays) + { + if (display->type == FF_DISPLAY_TYPE_BUILTIN || display->type == FF_DISPLAY_TYPE_UNKNOWN) + return true; + } + return false; +} + const char* ffDetectBrightness(FFlist* result) { const FFDisplayServerResult* displayServer = ffConnectDisplayServer(); - detectWithDisplayServices(displayServer, result); + + if (hasBuiltinDisplay(displayServer)) + detectWithDisplayServices(displayServer, result); if (instance.config.allowSlowOperations && displayServer->displays.length > result->length) detectWithDdcci(result); diff --git a/src/detection/brightness/brightness_windows.cpp b/src/detection/brightness/brightness_windows.cpp index a085c71c5..dcde38502 100644 --- a/src/detection/brightness/brightness_windows.cpp +++ b/src/detection/brightness/brightness_windows.cpp @@ -58,12 +58,24 @@ static char* detectWithDdcci(const FFDisplayServerResult* displayServer, FFlist* return NULL; } +static bool hasBuiltinDisplay(const FFDisplayServerResult* displayServer) +{ + FF_LIST_FOR_EACH(FFDisplayResult, display, displayServer->displays) + { + if (display->type == FF_DISPLAY_TYPE_BUILTIN || display->type == FF_DISPLAY_TYPE_UNKNOWN) + return true; + } + return false; +} + extern "C" const char* ffDetectBrightness(FFlist* result) { const FFDisplayServerResult* displayServer = ffConnectDisplayServer(); - detectWithWmi(result); + if (hasBuiltinDisplay(displayServer)) + detectWithWmi(result); + if (instance.config.allowSlowOperations && result->length < displayServer->displays.length) detectWithDdcci(displayServer, result); return NULL;