> On Dec 16, 2018, at 6:34 PM, Tor Arne Vestbø <tor.arne.ves...@qt.io> wrote: > > The session doesn’t go into what do if you want to draw synchronously outside > of the display cycle though. Is it enough to setNeedsDisplay and then call > [NSView displayIfNeeded] or [CALayer displayIfNeeded]? I guess the latter > since I don’t want AppKit to walk the view hierarchy and display other views > (unless it’s smart enough to treat a layer-backed view as not needing that > behavior).
Yes, the session does not go very deep. Here are some of my notes on the subject which may or may not be helpful. Generally speaking there are three ways to execute draw code. You can use a timer-based mode where it will execute draw code at a regular interval in synchronization with a display. You can use an event-based mode which will trigger draw code whenever an event has occurred. Finally, you can explicitly drive the draw code, perhaps in an open loop on a secondary thread at your own frame rate. My application uses the second approach. Draw code is triggered whenever an event has occurred. However dynamic resources may be concurrently generated on demand on a background thread. Also the main layer may be drawn using a texture generated by a background thread. Concurrent drawing is coordinated with setNeedsDisplay using a run loop observer on the main thread. When it is necessary to display the layer, simply call setNeedsDisplay on the layer. Lili Sang, Apple DTS Engineer, was helpful in providing insight. You may want to submit a technical support incident on your particular use case. --Richard Charles _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com