Remove hooking of system color changes (dotnet/corefx#39468)
authorJeremy Kuhne <jkuhne@microsoft.com>
Tue, 16 Jul 2019 04:21:10 +0000 (21:21 -0700)
committerGitHub <noreply@github.com>
Tue, 16 Jul 2019 04:21:10 +0000 (21:21 -0700)
commit93d613d860927a0de54a4e5f88fc999a30b0139a
tree959137f48f419aac896315bb6eb5ca98b2c77a30
parent69dca4241d8377a6167477768361c9dc803f8d0f
Remove hooking of system color changes (dotnet/corefx#39468)

* Remove hooking of system color changes

Hooking user preference changes to update system colors is expensive, particularly as it is hooked via reflection. Getting the current color from the OS is extremely cheap.  Removing this layer of caching avoids creating a watcher window and thread and a significant number of startup allocations.

In starting up a blank WinForms app this cuts 200 allocations.

Note that Pens and Brushes in System.Drawing start their own user preference watcher so that they can update GDI+ when backed by system colors.

* Address feedback

* Remove newly dead files

Commit migrated from https://github.com/dotnet/corefx/commit/97c736e09f2e119d6ec3d3ebebb7234dee48145d
20 files changed:
src/libraries/Common/src/Interop/Windows/User32/Interop.GetSysColor.cs
src/libraries/Common/src/Interop/Windows/User32/Interop.Win32SystemColors.cs
src/libraries/Common/src/System/Drawing/ColorTranslator.cs
src/libraries/Common/src/System/Drawing/ColorUtil.netcoreapp20.cs [deleted file]
src/libraries/Common/src/System/Drawing/ColorUtil.netcoreapp21.cs [deleted file]
src/libraries/Common/src/System/Drawing/KnownColor.cs
src/libraries/Common/src/System/Drawing/KnownColorTable.cs
src/libraries/Common/src/System/Drawing/SystemColors.cs
src/libraries/System.Drawing.Common/src/System.Drawing.Common.csproj
src/libraries/System.Drawing.Common/src/System/Drawing/Pen.cs
src/libraries/System.Drawing.Common/src/System/Drawing/SolidBrush.cs
src/libraries/System.Drawing.Common/src/System/Drawing/SystemBrushes.cs
src/libraries/System.Drawing.Common/src/System/Drawing/SystemPens.cs
src/libraries/System.Drawing.Primitives/src/System.Drawing.Primitives.csproj
src/libraries/System.Drawing.Primitives/src/System/Drawing/Color.cs
src/libraries/System.Drawing.Primitives/src/System/Drawing/KnownColorNames.cs [new file with mode: 0644]
src/libraries/System.Drawing.Primitives/tests/ColorTests.cs
src/libraries/System.Drawing.Primitives/tests/ColorTranslatorTests.cs [new file with mode: 0644]
src/libraries/System.Drawing.Primitives/tests/Helpers.cs [new file with mode: 0644]
src/libraries/System.Drawing.Primitives/tests/System.Drawing.Primitives.Tests.csproj