diff options
Diffstat (limited to 'src/JSystem/JKernel/JKRFileLoader.cpp')
| -rw-r--r-- | src/JSystem/JKernel/JKRFileLoader.cpp | 56 |
1 files changed, 20 insertions, 36 deletions
diff --git a/src/JSystem/JKernel/JKRFileLoader.cpp b/src/JSystem/JKernel/JKRFileLoader.cpp index 0fd148394e..825fa20e8e 100644 --- a/src/JSystem/JKernel/JKRFileLoader.cpp +++ b/src/JSystem/JKernel/JKRFileLoader.cpp @@ -15,49 +15,40 @@ JKRFileLoader::JKRFileLoader(void) : mFileLoaderLink(this), mVolumeName(NULL), mVolumeType(0), mMountCount(0) {} JKRFileLoader::~JKRFileLoader() { - if (getCurrentVolume() == this) { - setCurrentVolume(NULL); + if (sCurrentVolume == this) { + sCurrentVolume = NULL; } } void JKRFileLoader::unmount(void) { - s32 count = mMountCount; if (mMountCount != 0) { - count--; - mMountCount = count; - if (count == 0) { + if (--mMountCount == 0) { delete this; } } } void* JKRFileLoader::getGlbResource(const char* name) { - const char* name_reference[1]; - name_reference[0] = name; - - JKRFileLoader* fileLoader = findVolume(name_reference); + JKRFileLoader* fileLoader = findVolume(&name); void* resource; if (fileLoader == NULL) { - resource = NULL; + return NULL; } else { - resource = fileLoader->getResource(name_reference[0]); + resource = fileLoader->getResource(name); + return resource; } - - return resource; } void* JKRFileLoader::getGlbResource(const char* name, JKRFileLoader* fileLoader) { void* resource = NULL; if (fileLoader) { - return fileLoader->getResource(0, name); - } - - JSUList<JKRFileLoader>& volumeList = getVolumeList(); - JSUListIterator<JKRFileLoader> iterator; - for (iterator = volumeList.getFirst(); iterator != volumeList.getEnd(); ++iterator) { - resource = iterator->getResource(0, name); - if (resource) - break; + resource = fileLoader->getResource(0, name); + } else { + for (JSUListIterator<JKRFileLoader> iterator = sVolumeList.getFirst(); iterator != sVolumeList.getEnd(); ++iterator) { + resource = iterator->getResource(0, name); + if (resource) + break; + } } return resource; } @@ -67,9 +58,7 @@ bool JKRFileLoader::removeResource(void* resource, JKRFileLoader* fileLoader) { return fileLoader->removeResource(resource); } - JSUList<JKRFileLoader>& volumeList = getVolumeList(); - JSUListIterator<JKRFileLoader> iterator; - for (iterator = volumeList.getFirst(); iterator != volumeList.getEnd(); ++iterator) { + for (JSUListIterator<JKRFileLoader> iterator = sVolumeList.getFirst(); iterator != sVolumeList.getEnd(); ++iterator) { if (iterator->removeResource(resource)) { return true; } @@ -83,9 +72,7 @@ bool JKRFileLoader::detachResource(void* resource, JKRFileLoader* fileLoader) { return fileLoader->detachResource(resource); } - JSUList<JKRFileLoader>& volumeList = getVolumeList(); - JSUListIterator<JKRFileLoader> iterator; - for (iterator = volumeList.getFirst(); iterator != volumeList.getEnd(); ++iterator) { + for (JSUListIterator<JKRFileLoader> iterator = sVolumeList.getFirst(); iterator != sVolumeList.getEnd(); ++iterator) { if (iterator->detachResource(resource)) { return true; } @@ -96,15 +83,13 @@ bool JKRFileLoader::detachResource(void* resource, JKRFileLoader* fileLoader) { JKRFileLoader* JKRFileLoader::findVolume(const char** volumeName) { if (*volumeName[0] != '/') { - return getCurrentVolume(); + return sCurrentVolume; } char volumeNameBuffer[0x101]; *volumeName = fetchVolumeName(volumeNameBuffer, ARRAY_SIZEU(volumeNameBuffer), *volumeName); - JSUList<JKRFileLoader>& volumeList = getVolumeList(); - JSUListIterator<JKRFileLoader> iterator; - for (iterator = volumeList.getFirst(); iterator != volumeList.getEnd(); ++iterator) { + for (JSUListIterator<JKRFileLoader> iterator = sVolumeList.getFirst(); iterator != sVolumeList.getEnd(); ++iterator) { if (strcmp(volumeNameBuffer, iterator->mVolumeName) == 0) { return iterator.getObject(); } @@ -113,10 +98,9 @@ JKRFileLoader* JKRFileLoader::findVolume(const char** volumeName) { return NULL; } - -static char rootPath[2] = "/"; - const char* JKRFileLoader::fetchVolumeName(char* buffer, s32 bufferSize, const char* path) { + static char rootPath[2] = "/"; + if (strcmp(path, "/") == 0) { strcpy(buffer, rootPath); return rootPath; |
