1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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;
}
|