Skip to content

Failure to build for macOS 15 due to use of obsoleted APIs #10558

@fxcoudert

Description

@fxcoudert

Describe the bug
FreeRDP 3.8.0 fails to build against the macOS 15 SDK, because it uses obsoleted APIs: CGDisplayStreamStart, CGDisplayStreamStop, CGDisplayStreamUpdateGetRects, CGDisplayStreamUpdateCreateMergedUpdate, CGDisplayStreamCreateWithDispatchQueue, kCGDisplayStreamShowCursor.

To Reproduce
Steps to reproduce the behavior:

  1. Build FreeRDP from source on macOS 15 with Homebrew: brew install -s freerdp

Expected behavior
The build should succeed.

Screenshots

/tmp/freerdp-20240904-151-2ytdwj/FreeRDP-3.8.0/server/shadow/Mac/mac_shadow.c:254:8: error: 'CGDisplayStreamStart' is unavailable: obsoleted in macOS 15.0 - Please use ScreenCaptureKit instead.
  254 |         err = CGDisplayStreamStart(subsystem->stream);
      |               ^
/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDisplayStream.h:272:19: note: 'CGDisplayStreamStart' has been explicitly marked unavailable here
  272 | CG_EXTERN CGError CGDisplayStreamStart(CGDisplayStreamRef cg_nullable displayStream)
      |                   ^
/tmp/freerdp-20240904-151-2ytdwj/FreeRDP-3.8.0/server/shadow/Mac/mac_shadow.c:265:8: error: 'CGDisplayStreamStop' is unavailable: obsoleted in macOS 15.0 - Please use ScreenCaptureKit instead.
  265 |         err = CGDisplayStreamStop(subsystem->stream);
      |               ^
/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDisplayStream.h:284:19: note: 'CGDisplayStreamStop' has been explicitly marked unavailable here
  284 | CG_EXTERN CGError CGDisplayStreamStop(CGDisplayStreamRef cg_nullable displayStream)
      |                   ^
/tmp/freerdp-20240904-151-2ytdwj/FreeRDP-3.8.0/server/shadow/Mac/mac_shadow.c:279:10: error: 'CGDisplayStreamUpdateGetRects' is unavailable: obsoleted in macOS 15.0 - Please use ScreenCaptureKit instead.
  279 |         rects = CGDisplayStreamUpdateGetRects(subsystem->lastUpdate, kCGDisplayStreamUpdateDirtyRects,
      |                 ^
/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDisplayStream.h:106:37: note: 'CGDisplayStreamUpdateGetRects' has been explicitly marked unavailable here
  106 | CG_EXTERN const CGRect * __nullable CGDisplayStreamUpdateGetRects(CGDisplayStreamUpdateRef __nullable updateRef, 
      |                                     ^
/tmp/freerdp-20240904-151-2ytdwj/FreeRDP-3.8.0/server/shadow/Mac/mac_shadow.c:461:28: error: 'CGDisplayStreamUpdateCreateMergedUpdate' is unavailable: obsoleted in macOS 15.0 - Please use ScreenCaptureKit instead.
  461 |           subsystem->lastUpdate = CGDisplayStreamUpdateCreateMergedUpdate(tmpRef, updateRef);
      |                                   ^
/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDisplayStream.h:121:47: note: 'CGDisplayStreamUpdateCreateMergedUpdate' has been explicitly marked unavailable here
  121 | CG_EXTERN CGDisplayStreamUpdateRef __nullable CGDisplayStreamUpdateCreateMergedUpdate(
      |                                               ^
/tmp/freerdp-20240904-151-2ytdwj/FreeRDP-3.8.0/server/shadow/Mac/mac_shadow.c:474:19: error: 'kCGDisplayStreamShowCursor' is unavailable: obsoleted in macOS 15.0 - Please use ScreenCaptureKit instead.
  474 |         keys[0] = (void*)kCGDisplayStreamShowCursor;
      |                          ^
/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDisplayStream.h:194:30: note: 'kCGDisplayStreamShowCursor' has been explicitly marked unavailable here
  194 | CG_EXTERN const CFStringRef  kCGDisplayStreamShowCursor SCREEN_CAPTURE_OBSOLETE(10.8,14.0,15.0);  /* CFBoolean - defaults to false */
      |                              ^
/tmp/freerdp-20240904-151-2ytdwj/FreeRDP-3.8.0/server/shadow/Mac/mac_shadow.c:478:22: error: 'CGDisplayStreamCreateWithDispatchQueue' is unavailable: obsoleted in macOS 15.0 - Please use ScreenCaptureKit instead.
  478 |         subsystem->stream = CGDisplayStreamCreateWithDispatchQueue(
      |                             ^
/Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDisplayStream.h:261:41: note: 'CGDisplayStreamCreateWithDispatchQueue' has been explicitly marked unavailable here
  261 | CG_EXTERN CGDisplayStreamRef __nullable CGDisplayStreamCreateWithDispatchQueue(CGDirectDisplayID display, 
      |                                         ^

Application details

  • FreeRDP version: 3.8.0
  • Command line used: cmake --build build

Environment (please complete the following information):

  • OS: macOS
  • Version/Distribution: macOS 15 beta 6 (latest beta)
  • Architecture: arm64

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions