Fix crash when not clearing Online Platform in Editor before hot-reload

#1873
This commit is contained in:
Wojtek Figat
2023-11-05 19:36:09 +01:00
parent c23f8f2b30
commit 77e6aafc79

View File

@@ -4,6 +4,9 @@
#include "IOnlinePlatform.h" #include "IOnlinePlatform.h"
#include "Engine/Core/Log.h" #include "Engine/Core/Log.h"
#include "Engine/Engine/EngineService.h" #include "Engine/Engine/EngineService.h"
#if USE_EDITOR
#include "Engine/Scripting/Scripting.h"
#endif
#include "Engine/Scripting/ScriptingObject.h" #include "Engine/Scripting/ScriptingObject.h"
class OnlineService : public EngineService class OnlineService : public EngineService
@@ -25,6 +28,16 @@ IOnlinePlatform* Online::Platform = nullptr;
Action Online::PlatformChanged; Action Online::PlatformChanged;
OnlineService OnlineServiceInstance; OnlineService OnlineServiceInstance;
#if USE_EDITOR
void OnOnlineScriptsReloading()
{
// Dispose any active platform
Online::Initialize(nullptr);
}
#endif
bool Online::Initialize(IOnlinePlatform* platform) bool Online::Initialize(IOnlinePlatform* platform)
{ {
if (Platform == platform) if (Platform == platform)
@@ -34,6 +47,9 @@ bool Online::Initialize(IOnlinePlatform* platform)
if (Platform) if (Platform)
{ {
#if USE_EDITOR
Scripting::ScriptsReloading.Unbind(OnOnlineScriptsReloading);
#endif
Platform->Deinitialize(); Platform->Deinitialize();
} }
Platform = platform; Platform = platform;
@@ -45,6 +61,9 @@ bool Online::Initialize(IOnlinePlatform* platform)
LOG(Error, "Failed to initialize online platform."); LOG(Error, "Failed to initialize online platform.");
return true; return true;
} }
#if USE_EDITOR
Scripting::ScriptsReloading.Bind(OnOnlineScriptsReloading);
#endif
} }
return false; return false;