vlc | branch: master | David Fuhrmann <[email protected]> | Sun Sep 3 11:18:28 2017 +0200| [4905dbcfc9899aadaae1a6edda4386f9961137df] | committer: David Fuhrmann
macox: Factor out inhibit functions into separate methods > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4905dbcfc9899aadaae1a6edda4386f9961137df --- modules/gui/macosx/VLCInputManager.m | 96 ++++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 43 deletions(-) diff --git a/modules/gui/macosx/VLCInputManager.m b/modules/gui/macosx/VLCInputManager.m index 52aaf36867..fe9db00b9f 100644 --- a/modules/gui/macosx/VLCInputManager.m +++ b/modules/gui/macosx/VLCInputManager.m @@ -273,43 +273,7 @@ static int InputEvent(vlc_object_t *p_this, const char *psz_var, if (state == PLAYING_S) { [self stopItunesPlayback]; - BOOL shouldDisableScreensaver = var_InheritBool(p_intf, "disable-screensaver"); - - /* Declare user activity. - This wakes the display if it is off, and postpones display sleep according to the users system preferences - Available from 10.7.3 */ - if ([o_main activeVideoPlayback] && &IOPMAssertionDeclareUserActivity && shouldDisableScreensaver) - { - CFStringRef reasonForActivity = CFStringCreateWithCString(kCFAllocatorDefault, _("VLC media playback"), kCFStringEncodingUTF8); - IOReturn success = IOPMAssertionDeclareUserActivity(reasonForActivity, - kIOPMUserActiveLocal, - &userActivityAssertionID); - CFRelease(reasonForActivity); - - if (success != kIOReturnSuccess) - msg_Warn(getIntf(), "failed to declare user activity"); - - } - - /* prevent the system from sleeping */ - if (systemSleepAssertionID > 0) { - msg_Dbg(getIntf(), "releasing old sleep blocker (%i)" , systemSleepAssertionID); - IOPMAssertionRelease(systemSleepAssertionID); - systemSleepAssertionID = 0; - } - - IOReturn success; - CFStringRef reasonForActivity = CFStringCreateWithCString(kCFAllocatorDefault, _("VLC media playback"), kCFStringEncodingUTF8); - if ([o_main activeVideoPlayback] && shouldDisableScreensaver) - success = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, reasonForActivity, &systemSleepAssertionID); - else - success = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, reasonForActivity, &systemSleepAssertionID); - CFRelease(reasonForActivity); - - if (success == kIOReturnSuccess) - msg_Dbg(getIntf(), "prevented sleep through IOKit (%i)", systemSleepAssertionID); - else - msg_Warn(getIntf(), "failed to prevent system sleep through IOKit"); + [self inhibitSleep]; [[o_main mainMenu] setPause]; [[o_main mainWindow] setPause]; @@ -318,12 +282,7 @@ static int InputEvent(vlc_object_t *p_this, const char *psz_var, [[o_main mainMenu] setPlay]; [[o_main mainWindow] setPlay]; - /* allow the system to sleep again */ - if (systemSleepAssertionID > 0) { - msg_Dbg(getIntf(), "releasing sleep blocker (%i)" , systemSleepAssertionID); - IOPMAssertionRelease(systemSleepAssertionID); - systemSleepAssertionID = 0; - } + [self releaseSleepBlockers]; if (state == END_S || state == -1) { /* continue playback where you left off */ @@ -414,6 +373,57 @@ static int InputEvent(vlc_object_t *p_this, const char *psz_var, o_itunes_play_timer = nil; } +- (void)inhibitSleep +{ + BOOL shouldDisableScreensaver = var_InheritBool(getIntf(), "disable-screensaver"); + + /* Declare user activity. + This wakes the display if it is off, and postpones display sleep according to the users system preferences + Available from 10.7.3 */ + if ([o_main activeVideoPlayback] && &IOPMAssertionDeclareUserActivity && shouldDisableScreensaver) + { + CFStringRef reasonForActivity = CFStringCreateWithCString(kCFAllocatorDefault, _("VLC media playback"), kCFStringEncodingUTF8); + IOReturn success = IOPMAssertionDeclareUserActivity(reasonForActivity, + kIOPMUserActiveLocal, + &userActivityAssertionID); + CFRelease(reasonForActivity); + + if (success != kIOReturnSuccess) + msg_Warn(getIntf(), "failed to declare user activity"); + + } + + /* prevent the system from sleeping */ + if (systemSleepAssertionID > 0) { + msg_Dbg(getIntf(), "releasing old sleep blocker (%i)" , systemSleepAssertionID); + IOPMAssertionRelease(systemSleepAssertionID); + systemSleepAssertionID = 0; + } + + IOReturn success; + CFStringRef reasonForActivity = CFStringCreateWithCString(kCFAllocatorDefault, _("VLC media playback"), kCFStringEncodingUTF8); + if ([o_main activeVideoPlayback] && shouldDisableScreensaver) + success = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, reasonForActivity, &systemSleepAssertionID); + else + success = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, reasonForActivity, &systemSleepAssertionID); + CFRelease(reasonForActivity); + + if (success == kIOReturnSuccess) + msg_Dbg(getIntf(), "prevented sleep through IOKit (%i)", systemSleepAssertionID); + else + msg_Warn(getIntf(), "failed to prevent system sleep through IOKit"); +} + +- (void)releaseSleepBlockers +{ + /* allow the system to sleep again */ + if (systemSleepAssertionID > 0) { + msg_Dbg(getIntf(), "Pausing: releasing sleep blocker (%i)" , systemSleepAssertionID); + IOPMAssertionRelease(systemSleepAssertionID); + systemSleepAssertionID = 0; + } +} + - (void)updateMetaAndInfo { if (!p_current_input) { _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
