]> granicus.if.org Git - handbrake/commitdiff
MacGui: add an option to disable HBCore automatic sleep prevention behaviour.
authorDamiano Galassi <damiog@gmail.com>
Thu, 5 Jan 2017 09:12:30 +0000 (10:12 +0100)
committerDamiano Galassi <damiog@gmail.com>
Mon, 9 Jan 2017 07:50:06 +0000 (08:50 +0100)
(cherry picked from commit 2bf8ccc610d4df61660cd3efafd6b81fa5936c43)

macosx/HBCore.h
macosx/HBCore.m

index e94b5ac127d52851f6dd3d358efaeb2483bf39fd..26b74073ca0c318a3dce7abb58aec88626c8f311 100644 (file)
@@ -100,6 +100,22 @@ typedef void (^HBCoreCompletionHandler)(HBCoreResult result);
  */
 @property (nonatomic, readwrite) int logLevel;
 
+/**
+ * Set whether system sleep will be disable or not during a scan/encode
+ * Enabled by default.
+ */
+@property (nonatomic, readwrite) BOOL automaticallyPreventSleep;
+
+/**
+ * Manually prevent system sleep if automaticallyPreventSleep is set to NO.
+ */
+- (void)preventSleep;
+
+/**
+ * Manually allow system sleep if automaticallyPreventSleep is set to NO.
+ */
+- (void)allowSleep;
+
 /**
  *  State formatter.
  */
index 31f293448d6f0736b254a2c3fa319f61c783e233..baabcf75d63f74bc3411a86d6305e00648900a53 100644 (file)
@@ -139,6 +139,34 @@ static void hb_error_handler(const char *errmsg)
     hb_log_level_set(_hb_handle, logLevel);
 }
 
+- (void)preventSleep
+{
+    NSAssert(!self.automaticallyPreventSleep, @"[HBCore preventSleep:] called with automaticallyPreventSleep enabled.");
+    hb_system_sleep_prevent(_hb_handle);
+}
+
+- (void)allowSleep
+{
+    NSAssert(!self.automaticallyPreventSleep, @"[HBCore allowSleep:] called with automaticallyPreventSleep enabled.");
+    hb_system_sleep_allow(_hb_handle);
+}
+
+- (void)preventAutoSleep
+{
+    if (self.automaticallyPreventSleep)
+    {
+        hb_system_sleep_prevent(_hb_handle);
+    }
+}
+
+- (void)allowAutoSleep
+{
+    if (self.automaticallyPreventSleep)
+    {
+        hb_system_sleep_allow(_hb_handle);
+    }
+}
+
 #pragma mark - Scan
 
 - (BOOL)canScan:(NSURL *)url error:(NSError * __autoreleasing *)error
@@ -229,7 +257,7 @@ static void hb_error_handler(const char *errmsg)
         [HBUtilities writeToActivityLog:"%s scanning titles with a duration of %d seconds or more", self.name.UTF8String, seconds];
     }
 
-    hb_system_sleep_prevent(_hb_handle);
+    [self preventAutoSleep];
 
     hb_scan(_hb_handle, path.fileSystemRepresentation,
             (int)index, (int)previewsNum,
@@ -469,7 +497,8 @@ static void hb_error_handler(const char *errmsg)
     // Free the job
     hb_job_close(&hb_job);
 
-    hb_system_sleep_prevent(_hb_handle);
+    [self preventAutoSleep];
+
     hb_start(_hb_handle);
 
     // Start the timer to handle libhb state changes
@@ -523,15 +552,15 @@ static void hb_error_handler(const char *errmsg)
 - (void)pause
 {
     hb_pause(_hb_handle);
-    hb_system_sleep_allow(_hb_handle);
     self.state = HBStatePaused;
+    [self allowAutoSleep];
 }
 
 - (void)resume
 {
     hb_resume(_hb_handle);
-    hb_system_sleep_prevent(_hb_handle);
     self.state = HBStateWorking;
+    [self preventAutoSleep];
 }
 
 #pragma mark - State updates
@@ -637,8 +666,9 @@ static void hb_error_handler(const char *errmsg)
 
     // Set the state to idle, because the update timer won't fire again.
     self.state = HBStateIdle;
+
     // Reallow system sleep.
-    hb_system_sleep_allow(_hb_handle);
+    [self allowAutoSleep];
 
     // Call the completion block and clean ups the handlers
     self.progressHandler = nil;