From 25ec63968c0e792217a015c402ac52ae59a85e3b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 19 Aug 2016 11:12:05 -0400 Subject: [PATCH] add code to disable AppNap on OS X/MacOS Should build on versions before 10.9 and run everywhere due to respondsToSelector check. --- gtk2_ardour/bundle_env_cocoa.cc | 5 +++++ gtk2_ardour/cocoacarbon.mm | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/gtk2_ardour/bundle_env_cocoa.cc b/gtk2_ardour/bundle_env_cocoa.cc index d63057408e..12d7aae2d6 100644 --- a/gtk2_ardour/bundle_env_cocoa.cc +++ b/gtk2_ardour/bundle_env_cocoa.cc @@ -50,6 +50,7 @@ using namespace ARDOUR; using namespace std; extern void set_language_preference (); // cocoacarbon.mm +extern void no_app_nap (); // cocoacarbon.mm static void setup_logging(void) @@ -81,6 +82,10 @@ setup_logging(void) void fixup_bundle_environment (int argc, char* argv[], string & localedir) { + /* do this even for non-bundle runtimes */ + + no_app_nap (); + if (!g_getenv ("ARDOUR_BUNDLED")) { return; } diff --git a/gtk2_ardour/cocoacarbon.mm b/gtk2_ardour/cocoacarbon.mm index 592a55d09d..2376756b03 100644 --- a/gtk2_ardour/cocoacarbon.mm +++ b/gtk2_ardour/cocoacarbon.mm @@ -106,3 +106,14 @@ set_language_preference () setenv ("LANG", [nslocale UTF8String], 0); CFRelease (cflocale); } + + /* Prevent "App Nap" */ + +void +no_app_nap () +{ + if ( [ [ NSProcessInfo processInfo ] respondsToSelector:@selector(beginActivityWithOptions:reason:) ] ) { + cout << "Disabling MacOS AppNap\n"; + [ [ NSProcessInfo processInfo] beginActivityWithOptions:NSActivityLatencyCritical reason:@"realtime audio" ]; + } +} -- 2.30.2