aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2010-04-21 21:23:08 +0000
committerMax Horn2010-04-21 21:23:08 +0000
commitf103f01284b61b04aa8bc5978d5771d12e22f404 (patch)
tree264113423916cac807cb5350a734b952c5f2c025
parent37b7be45194ba118f039a9268e42beed895ea9ba (diff)
downloadscummvm-rg350-f103f01284b61b04aa8bc5978d5771d12e22f404.tar.gz
scummvm-rg350-f103f01284b61b04aa8bc5978d5771d12e22f404.tar.bz2
scummvm-rg350-f103f01284b61b04aa8bc5978d5771d12e22f404.zip
TINSEL: Change cdGraphStream to a Common::File pointer,
to not rely on global constructors svn-id: r48765
-rw-r--r--engines/tinsel/handle.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/engines/tinsel/handle.cpp b/engines/tinsel/handle.cpp
index 9366d06be6..e26ff9218e 100644
--- a/engines/tinsel/handle.cpp
+++ b/engines/tinsel/handle.cpp
@@ -80,7 +80,7 @@ static uint32 cdPlayHandle = (uint32)-1;
static int cdPlayFileNum, cdPlaySceneNum;
static SCNHANDLE cdBaseHandle = 0, cdTopHandle = 0;
-static Common::File cdGraphStream;
+static Common::File *cdGraphStream = 0;
static char szCdPlayFile[100];
@@ -179,20 +179,23 @@ void FreeHandleTable() {
free(handleTable);
handleTable = NULL;
}
- if (cdGraphStream.isOpen())
- cdGraphStream.close();
+ if (cdGraphStream) {
+ delete cdGraphStream;
+ cdGraphStream = 0;
+ }
}
/**
* Loads a memory block as a file.
*/
void OpenCDGraphFile() {
- if (cdGraphStream.isOpen())
- cdGraphStream.close();
+ if (cdGraphStream)
+ delete cdGraphStream;
// As the theory goes, the right CD will be in there!
- if (!cdGraphStream.open(szCdPlayFile))
+ cdGraphStream = new Common::File;
+ if (!cdGraphStream->open(szCdPlayFile))
error(CANNOT_FIND_FILE, szCdPlayFile);
}
@@ -214,14 +217,15 @@ void LoadCDGraphData(MEMHANDLE *pH) {
assert(addr);
// Move to correct place in file and load the required data
- cdGraphStream.seek(cdBaseHandle & OFFSETMASK, SEEK_SET);
- bytes = cdGraphStream.read(addr, (cdTopHandle - cdBaseHandle) & OFFSETMASK);
+ assert(cdGraphStream);
+ cdGraphStream->seek(cdBaseHandle & OFFSETMASK, SEEK_SET);
+ bytes = cdGraphStream->read(addr, (cdTopHandle - cdBaseHandle) & OFFSETMASK);
// New code to try and handle CD read failures 24/2/97
while (bytes != ((cdTopHandle - cdBaseHandle) & OFFSETMASK) && retries++ < MAX_READ_RETRIES) {
// Try again
- cdGraphStream.seek(cdBaseHandle & OFFSETMASK, SEEK_SET);
- bytes = cdGraphStream.read(addr, (cdTopHandle - cdBaseHandle) & OFFSETMASK);
+ cdGraphStream->seek(cdBaseHandle & OFFSETMASK, SEEK_SET);
+ bytes = cdGraphStream->read(addr, (cdTopHandle - cdBaseHandle) & OFFSETMASK);
}
// discardable - unlock the memory