I have a macOS application (commercial GIS Package) that's been shipping since 2009 which uses `CATiledLayer` to draw large areas for map presentation. I've had no problems with this since the early days of Core Animation. However, it appears that since 10.14 and now with 10.15, my `CATiledLayer` is drawing on a single thread.My `-drawLayer:inContext:` delegate is being called from a background thread, not the main thread. However, it's being called sequentially with each tile that need to be drawn. The result is a very bored machine and a huge drop in performance from the same version running in 10.13 and prior. In 10.13 and prior, the `drawLayer:inContext` is being called on multiple threads with multiple contexts to draw the tiles.The layer is in an `NSView` subclass.The queue is named `CADispatch Group (serial)` and the stack from before the call to our delegate method is:Thread 138 Queue : CA DispatchGroup (serial)
#0 0x00000001001c6a0e in -[MapView drawLayer:inContext:]
#1 0x00007fff3f2d19fc in -[CALayer drawInContext:] ()
#2 0x00007fff3f3b6f6a in tiled_layer_render(_CAImageProvider*, unsigned int, unsigned int, unsigned int, unsigned int, void*) ()
#3 0x00007fff3f454871 in CAImageProviderThread(unsigned int*, bool) ()
#4 0x0000000107c42826 in _dispatch_client_callout ()
#5 0x0000000107c49dd7 in _dispatch_lane_serial_drain ()
#6 0x0000000107c4ab90 in _dispatch_lane_invoke ()
#7 0x0000000107c57fe0 in _dispatch_workloop_worker_thread ()
#8 0x0000000107cd0361 in _pthread_wqthread ()
#9 0x0000000107ccf49b in start_wqthread ()In hopes of finding something trivial like a dependence on settings in the View, I've created a completely new, unadorned window with nothing but the MapView in it.I'm certain there's only one thread calling in as I have a protected counter (predates this problem) which grows proportionately with the are being drawn on 10.13.6, but it remains just 1 on 10.15.4 and on 10.14.6. (Also, I am printing the thread ID and it's the same thread on each consecutive call under 10.14 and 10.15).I've tried reducing the CALayer stack for the NSView subclass so that it is just a single CALayer with my CATiledLayer inside it (previously, there were a stack of other layers here), but that had no effect.The NSView is loaded with a NIB as part of an NSWindow (this hasn't changed in a decade), but I have tried changing from the previous CALayer instantiation (adding the CALayer and setting wantsLayer)I have been able to reproduce this on our previous shipping version (linked against 10.7) and against a version linked against 10.13. The symptoms are the same.I'm looking for any other suggestions at this point. Something changed in running this on 10.14 and 10.15, and I haven't been able to locate an indicator in the release notes.Any indication of what we're doing wrong, or what's running afoul of macOS 10.14+ would be greatly appreciated.
Post
Replies
Boosts
Views
Activity
When running existing applications on macOS 11 systems (through beta 6, Intel, clean installs), I've noticed that many of the libraries that had .tbd files in versions of the macOS SDK as recent at 10.15 do not have corresponding .dylibs in /usr/lib in macOS 11.
The result of running our applications that expect these libraries is an immediate crash.
Considering that some of these libraries have been linkable under versions of macOS for years and are pretty important for the use of third-party libraries (such as libcurl, libxml2, libpq, libxslt) it seems odd that a decision would be made to remove these without warning.
Somewhat ironicaly, libpython2.7 is still there despite 2.7 now being out of support and Apple having announced some time ago that they'd be removing support for "scripting languages" in future versions of the OS. Not that I'm complaining, although on the basis of the stated removal, we have included our own copy of libpython for internal use, since we had fair warning from Apple.
Any suggestions? Anyone else having problems with this?