Fixed bug where Unity would call libpd functions when no patch was loaded, causing a crash in Unity 2021.1.

This commit is contained in:
Niall Moody 2021-04-29 16:46:29 +01:00
parent 12dc67bb75
commit 4c17055789
2 changed files with 16 additions and 11 deletions

View file

@ -448,6 +448,8 @@ public class LibPdInstance : MonoBehaviour
private bool pdFail = false; private bool pdFail = false;
/// True if we were unable to open our patch. /// True if we were unable to open our patch.
private bool patchFail = false; private bool patchFail = false;
/// True if we have successfully loaded our patch.
private bool loaded = false;
/// Global variable used to ensure we don't initialise LibPd more than once. /// Global variable used to ensure we don't initialise LibPd more than once.
private static bool pdInitialised = false; private static bool pdInitialised = false;
@ -613,6 +615,9 @@ public class LibPdInstance : MonoBehaviour
libpd_start_message(1); libpd_start_message(1);
libpd_add_float(1.0f); libpd_add_float(1.0f);
libpd_finish_message("pd", "dsp"); libpd_finish_message("pd", "dsp");
if(!patchFail)
loaded = true;
} }
} }
} }
@ -621,7 +626,7 @@ public class LibPdInstance : MonoBehaviour
/// We only add ourselves to activeInstances when we're enabled. /// We only add ourselves to activeInstances when we're enabled.
void OnEnable() void OnEnable()
{ {
if(!pdFail && !patchFail) if(!pdFail && !patchFail && loaded)
activeInstances.Add(this); activeInstances.Add(this);
} }
@ -636,7 +641,7 @@ public class LibPdInstance : MonoBehaviour
/// Close the patch file on quit. /// Close the patch file on quit.
void OnDestroy() void OnDestroy()
{ {
if(!pdFail && !patchFail) if(!pdFail && !patchFail && loaded)
{ {
libpd_set_instance(instance); libpd_set_instance(instance);
@ -731,7 +736,7 @@ public class LibPdInstance : MonoBehaviour
/// Process audio. /// Process audio.
void OnAudioFilterRead(float[] data, int channels) void OnAudioFilterRead(float[] data, int channels)
{ {
if(!pdFail && !patchFail) if(!pdFail && !patchFail && loaded)
{ {
libpd_set_instance(instance); libpd_set_instance(instance);
libpd_process_float(numTicks, data, data); libpd_process_float(numTicks, data, data);

View file

@ -3,25 +3,25 @@
--- !u!310 &1 --- !u!310 &1
UnityConnectSettings: UnityConnectSettings:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_Enabled: 0 serializedVersion: 1
m_Enabled: 1
m_TestMode: 0 m_TestMode: 0
m_TestEventUrl: m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
m_TestConfigUrl: m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
m_ConfigUrl: https://config.uca.cloud.unity3d.com
m_TestInitMode: 0 m_TestInitMode: 0
CrashReportingSettings: CrashReportingSettings:
m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes m_EventUrl: https://perf-events.cloud.unity3d.com
m_NativeEventUrl: https://perf-events.cloud.unity3d.com/symbolicate
m_Enabled: 0 m_Enabled: 0
m_LogBufferSize: 10
m_CaptureEditorExceptions: 1 m_CaptureEditorExceptions: 1
UnityPurchasingSettings: UnityPurchasingSettings:
m_Enabled: 0 m_Enabled: 0
m_TestMode: 0 m_TestMode: 0
UnityAnalyticsSettings: UnityAnalyticsSettings:
m_Enabled: 1 m_Enabled: 1
m_InitializeOnStartup: 1
m_TestMode: 0 m_TestMode: 0
m_TestEventUrl: m_InitializeOnStartup: 1
m_TestConfigUrl:
UnityAdsSettings: UnityAdsSettings:
m_Enabled: 0 m_Enabled: 0
m_InitializeOnStartup: 1 m_InitializeOnStartup: 1