diff --git a/CMakeLists.txt b/CMakeLists.txt index 518c0b59db..514f403ab9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -250,10 +250,10 @@ if(APPLE) # This is inserted into the Info.plist as well. # Note that the SDK determines the maximum version of which optional # features can be used, not the minimum required version to run. - set(OSX_MIN_VERSION "10.7") + set(OSX_MIN_VERSION "10.9") set(TARGET_FLAGS "${TARGET_FLAGS} -mmacosx-version-min=${OSX_MIN_VERSION}") - set(SYSROOT_LEGACY_PATH "/Developer/SDKs/MacOSX10.7.sdk") - set(SYSROOT_PATH "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk") + set(SYSROOT_LEGACY_PATH "/Developer/SDKs/MacOSX10.9.sdk") + set(SYSROOT_PATH "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk") if(EXISTS "${SYSROOT_PATH}/") set(TARGET_SYSROOT ${SYSROOT_PATH}) elseif(EXISTS "${SYSROOT_LEGACY_PATH}/") diff --git a/Readme.md b/Readme.md index 9b9224e94f..bddeba7a0e 100644 --- a/Readme.md +++ b/Readme.md @@ -11,7 +11,7 @@ Please read the [FAQ](https://dolphin-emu.org/docs/faq/) before using Dolphin. ## System Requirements * OS * Microsoft Windows (Vista or higher). - * Linux or Apple Mac OS X (10.7 or higher). + * Linux or Apple Mac OS X (10.9 or higher). * Unix-like systems other than Linux might work but are not officially supported. * Processor * A CPU with SSE2 support. diff --git a/Source/Core/AudioCommon/CoreAudioSoundStream.cpp b/Source/Core/AudioCommon/CoreAudioSoundStream.cpp index cfe6bc6e16..3bfd517708 100644 --- a/Source/Core/AudioCommon/CoreAudioSoundStream.cpp +++ b/Source/Core/AudioCommon/CoreAudioSoundStream.cpp @@ -32,22 +32,22 @@ bool CoreAudioSound::Start() OSStatus err; AURenderCallbackStruct callback_struct; AudioStreamBasicDescription format; - ComponentDescription desc; - Component component; + AudioComponentDescription desc; + AudioComponent component; desc.componentType = kAudioUnitType_Output; desc.componentSubType = kAudioUnitSubType_DefaultOutput; desc.componentFlags = 0; desc.componentFlagsMask = 0; desc.componentManufacturer = kAudioUnitManufacturer_Apple; - component = FindNextComponent(nullptr, &desc); + component = AudioComponentFindNext(nullptr, &desc); if (component == nullptr) { ERROR_LOG(AUDIO, "error finding audio component"); return false; } - err = OpenAComponent(component, &audioUnit); + err = AudioComponentInstanceNew(component, &audioUnit); if (err != noErr) { ERROR_LOG(AUDIO, "error opening audio component"); @@ -131,7 +131,7 @@ void CoreAudioSound::Stop() if (err != noErr) ERROR_LOG(AUDIO, "error uninitializing audiounit"); - err = CloseComponent(audioUnit); + err = AudioComponentInstanceDispose(audioUnit); if (err != noErr) ERROR_LOG(AUDIO, "error closing audio component"); } diff --git a/Source/Core/AudioCommon/OpenALStream.h b/Source/Core/AudioCommon/OpenALStream.h index 5c8488a469..a8fbd8a1f2 100644 --- a/Source/Core/AudioCommon/OpenALStream.h +++ b/Source/Core/AudioCommon/OpenALStream.h @@ -26,9 +26,18 @@ #include #endif +#ifdef __APPLE__ +// Avoid conflict with objc.h (on Windows, ST uses the system BOOL type, so this doesn't work) +#define BOOL SoundTouch_BOOL +#endif + #include #include +#ifdef __APPLE__ +#undef BOOL +#endif + // 16 bit Stereo #define SFX_MAX_SOURCE 1 #define OAL_MAX_BUFFERS 32 diff --git a/Source/Core/Core/HW/WiimoteReal/IODummy.cpp b/Source/Core/Core/HW/WiimoteReal/IODummy.cpp index 1c778e6d2c..5b14f9012b 100644 --- a/Source/Core/Core/HW/WiimoteReal/IODummy.cpp +++ b/Source/Core/Core/HW/WiimoteReal/IODummy.cpp @@ -64,4 +64,9 @@ int Wiimote::IOWrite(const u8* buf, size_t len) return 0; } +void Wiimote::EnablePowerAssertionInternal() +{} +void Wiimote::DisablePowerAssertionInternal() +{} + }; diff --git a/Source/Core/Core/HW/WiimoteReal/IONix.cpp b/Source/Core/Core/HW/WiimoteReal/IONix.cpp index d322fb4a7f..b94ce5db9a 100644 --- a/Source/Core/Core/HW/WiimoteReal/IONix.cpp +++ b/Source/Core/Core/HW/WiimoteReal/IONix.cpp @@ -255,4 +255,9 @@ int Wiimote::IOWrite(u8 const* buf, size_t len) return write(int_sock, buf, (int)len); } +void Wiimote::EnablePowerAssertionInternal() +{} +void Wiimote::DisablePowerAssertionInternal() +{} + }; // WiimoteReal diff --git a/Source/Core/Core/HW/WiimoteReal/IOWin.cpp b/Source/Core/Core/HW/WiimoteReal/IOWin.cpp index 219c2cd421..e08870d9c9 100644 --- a/Source/Core/Core/HW/WiimoteReal/IOWin.cpp +++ b/Source/Core/Core/HW/WiimoteReal/IOWin.cpp @@ -783,6 +783,11 @@ int Wiimote::IOWrite(const u8* buf, size_t len) return _IOWrite(dev_handle, hid_overlap_write, stack, buf, len, nullptr); } +void Wiimote::EnablePowerAssertionInternal() +{} +void Wiimote::DisablePowerAssertionInternal() +{} + // invokes callback for each found wiimote bluetooth device template void ProcessWiimotes(bool new_scan, T& callback) diff --git a/Source/Core/Core/HW/WiimoteReal/IOdarwin.mm b/Source/Core/Core/HW/WiimoteReal/IOdarwin.mm index 06a566fa5a..d2b450dc6b 100644 --- a/Source/Core/Core/HW/WiimoteReal/IOdarwin.mm +++ b/Source/Core/Core/HW/WiimoteReal/IOdarwin.mm @@ -72,7 +72,6 @@ memcpy(wm->input, data, length); wm->inputlen = length; - (void)UpdateSystemActivity(UsrActivity); CFRunLoopStop(CFRunLoopGetCurrent()); } @@ -195,6 +194,7 @@ void Wiimote::InitInternal() m_connected = false; m_wiimote_thread_run_loop = nullptr; btd = nil; + m_pm_assertion = kIOPMNullAssertionID; } void Wiimote::TeardownInternal() @@ -328,4 +328,22 @@ int Wiimote::IOWrite(const unsigned char *buf, size_t len) return 0; } +void Wiimote::EnablePowerAssertionInternal() +{ + if (m_pm_assertion == kIOPMNullAssertionID) + { + if (IOReturn ret = IOPMAssertionCreateWithName(kIOPMAssertPreventUserIdleDisplaySleep, kIOPMAssertionLevelOn, CFSTR("Dolphin Wiimote activity"), &m_pm_assertion)) + ERROR_LOG(WIIMOTE, "Could not create power management assertion: %08x", ret); + } +} + +void Wiimote::DisablePowerAssertionInternal() +{ + if (m_pm_assertion != kIOPMNullAssertionID) + { + if (IOReturn ret = IOPMAssertionRelease(m_pm_assertion)) + ERROR_LOG(WIIMOTE, "Could not release power management assertion: %08x", ret); + } +} + } diff --git a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp index bcd4501f7b..1eb3e88003 100644 --- a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp +++ b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp @@ -48,6 +48,7 @@ Wiimote::Wiimote() Wiimote::~Wiimote() { + DisablePowerAssertionInternal(); StopThread(); ClearReadQueue(); m_write_reports.Clear(); @@ -334,6 +335,7 @@ bool Wiimote::PrepareOnThread() void Wiimote::EmuStart() { DisableDataReporting(); + EnablePowerAssertionInternal(); } void Wiimote::EmuStop() @@ -343,6 +345,8 @@ void Wiimote::EmuStop() DisableDataReporting(); NOTICE_LOG(WIIMOTE, "Stopping Wiimote data reporting."); + + DisablePowerAssertionInternal(); } void Wiimote::EmuResume() @@ -358,6 +362,8 @@ void Wiimote::EmuResume() QueueReport(WM_REPORT_MODE, &rpt, sizeof(rpt)); NOTICE_LOG(WIIMOTE, "Resuming Wiimote data reporting."); + + EnablePowerAssertionInternal(); } void Wiimote::EmuPause() @@ -371,6 +377,8 @@ void Wiimote::EmuPause() QueueReport(WM_REPORT_MODE, &rpt, sizeof(rpt)); NOTICE_LOG(WIIMOTE, "Pausing Wiimote data reporting."); + + DisablePowerAssertionInternal(); } static unsigned int CalculateConnectedWiimotes() diff --git a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.h b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.h index 1cd34b5e8d..fa167a81a2 100644 --- a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.h +++ b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.h @@ -47,6 +47,9 @@ public: void EmuResume(); void EmuPause(); + void EnablePowerAssertionInternal(); + void DisablePowerAssertionInternal(); + // connecting and disconnecting from physical devices // (using address inserted by FindWiimotes) // these are called from the wiimote's thread. @@ -80,6 +83,7 @@ public: int inputlen; bool m_connected; CFRunLoopRef m_wiimote_thread_run_loop; + IOPMAssertionID m_pm_assertion; #elif defined(__linux__) && HAVE_BLUEZ bdaddr_t bdaddr; // Bluetooth address int cmd_sock; // Command socket diff --git a/Source/Core/Core/HW/WiimoteReal/WiimoteRealBase.h b/Source/Core/Core/HW/WiimoteReal/WiimoteRealBase.h index 4d1f6a2d36..847720ba98 100644 --- a/Source/Core/Core/HW/WiimoteReal/WiimoteRealBase.h +++ b/Source/Core/Core/HW/WiimoteReal/WiimoteRealBase.h @@ -15,6 +15,7 @@ #define NS_ENUM_AVAILABLE(...) // end hack #import + #include #elif defined(__linux__) && HAVE_BLUEZ #include #endif diff --git a/Source/Core/DolphinQt/Main.cpp b/Source/Core/DolphinQt/Main.cpp index 29279e812e..dd622a5290 100644 --- a/Source/Core/DolphinQt/Main.cpp +++ b/Source/Core/DolphinQt/Main.cpp @@ -17,7 +17,7 @@ static bool IsOsSupported() { #ifdef Q_OS_OSX - return QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7; + return QSysInfo::MacintoshVersion >= QSysInfo::MV_10_9; #elif defined(Q_OS_WIN) return (QSysInfo::WindowsVersion & QSysInfo::WV_NT_based) >= QSysInfo::WV_VISTA; #else @@ -28,7 +28,7 @@ static bool IsOsSupported() static QString LowestSupportedOsVersion() { #ifdef Q_OS_OSX - return SL("Mac OS X 10.7"); + return SL("Mac OS X 10.9"); #elif defined(Q_OS_WIN) return SL("Windows Vista SP2"); #else diff --git a/Source/Core/DolphinWX/Main.cpp b/Source/Core/DolphinWX/Main.cpp index 7a6e781686..ebdd4e896c 100644 --- a/Source/Core/DolphinWX/Main.cpp +++ b/Source/Core/DolphinWX/Main.cpp @@ -241,12 +241,12 @@ bool DolphinApp::OnInit() #endif #ifdef __APPLE__ - if (floor(NSAppKitVersionNumber) < NSAppKitVersionNumber10_7) + if (floor(NSAppKitVersionNumber) < NSAppKitVersionNumber10_9) { - PanicAlertT("Hi,\n\nDolphin requires Mac OS X 10.7 or greater.\n" + PanicAlertT("Hi,\n\nDolphin requires Mac OS X 10.9 or greater.\n" "Unfortunately you're running an old version of OS X.\n" "The last Dolphin version to support OS X 10.6 is Dolphin 3.5\n" - "Please upgrade to 10.7 or greater to use the newest Dolphin version.\n\n" + "Please upgrade to 10.9 or greater to use the newest Dolphin version.\n\n" "Sayonara!\n"); return false; }