]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Use new kIOPMAssertRemoteAccess power management assertion, when supported, to
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
Tue, 2 Jul 2013 20:39:24 +0000 (20:39 +0000)
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
Tue, 2 Jul 2013 20:39:24 +0000 (20:39 +0000)
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

scheduler/sysman.c

index 0a0aeea4c0971ec13927234a4d70eef64832a591..abeffbd5df2d2db8e814d962194503f1700e14a7 100644 (file)
@@ -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 */