thread-safe sgbackend initialization

This commit is contained in:
Mamadou Babaei
2025-06-04 02:23:58 +02:00
parent 076a07bc7b
commit fb1ae5a3e9
3 changed files with 19 additions and 12 deletions
@@ -36,6 +36,7 @@
#include "SGBackend/SGBackend.h"
#include "Engine/Engine.h"
#include "Templates/Atomic.h"
#if PLATFORM_ANDROID
#include "SGConnect/SGConnect.h"
@@ -47,6 +48,12 @@
struct USGBackend::FImpl
{
/************************
* Member variables
************************/
TAtomic<bool> bInitialized;
/************************
* Owner object
************************/
@@ -82,7 +89,11 @@ USGBackend* USGBackend::GetInstance()
USGBackend::USGBackend()
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
bBackendInitialized = false;
}
bool USGBackend::IsBackendInitialized() const
{
return Pimpl->bInitialized;
}
bool USGBackend::InitializeBackend()
@@ -130,7 +141,7 @@ bool USGBackend::InitializeBackend()
FSGDeviceList::Dispose();
FSGDeviceList::Reinitialize();
bBackendInitialized = true;
Pimpl->bInitialized = true;
return true;
}
@@ -181,7 +192,7 @@ bool USGBackend::UninitializeBackend()
}
#endif /* PLATFORM_ANDROID */
bBackendInitialized = false;
Pimpl->bInitialized = false;
return true;
}
@@ -235,7 +246,8 @@ void USGBackend::Deinitialize()
}
USGBackend::FImpl::FImpl(USGBackend* InOwner)
: Owner(InOwner)
: bInitialized(false),
Owner(InOwner)
{
}
@@ -49,10 +49,6 @@ class SENSEGLOVEBACKEND_API USGBackend : public UEngineSubsystem
{
GENERATED_BODY()
private:
UPROPERTY(Transient)
bool bBackendInitialized;
public:
static USGBackend* GetInstance();
@@ -71,10 +67,7 @@ private:
USGBackend();
public:
FORCEINLINE bool IsBackendInitialized() const
{
return bBackendInitialized;
}
bool IsBackendInitialized() const;
bool InitializeBackend();
bool UninitializeBackend();