From 76424950e373d3b04ac3dd13019151bfba3e8423 Mon Sep 17 00:00:00 2001 From: sumuel Date: Mon, 17 Aug 2026 20:44:55 +0000 Subject: Add the files --- src/detection/displayserver/displayserver.c | 67 +++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/detection/displayserver/displayserver.c (limited to 'src/detection/displayserver/displayserver.c') diff --git a/src/detection/displayserver/displayserver.c b/src/detection/displayserver/displayserver.c new file mode 100644 index 0000000..58c8c89 --- /dev/null +++ b/src/detection/displayserver/displayserver.c @@ -0,0 +1,67 @@ +#include "displayserver.h" + +FFDisplayResult* ffdsAppendDisplay( + FFDisplayServerResult* result, + uint32_t width, + uint32_t height, + double refreshRate, + uint32_t dpi, + uint32_t preferredWidth, + uint32_t preferredHeight, + double preferredRefreshRate, + uint32_t rotation, + FFstrbuf* name, + FFDisplayType type, + bool primary, + uint64_t id, + uint32_t physicalWidth, + uint32_t physicalHeight, + const char* platformApi) { + if (width == 0 || height == 0) { + return NULL; + } + + FFDisplayResult* display = FF_LIST_ADD(FFDisplayResult, result->displays); + display->width = width; + display->height = height; + display->refreshRate = refreshRate; + display->dpi = dpi ?: 96; // 0 means unknown + display->preferredWidth = preferredWidth; + display->preferredHeight = preferredHeight; + display->preferredRefreshRate = preferredRefreshRate; + display->rotation = rotation; + ffStrbufInitMove(&display->name, name); + display->type = type; + display->id = id; + display->physicalWidth = physicalWidth; + display->physicalHeight = physicalHeight; + display->primary = primary; + display->platformApi = platformApi; + + display->bitDepth = 0; + display->hdrStatus = FF_DISPLAY_HDR_STATUS_UNKNOWN; + display->manufactureYear = 0; + display->manufactureWeek = 0; + display->serial = 0; + display->drrStatus = FF_DISPLAY_DRR_STATUS_UNKNOWN; + + return display; +} + +void ffConnectDisplayServerImpl(FFDisplayServerResult* ds); + +const FFDisplayServerResult* ffConnectDisplayServer() { + static FFDisplayServerResult result; + static bool initialized = false; + if (!initialized) { + initialized = true; + ffStrbufInit(&result.wmProcessName); + ffStrbufInit(&result.wmPrettyName); + ffStrbufInit(&result.wmProtocolName); + ffStrbufInit(&result.deProcessName); + ffStrbufInit(&result.dePrettyName); + ffListInit(&result.displays); + ffConnectDisplayServerImpl(&result); + } + return &result; +} -- cgit v1.2.3