summaryrefslogtreecommitdiff
path: root/scheduler/sysman.c
diff options
context:
space:
mode:
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2013-07-02 20:39:24 +0000
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>2013-07-02 20:39:24 +0000
commit7bf181980c0f4538868289e854fe2b3cd2dbda11 (patch)
tree3c8fa6e7e7ba5beff9b17fea6184e40cf7fb3b3c /scheduler/sysman.c
parent223bdaa186938229df5ab1d979cc397d21168881 (diff)
Use new kIOPMAssertRemoteAccess power management assertion, when supported, to
keep the system awake enough to print (<rdar://problem/11918463>) git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@11081 a1ca3aef-8c08-0410-bb20-df032aa958be
Diffstat (limited to 'scheduler/sysman.c')
-rw-r--r--scheduler/sysman.c47
1 files changed, 29 insertions, 18 deletions
diff --git a/scheduler/sysman.c b/scheduler/sysman.c
index 0a0aeea4c..abeffbd5d 100644
--- a/scheduler/sysman.c
+++ b/scheduler/sysman.c
@@ -3,7 +3,7 @@
*
* System management functions for the CUPS scheduler.
*
- * Copyright 2007-2011 by Apple Inc.
+ * Copyright 2007-2013 by Apple Inc.
* Copyright 2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -69,9 +69,9 @@
* Local globals...
*/
-#ifdef kIOPMAssertionTypeDenySystemSleep
-static IOPMAssertionID dark_wake = 0; /* "Dark wake" assertion for sharing */
-#endif /* kIOPMAssertionTypeDenySystemSleep */
+#if defined(kIOPMAssertionTypeDenySystemSleep) || defined(kIOPMAssertRemoteAccess)
+static IOPMAssertionID keep_awake = 0; /* Keep the system awake while printing */
+#endif /* kIOPMAssertionTypeDenySystemSleep || kIOPMAssertRemoteAccess */
/*
@@ -215,21 +215,32 @@ cupsdSetBusyState(void)
#endif /* HAVE_VPROC_TRANSACTION_BEGIN */
}
-#ifdef kIOPMAssertionTypeDenySystemSleep
- if (cupsArrayCount(PrintingJobs) > 0 && !dark_wake)
+#if defined(kIOPMAssertionTypeDenySystemSleep) || defined(kIOPMAssertRemoteAccess)
+ if (cupsArrayCount(PrintingJobs) > 0 && !keep_awake)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG, "Asserting dark wake.");
+# ifdef kIOPMAssertionTypeRemoteAccess
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "Asserting RemoteAccess.");
+
+ IOPMAssertionCreateWithName(kIOPMAssertionTypeRemoteAccess,
+ kIOPMAssertionLevelOn,
+ CFSTR("org.cups.cupsd"), &keep_awake);
+
+# else
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "Asserting DenySystemSleep.");
+
IOPMAssertionCreateWithName(kIOPMAssertionTypeDenySystemSleep,
kIOPMAssertionLevelOn,
- CFSTR("org.cups.cupsd"), &dark_wake);
+ CFSTR("org.cups.cupsd"), &keep_awake);
+
+# endif /* kIOPMAssertionTypeRemoteAccess */
}
- else if (cupsArrayCount(PrintingJobs) == 0 && dark_wake)
+ else if (cupsArrayCount(PrintingJobs) == 0 && keep_awake)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG, "Releasing dark wake assertion.");
- IOPMAssertionRelease(dark_wake);
- dark_wake = 0;
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "Releasing power assertion.");
+ IOPMAssertionRelease(keep_awake);
+ keep_awake = 0;
}
-#endif /* kIOPMAssertionTypeDenySystemSleep */
+#endif /* kIOPMAssertionTypeDenySystemSleep || kIOPMAssertionTypeRemoteAccess */
}
@@ -874,11 +885,11 @@ sysUpdate(void)
* sleep (different than idle sleep)...
*/
- if (dark_wake)
+ if (keep_awake)
{
cupsdLogMessage(CUPSD_LOG_DEBUG, "Releasing dark wake assertion.");
- IOPMAssertionRelease(dark_wake);
- dark_wake = 0;
+ IOPMAssertionRelease(keep_awake);
+ keep_awake = 0;
}
#endif /* kIOPMAssertionTypeDenySystemSleep */
@@ -935,12 +946,12 @@ sysUpdate(void)
Sleeping = 0;
#ifdef kIOPMAssertionTypeDenySystemSleep
- if (cupsArrayCount(PrintingJobs) > 0 && !dark_wake)
+ if (cupsArrayCount(PrintingJobs) > 0 && !keep_awake)
{
cupsdLogMessage(CUPSD_LOG_DEBUG, "Asserting dark wake.");
IOPMAssertionCreateWithName(kIOPMAssertionTypeDenySystemSleep,
kIOPMAssertionLevelOn,
- CFSTR("org.cups.cupsd"), &dark_wake);
+ CFSTR("org.cups.cupsd"), &keep_awake);
}
#endif /* kIOPMAssertionTypeDenySystemSleep */