summaryrefslogtreecommitdiff
path: root/gtk2_ardour/screensaver.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-08-11 19:04:02 +0200
committerRobin Gareus <robin@gareus.org>2019-08-11 20:39:39 +0200
commit4b5d16554b614069a89672dd282cf4eaeccb0d40 (patch)
treee21eaea71bd574eb1132c7e8a5fbd2b366709461 /gtk2_ardour/screensaver.cc
parenta3eed5839fffb2e3f2f3b6c928512af1ae0b6f83 (diff)
Simplify screensaver inhibit API and fix OSX compatibility
Diffstat (limited to 'gtk2_ardour/screensaver.cc')
-rw-r--r--gtk2_ardour/screensaver.cc57
1 files changed, 28 insertions, 29 deletions
diff --git a/gtk2_ardour/screensaver.cc b/gtk2_ardour/screensaver.cc
index a549a5710a..e4aab918f4 100644
--- a/gtk2_ardour/screensaver.cc
+++ b/gtk2_ardour/screensaver.cc
@@ -23,15 +23,13 @@
#include <windows.h>
void
-ARDOUR_UI_UTILS::enable_screensaver ()
+ARDOUR_UI_UTILS::inhibit_screensaver (bool inhibit)
{
- SetThreadExecutionState (ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED | ES_CONTINUOUS);
-}
-
-void
-ARDOUR_UI_UTILS::disable_screensaver ()
-{
- SetThreadExecutionState (ES_CONTINUOUS);
+ if (inhibit) {
+ SetThreadExecutionState (ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED | ES_CONTINUOUS);
+ } else {
+ SetThreadExecutionState (ES_CONTINUOUS);
+ }
}
#elif defined __APPLE__
@@ -42,23 +40,26 @@ static IOReturn success = kIOReturnError;
static IOPMAssertionID assertion_id;
void
-ARDOUR_UI_UTILS::enable_screensaver ()
-{
- static const CFStringRef name = CFSTR("Ardour DAW");
- /* kIOPMAssertionTypeNoDisplaySleep prevents display sleep,
- * kIOPMAssertionTypeNoIdleSleep prevents idle sleep
- */
- success = IOPMAssertionCreateWithName (kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, name, &assertion_id);
-}
-
-void
-ARDOUR_UI_UTILS::disable_screensaver ()
+ARDOUR_UI_UTILS::inhibit_screensaver (bool inhibit)
{
- if (success != kIOReturnSuccess) {
+ if (inhibit == (success == kIOReturnSuccess)) {
return;
}
- if (kIOReturnSuccess == IOPMAssertionRelease (assertion_id)) {
- success = kIOReturnError;
+
+ if (inhibit) {
+ /* kIOPMAssertionTypeNoDisplaySleep prevents display sleep,
+ * kIOPMAssertionTypeNoIdleSleep prevents idle sleep
+ */
+#ifdef __ppc__ /* OS X 10.5 compat API */
+ success = IOPMAssertionCreate (kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, &assertion_id);
+#else
+ static const CFStringRef name = CFSTR("Ardour DAW");
+ success = IOPMAssertionCreateWithName (kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, name, &assertion_id);
+#endif
+ } else {
+ if (kIOReturnSuccess == IOPMAssertionRelease (assertion_id)) {
+ success = kIOReturnError; // mark as inactive
+ }
}
}
@@ -88,15 +89,13 @@ xdg_screensaver_reset ()
}
void
-ARDOUR_UI_UTILS::enable_screensaver ()
-{
- glib_timer = Glib::signal_timeout().connect_seconds (sigc::ptr_fun (&xdg_screensaver_reset), 45, Glib::PRIORITY_DEFAULT_IDLE);
-}
-
-void
-ARDOUR_UI_UTILS::disable_screensaver ()
+ARDOUR_UI_UTILS::inhibit_screensaver (bool inhibit)
{
glib_timer.disconnect ();
+ if (inhibit) {
+ xdg_screensaver_reset ();
+ glib_timer = Glib::signal_timeout().connect_seconds (sigc::ptr_fun (&xdg_screensaver_reset), 45, Glib::PRIORITY_DEFAULT_IDLE);
+ }
}
#endif