RustAudio / baseview

low-level window system interface for audio plugin UIs
Apache License 2.0
267 stars 57 forks source link

macOS DAW UIs become very unresponsive after plugin window is opened #126

Open jakerr opened 2 years ago

jakerr commented 2 years ago

Opening a gui plugin that uses baseview on macOS causes the entire DAW (FL Studio, Reaper) to be very slow to respond especially when resizing windows and panels.

After much debugging I finally came along this line in src/baseview/src/macos/view.rs

let _: () = msg_send![class!(NSEvent).setMouseCoalescingEnabled: NO];

Because mouseCoalescingEnabled is a class property on NSEvent changing it affect the entire process i.e. the host DAW. So from that point forward every mouse event is non coalesced and the number of events is just too great for the various DAWs' GUIs to keep up when moving sliders / resizing windows etc.

I tried removing the line which fixes the slowdown, and the plugin GUI interaction even feels smoother to me without. I'm not sure why that line was there to begin with though, so If it is indeed required, it would be good to at least set the initial value back once the view is cleaned up.

jakerr commented 2 years ago

Another bit of information: This issue wasn't noticeable when using the MacBook (2017) track pad. Using a gaming mouse on the same machine, with high tracking speed, makes the problem very apparent - resizing the viewport takes multiple seconds.