diff options
| author | sumuel <samuel@yakubos.org> | 2026-08-17 20:44:55 +0000 |
|---|---|---|
| committer | sumuel <samuel@yakubos.org> | 2026-08-17 20:44:55 +0000 |
| commit | 76424950e373d3b04ac3dd13019151bfba3e8423 (patch) | |
| tree | 4c3cfdbda039e592b9186be3e28f8d7cfd439e8a /src/detection/displayserver/displayserver.c | |
Add the files
Diffstat (limited to 'src/detection/displayserver/displayserver.c')
| -rw-r--r-- | src/detection/displayserver/displayserver.c | 67 |
1 files changed, 67 insertions, 0 deletions
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; +} |