On 07/10/2023 13:59, Alan Snyder wrote:
I’ve been investigating a problem with a long running application that accumulates an apparently unbounded number of
CVDisplayLink threads. I do not yet have an explanation or a test case.

The code that creates and releases CVDisplayLinks looks fine, but that assumes there are no threading issues.
It looks like there are threading issues.

Specifically, it appears that the startDisplayLink and stopDisplayLink methods of the Objective-C class MTLLayer are invoked on multiple threads.

They are invoked on the AppKit main thread from screen sleep notifications and blitTexture.

They are invoked on the EDT from MTLLayer.validate.

They are invoked on the Queue Flusher thread from MTLRenderQueue.flushBuffer.

Perhaps someone familiar with this code could comment?

It would be better to being this to client-lib-dev as that is where the metal pipeline is maintained.

-Alan

Reply via email to