From dfce8148e3ba5dab4c56846e0b67639627ee6112 Mon Sep 17 00:00:00 2001 From: Kearwood Kip Gilbert Date: Sun, 28 Jul 2019 17:14:33 -0700 Subject: [PATCH] Implementing Async API --- kraken/KRContext.cpp | 13 +++++++++++++ kraken/KRContext.h | 4 +++- kraken/kraken.cpp | 5 ++++- kraken/public/kraken.h | 2 ++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/kraken/KRContext.cpp b/kraken/KRContext.cpp index af16883..eb31d61 100755 --- a/kraken/KRContext.cpp +++ b/kraken/KRContext.cpp @@ -320,6 +320,19 @@ void KRContext::loadResource(std::string path) { } } +KrResult KRContext::unloadResource(const KrUnloadResourceInfo* unloadResourceInfo) +{ + if (unloadResourceInfo->resourceHandle < 0 || unloadResourceInfo->resourceHandle >= m_resourceMapSize) { + return KR_ERROR_OUT_OF_BOUNDS; + } + KRResource* resource = m_resourceMap[unloadResourceInfo->resourceHandle]; + if (resource == nullptr) { + return KR_ERROR_NOT_MAPPED; + } + // TODO - Need to implement unloading logic + return KR_ERROR_NOT_IMPLEMENTED; +} + void KRContext::detectExtensions() { m_bDetectedExtensions = true; diff --git a/kraken/KRContext.h b/kraken/KRContext.h index cbe522a..e3db96f 100755 --- a/kraken/KRContext.h +++ b/kraken/KRContext.h @@ -37,7 +37,9 @@ public: KRContext(const KrInitializeInfo* initializeInfo); ~KRContext(); - + + KrResult unloadResource(const KrUnloadResourceInfo* unloadResourceInfo); + void loadResource(const std::string &file_name, KRDataBlock *data); void loadResource(std::string path); diff --git a/kraken/kraken.cpp b/kraken/kraken.cpp index 23e9077..04df061 100644 --- a/kraken/kraken.cpp +++ b/kraken/kraken.cpp @@ -36,7 +36,10 @@ KrResult KrLoadResource(const KrLoadResourceInfo* pLoadResourceInfo) KrResult KrUnloadResource(const KrUnloadResourceInfo* pUnloadResourceInfo) { - return KR_ERROR_NOT_IMPLEMENTED; + if (!sContext) { + return KR_ERROR_NOT_INITIALIZED; + } + return sContext->unloadResource(pUnloadResourceInfo); } KrResult KrSaveResource(const KrSaveResourceInfo* pSaveResourceInfo) diff --git a/kraken/public/kraken.h b/kraken/public/kraken.h index 185f467..d982815 100644 --- a/kraken/public/kraken.h +++ b/kraken/public/kraken.h @@ -39,6 +39,8 @@ typedef enum { KR_SUCCESS = 0, KR_ERROR_NOT_INITIALIZED = 1, KR_ERROR_NOT_IMPLEMENTED = 2, + KR_ERROR_OUT_OF_BOUNDS = 3, + KR_ERROR_NOT_MAPPED = 4, KR_RESULT_MAX_ENUM = 0x7FFFFFFF } KrResult;