diff --git a/CMakeLists.txt b/CMakeLists.txt index 0901db2..a07373c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,7 @@ else() endif() project(XPMP2 - VERSION 3.0.1 + VERSION 3.0.2 DESCRIPTION "Multiplayer library for X-Plane 11 and 12") # Provide compile macros from the above project version definition diff --git a/XPMP2.xcodeproj/project.pbxproj b/XPMP2.xcodeproj/project.pbxproj index 616b6d0..e6b2ab7 100644 --- a/XPMP2.xcodeproj/project.pbxproj +++ b/XPMP2.xcodeproj/project.pbxproj @@ -452,7 +452,7 @@ ); XPMP2_VER_MAJOR = 3; XPMP2_VER_MINOR = 0; - XPMP2_VER_PATCH = 0; + XPMP2_VER_PATCH = 2; XPSDK_ROOT = lib/SDK; }; name = Debug; @@ -553,7 +553,7 @@ ); XPMP2_VER_MAJOR = 3; XPMP2_VER_MINOR = 0; - XPMP2_VER_PATCH = 0; + XPMP2_VER_PATCH = 2; XPSDK_ROOT = lib/SDK; }; name = Release; diff --git a/src/AIMultiplayer.cpp b/src/AIMultiplayer.cpp index 937cd90..6d7e98d 100755 --- a/src/AIMultiplayer.cpp +++ b/src/AIMultiplayer.cpp @@ -738,17 +738,27 @@ int AIMultiControlPlaneCount( // MARK: Control Functions // -/// Resets all actual values of the AI/multiplayer dataRefs of one plane to something initial +/// @brief Resets all actual values of the AI/multiplayer dataRefs of one plane to something initial +/// @note There as pending bug, filed as XPD-13332, which affects this function with XP12 on Mac. +/// X-Plane 12 can freeze since b5 when clearing Multiplayer positions to zero. +/// @see https://forums.x-plane.org/index.php?/forums/topic/276319-xp12-on-mac-since-b5-freeze-upon-tcas-activation/ void AIMultiClearAIDataRefs (multiDataRefsTy& drM, bool bDeactivateToZero) { // not ok dataRefs? if (!drM) return; +#if APL + // Apple Workaround for XP12: Don't init position, otherwise may freeze + if (glob.verXPlane < 12000) { +#endif // either a "far away" location or standard 0, which is, however, a valid location somewhere! XPLMSetDataf(drM.X, bDeactivateToZero ? 0.0f : FAR_AWAY_VAL_GL); XPLMSetDataf(drM.Y, bDeactivateToZero ? 0.0f : FAR_AWAY_VAL_GL); XPLMSetDataf(drM.Z, bDeactivateToZero ? 0.0f : FAR_AWAY_VAL_GL); +#if APL + } +#endif XPLMSetDataf(drM.v_x, 0.0f); // zero speed XPLMSetDataf(drM.v_y, 0.0f); diff --git a/src/Sound.cpp b/src/Sound.cpp index 1b930eb..34ce6e4 100644 --- a/src/Sound.cpp +++ b/src/Sound.cpp @@ -852,7 +852,9 @@ void SoundUpdatesDone () } catch (const FmodError& e) { e.LogErr(); // log the error - SoundCleanup(); // in case of errors here disable the sound system + // We ignore one specific error, which has been reported on some Linux configurations + if (e.fmodRes != FMOD_ERR_INVALID_VECTOR) + SoundCleanup(); // in case of errors here disable the sound system } }