diff --git a/CHANGELOG.md b/CHANGELOG.md index 61cf46381a..ec12387b29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# Unreleased + +- Fix linking to the `ColorSync` framework on macOS 10.7, and in newer Rust versions. + # 0.26.0 (2021-12-01) - Update `raw-window-handle` to `v0.4`. This is _not_ a breaking change, we still implement `HasRawWindowHandle` from `v0.3`, see [rust-windowing/raw-window-handle#74](https://github.com/rust-windowing/raw-window-handle/pull/74). Note that you might have to run `cargo update -p raw-window-handle` after upgrading. diff --git a/src/platform_impl/macos/ffi.rs b/src/platform_impl/macos/ffi.rs index 991b3f331d..196763e7e2 100644 --- a/src/platform_impl/macos/ffi.rs +++ b/src/platform_impl/macos/ffi.rs @@ -165,9 +165,18 @@ pub const IO8BitOverlayPixels: &str = "O8"; pub type CGWindowLevel = i32; pub type CGDisplayModeRef = *mut c_void; +// `CGDisplayCreateUUIDFromDisplayID` comes from the `ColorSync` framework. +// However, that framework was only introduced "publicly" in macOS 10.13. +// +// Since we want to support older versions, we can't link to `ColorSync` +// directly. Fortunately, it has always been available as a subframework of +// `ApplicationServices`, see: +// https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/OSX_Technology_Overview/SystemFrameworks/SystemFrameworks.html#//apple_ref/doc/uid/TP40001067-CH210-BBCFFIEG +// +// TODO: Remove the WINIT_LINK_COLORSYNC hack, it is probably not needed. #[cfg_attr( not(use_colorsync_cgdisplaycreateuuidfromdisplayid), - link(name = "CoreGraphics", kind = "framework") + link(name = "ApplicationServices", kind = "framework") )] #[cfg_attr( use_colorsync_cgdisplaycreateuuidfromdisplayid,