add code to disable AppNap on OS X/MacOS
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 19 Aug 2016 15:12:05 +0000 (11:12 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 19 Aug 2016 15:12:35 +0000 (11:12 -0400)
Should build on versions before 10.9 and run everywhere due to respondsToSelector check.

gtk2_ardour/bundle_env_cocoa.cc
gtk2_ardour/cocoacarbon.mm

index d63057408e2aba0f3908b9e4f717ca738a806095..12d7aae2d680671600020e73ae4991feebd908ad 100644 (file)
@@ -50,6 +50,7 @@ using namespace ARDOUR;
 using namespace std;
 
 extern void set_language_preference (); // cocoacarbon.mm
 using namespace std;
 
 extern void set_language_preference (); // cocoacarbon.mm
+extern void no_app_nap (); // cocoacarbon.mm
 
 static void
 setup_logging(void)
 
 static void
 setup_logging(void)
@@ -81,6 +82,10 @@ setup_logging(void)
 void
 fixup_bundle_environment (int argc, char* argv[], string & localedir)
 {
 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;
        }
        if (!g_getenv ("ARDOUR_BUNDLED")) {
                return;
        }
index 592a55d09dc97a619c1c00f0d9e85ad8a653d398..2376756b03dff82a3f58e92802fb4f0ecd2e9699 100644 (file)
@@ -106,3 +106,14 @@ set_language_preference ()
         setenv ("LANG", [nslocale UTF8String], 0);
        CFRelease (cflocale);
 }
         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" ];
+       }
+}