WM (macOS): detect if WindowServer is running

This commit is contained in:
李通洲 2023-08-11 14:56:17 +08:00
parent ff685a52b4
commit 126034f33e
No known key found for this signature in database
GPG Key ID: 269AD4F5325A22A3

View File

@ -19,8 +19,6 @@ static void detectDisplays(FFDisplayServerResult* ds)
if(CGGetOnlineDisplayList(sizeof(screens) / sizeof(screens[0]), screens, &screenCount) != kCGErrorSuccess)
return;
CGDirectDisplayID primary = CGMainDisplayID();
for(uint32_t i = 0; i < screenCount; i++)
{
CGDirectDisplayID screen = screens[i];
@ -63,7 +61,7 @@ static void detectDisplays(FFDisplayServerResult* ds)
(uint32_t)CGDisplayRotation(screen),
&name,
CGDisplayIsBuiltin(screen) ? FF_DISPLAY_TYPE_BUILTIN : FF_DISPLAY_TYPE_EXTERNAL,
screen == primary,
CGDisplayIsMain(screen),
(uint64_t)screen
);
CGDisplayModeRelease(mode);
@ -103,9 +101,20 @@ static void detectWMPlugin(FFstrbuf* name)
void ffConnectDisplayServerImpl(FFDisplayServerResult* ds)
{
ffStrbufInitStatic(&ds->wmProcessName, "WindowServer");
ffStrbufInitStatic(&ds->wmPrettyName, "Quartz Compositor");
ffStrbufInit(&ds->wmProtocolName);
{
FF_CFTYPE_AUTO_RELEASE CFMachPortRef port = CGWindowServerCreateServerPort();
if (port)
{
ffStrbufInitStatic(&ds->wmProcessName, "WindowServer");
ffStrbufInitStatic(&ds->wmPrettyName, "Quartz Compositor");
}
else
{
ffStrbufInit(&ds->wmProcessName);
ffStrbufInit(&ds->wmPrettyName);
}
}
ffStrbufInitStatic(&ds->wmProtocolName, "Core Graphics");
if(instance.config.allowSlowOperations)
{