summaryrefslogtreecommitdiffstats
path: root/src/detection/displayserver/displayserver.c
diff options
context:
space:
mode:
authorsumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
committersumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
commit76424950e373d3b04ac3dd13019151bfba3e8423 (patch)
tree4c3cfdbda039e592b9186be3e28f8d7cfd439e8a /src/detection/displayserver/displayserver.c
Add the files
Diffstat (limited to 'src/detection/displayserver/displayserver.c')
-rw-r--r--src/detection/displayserver/displayserver.c67
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;
+}