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 "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;
|
||||||
|
|||||||
Reference in New Issue
Block a user