MacOS MapKit - CVDisplayLinkSetPaused alternating true/false several times per second

When using MKMapView within SwiftUI in MacOS, via NSViewRepresentable and a Coordinator, the are several console messages per second "CVDisplayLinkSetPaused", alternating between [TRUE]and [FALSE] when displaying a poly line and/or annotations. This is possibly preventing NSClickGestureRecognizer from working correctly, although that's probably another, developer (my), issue. These console messages have only occurred in the last two Mac OS beta releases, the last being 21D5039d. Even if these messages are not an indication of a problem, they are very distracting and annoying - taking up so much time and space in the logs.

Feedback submitted: FB9845486

  • I agree, these spurious(?) console messages are annoying! Unfortunately, it's a common thing with new versions of Xcode. Hopefully an update will calm things down.

  • I have been seeing these since Xcode 13.1. Let us know if you figure out a way to make it stop! 😣

  • I'm seeing the same thing and also my NSClickGEstureRecognizer is not firing. Did you ever get to the bottom of this? - at least to get the gesture recogniser working, I'm less concerned about the logs. Any clues gratefully received. I'm seeing this using MapView in a standard storyboard, not using SwiftUI.

Replies

I have the exact same annoying messages...

It's still happening with Xcode Version 13.3 beta (13E5086k) and Monterey 12.3 Beta (21E5196i), both the latest available as of today (4 Feb 2022).

Regards, Michaela

It's still happening with Xcode Version 13.3 beta 2 (13E5095k) and Monterey 12.3 Beta (21E5227a).

I tried running a working iPad app under Mac Catalyst with MKMapView as UIViewRepresentable. It also shows the messages AND then crashes with __validateTextureView:557: failed assertion `Texture View Validationtexture usage (0x05) doesn't specify MTLTextureUsagePixelFormatView (0x10)'_.

My understanding is that MapView uses Metal for its rendering, hence the messages re syncing screen refresh, and requires the MLTextureUsagePixelFormatView to be set. However, since everything works fine on iOS (iPad), it appears that there's a problem with the Mac OS and Catalyst implementation of MapView under SwiftUI.

I tried adding (blindly) MetalLayer and Metal Device instances and required settings to my code, but to no avail. When I get some spare time I'll collect all the evidence and submit a bug report.

Cheers,

Michaela

I'm observing the same issue with Xcode 13.3.1 (13E500a) using macOS Monterey 12.3.1 (21E258).

Additionally to the log messages, it incurs a CPU usage of 15 % when idle, versus 0 % when not displaying a view with a Map. Looking more closely, I observed a very faint flickering of some annotations on the map (pins and city locations).

When using MKMapView within SwiftUI in MacOS, via NSViewRepresentable and a Coordinator, the are several console messages per second "CVDisplayLinkSetPaused", alternating between [TRUE]and [FALSE] when displaying a poly line and/or annotations.

.. also seeing my log deluged with this effect, but in my case, none of the above conditions are true. There is significant use of SceneKit but no SwiftUI, MapView, or anything else from the quote above (unless "poly line" is equivalent to SceneKit drawing a twisty line through a 3-D space).

MacBook Pro (16-inch, M1 Max, 2021); macOS 12.3.1 (21E258); Xcode 13.3.1 (13E500a)

A seemingly overlooked feature in the Xcode console—filter—can provide a reprieve whenever the output is overly voluminous. One way is to preface your target output with a unique string, replacing occurrences of print("…") with print("[unique prefix] …") where necessary. Of course, this means that all output—yours and others’—without the unique prefix will be excluded, but in this case that is the desired effect.

For example, by using print("AWEAPP …") in your code and entering AWEAPP (sans quotes) as the filter, the noise-to-signal ratio will drop to zero, as shown below.

Before filtering:

After filtering:

So, no more endless CV… messages diluting the console output! You can, of course, embellish your output with timestamps, filenames, line numbers, etc. In the end, however, clearing or changing the filter to observe useful output from others would be prudent.