diff options
author | msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be> | 2013-07-02 20:39:24 +0000 |
---|---|---|
committer | msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be> | 2013-07-02 20:39:24 +0000 |
commit | 7bf181980c0f4538868289e854fe2b3cd2dbda11 (patch) | |
tree | 3c8fa6e7e7ba5beff9b17fea6184e40cf7fb3b3c /scheduler | |
parent | 223bdaa186938229df5ab1d979cc397d21168881 (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')
-rw-r--r-- | scheduler/sysman.c | 47 |
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 */ |