diff --git a/src/vs/base/common/platform.ts b/src/vs/base/common/platform.ts index cf76f7ce0e1..8c0d6c319e9 100644 --- a/src/vs/base/common/platform.ts +++ b/src/vs/base/common/platform.ts @@ -278,3 +278,7 @@ export const isAndroid = !!(userAgent && userAgent.indexOf('Android') >= 0); export function isBigSurOrNewer(osVersion: string): boolean { return parseFloat(osVersion) >= 20; } + +export function isTahoe(osVersion: string): boolean { + return parseFloat(osVersion) === 25; +} diff --git a/src/vs/platform/windows/electron-main/windows.ts b/src/vs/platform/windows/electron-main/windows.ts index 57d8b534e68..52317939863 100644 --- a/src/vs/platform/windows/electron-main/windows.ts +++ b/src/vs/platform/windows/electron-main/windows.ts @@ -4,10 +4,11 @@ *--------------------------------------------------------------------------------------------*/ import electron, { Display, Rectangle } from 'electron'; +import { release } from 'os'; import { Color } from '../../../base/common/color.js'; import { Event } from '../../../base/common/event.js'; import { join } from '../../../base/common/path.js'; -import { IProcessEnvironment, isLinux, isMacintosh, isWindows } from '../../../base/common/platform.js'; +import { IProcessEnvironment, isLinux, isMacintosh, isTahoe, isWindows } from '../../../base/common/platform.js'; import { URI } from '../../../base/common/uri.js'; import { IAuxiliaryWindow } from '../../auxiliaryWindow/electron-main/auxiliaryWindow.js'; import { IConfigurationService } from '../../configuration/common/configuration.js'; @@ -186,6 +187,14 @@ export function defaultBrowserWindowOptions(accessor: ServicesAccessor, windowSt if (windowSettings?.clickThroughInactive === false) { options.acceptFirstMouse = false; } + + // Mac OS 26.?.? has a `WindowServer` bug that causes (some?) windows with shadows + // to cause 80%+ GPU load. + // See: https://github.com/electron/electron/issues/48311 + // TODO: once the bug is fixed in the OS, lock this into a specific version. + if (isTahoe(release())) { + options.hasShadow = false; + } } if (overrides?.disableFullscreen) {