Fix crash when not clearing Online Platform in Editor before hot-reload
#1873
This commit is contained in:
@@ -4,6 +4,9 @@
|
||||
#include "IOnlinePlatform.h"
|
||||
#include "Engine/Core/Log.h"
|
||||
#include "Engine/Engine/EngineService.h"
|
||||
#if USE_EDITOR
|
||||
#include "Engine/Scripting/Scripting.h"
|
||||
#endif
|
||||
#include "Engine/Scripting/ScriptingObject.h"
|
||||
|
||||
class OnlineService : public EngineService
|
||||
@@ -25,6 +28,16 @@ IOnlinePlatform* Online::Platform = nullptr;
|
||||
Action Online::PlatformChanged;
|
||||
OnlineService OnlineServiceInstance;
|
||||
|
||||
#if USE_EDITOR
|
||||
|
||||
void OnOnlineScriptsReloading()
|
||||
{
|
||||
// Dispose any active platform
|
||||
Online::Initialize(nullptr);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
bool Online::Initialize(IOnlinePlatform* platform)
|
||||
{
|
||||
if (Platform == platform)
|
||||
@@ -34,6 +47,9 @@ bool Online::Initialize(IOnlinePlatform* platform)
|
||||
|
||||
if (Platform)
|
||||
{
|
||||
#if USE_EDITOR
|
||||
Scripting::ScriptsReloading.Unbind(OnOnlineScriptsReloading);
|
||||
#endif
|
||||
Platform->Deinitialize();
|
||||
}
|
||||
Platform = platform;
|
||||
@@ -45,6 +61,9 @@ bool Online::Initialize(IOnlinePlatform* platform)
|
||||
LOG(Error, "Failed to initialize online platform.");
|
||||
return true;
|
||||
}
|
||||
#if USE_EDITOR
|
||||
Scripting::ScriptsReloading.Bind(OnOnlineScriptsReloading);
|
||||
#endif
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user