<!--
{
  "availability" : [
    "macCatalyst: 13.1.0 - 13.1.0"
  ],
  "documentType" : "symbol",
  "framework" : "CoreGraphics",
  "identifier" : "/documentation/CoreGraphics/CGWaitForScreenUpdateRects(_:_:_:_:_:)",
  "metadataVersion" : "0.1.0",
  "role" : "Function",
  "symbol" : {
    "kind" : "Function",
    "modules" : [
      "Core Graphics"
    ],
    "preciseIdentifier" : "c:@F@CGWaitForScreenUpdateRects"
  },
  "title" : "CGWaitForScreenUpdateRects(_:_:_:_:_:)"
}
-->

# CGWaitForScreenUpdateRects(_:_:_:_:_:)

Waits for screen update operations.

```
func CGWaitForScreenUpdateRects(_ requestedOperations: CGScreenUpdateOperation, _ currentOperation: UnsafeMutablePointer<CGScreenUpdateOperation>?, _ rects: UnsafeMutablePointer<UnsafeMutablePointer<CGRect>?>?, _ rectCount: UnsafeMutablePointer<Int>?, _ delta: UnsafeMutablePointer<CGScreenUpdateMoveDelta>?) -> CGError
```

## Parameters

`requestedOperations`

The desired types of screen update operations. There are several possible choices:

- Specify `kCGScreenUpdateOperationRefresh` if you want all move operations to be returned as refresh operations.
- Specify `(kCGScreenUpdateOperationRefresh | kCGScreenUpdateOperationMove)` if you want to distinguish between move and refresh operations.
- Add `kCGScreenUpdateOperationReducedDirtyRectangleCount` to the screen operations if you want to minimize the number of rectangles returned to represent changed areas of the display.

`currentOperation`

A pointer to a `CGScreenUpdateOperation` variable. On return, the variable indicates the type of update operation (refresh or move).

`rects`

A pointer to a `CGRect*` variable. On return, the variable contains an array of rectangles that bound the updated areas, specified in the global display coordinate space. When you no longer need the array, you should deallocate it by calling [`CGReleaseScreenRefreshRects(_:)`](/documentation/CoreGraphics/CGReleaseScreenRefreshRects(_:)).

`rectCount`

A pointer to a `size_t` variable. On return, the variable contains the number of entries in the returned array of rectangles.

`delta`

A pointer to a `CGScreenUpdateMoveDelta` variable. On return, if the value of the `currentOperation` parameter is `kCGScreenUpdateOperationMove`, the variable contains the distance moved.

## Return Value

A result code. See `Core Graphics Data Types and Constants`.

## Discussion

In some applications it may be preferable to wait for screen-update data synchronously, using this function. You should call this function in a thread other than the main event-processing thread.

As an alternative, Quartz also supports asynchronous notification—see [`CGRegisterScreenRefreshCallback(_:_:)`](/documentation/CoreGraphics/CGRegisterScreenRefreshCallback(_:_:)) and [`CGScreenRegisterMoveCallback(_:_:)`](/documentation/CoreGraphics/CGScreenRegisterMoveCallback(_:_:)). If refresh or move callback functions are registered, this function should not be used.

### Special Considerations

This function is implemented in macOS 10.4.3 and later.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)