mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07:00
Disable screensaver on OS X
When playing a game on OS X, although the screen does not go to sleep, the screensaver is still enabled, and therefore, during gameplay, the screensaver may start running, which is not in accordance to the behaviour on other other environments (Windows and X11). It can be argued that the screensaver interrupting gameplay is a nuissance to many players. The changes in this commit are intended to allow Dolphin to disable the screensaver during gameplay, just as intended on other platforms. The changes have been tested on OS X 10.11 (El Capitan).
This commit is contained in:
parent
188f2b3cc5
commit
65250c0452
@ -23,6 +23,10 @@
|
||||
#include "UICommon/X11Utils.h"
|
||||
#endif
|
||||
|
||||
#ifdef __APPLE__
|
||||
#import <IOKit/pwr_mgt/IOPMLib.h>
|
||||
#endif
|
||||
|
||||
// Class declarations
|
||||
class CGameListCtrl;
|
||||
class CCodeWindow;
|
||||
@ -160,6 +164,10 @@ private:
|
||||
ADD_PANE_CENTER
|
||||
};
|
||||
|
||||
#ifdef __APPLE__
|
||||
IOPMAssertionID m_power_assertion = kIOPMNullAssertionID;
|
||||
#endif
|
||||
|
||||
wxTimer m_poll_hotkey_timer;
|
||||
wxTimer m_handle_signal_timer;
|
||||
|
||||
|
@ -84,6 +84,10 @@
|
||||
#include "VideoCommon/VideoBackendBase.h"
|
||||
#include "VideoCommon/VideoConfig.h"
|
||||
|
||||
#ifdef __APPLE__
|
||||
#import <IOKit/pwr_mgt/IOPMLib.h>
|
||||
#endif
|
||||
|
||||
class InputConfig;
|
||||
class wxFrame;
|
||||
|
||||
@ -724,6 +728,14 @@ void CFrame::StartGame(const std::string& filename)
|
||||
SConfig::GetInstance().bDisableScreenSaver ? ES_DISPLAY_REQUIRED : 0;
|
||||
SetThreadExecutionState(ES_CONTINUOUS | shouldScreenSave | ES_SYSTEM_REQUIRED);
|
||||
#endif
|
||||
#ifdef __APPLE__
|
||||
CFStringRef reason_for_activity = CFSTR("Emulation Running");
|
||||
if (IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn,
|
||||
reason_for_activity, &m_power_assertion) != kIOReturnSuccess)
|
||||
{
|
||||
m_power_assertion = kIOPMNullAssertionID;
|
||||
}
|
||||
#endif
|
||||
|
||||
// We need this specifically to support setting the focus properly when using
|
||||
// the 'render to main window' feature on Windows
|
||||
@ -898,6 +910,13 @@ void CFrame::OnStopped()
|
||||
// Allow windows to resume normal idling behavior
|
||||
SetThreadExecutionState(ES_CONTINUOUS);
|
||||
#endif
|
||||
#ifdef __APPLE__
|
||||
if (m_power_assertion != kIOPMNullAssertionID)
|
||||
{
|
||||
IOPMAssertionRelease(m_power_assertion);
|
||||
m_power_assertion = kIOPMNullAssertionID;
|
||||
}
|
||||
#endif
|
||||
|
||||
m_RenderFrame->SetTitle(StrToWxStr(scm_rev_str));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user