[Scummvm-cvs-logs] CVS: scummvm/sword2 build_display.cpp,1.82,1.83

Torbjörn Andersson eriktorbjorn at users.sourceforge.net
Thu Nov 3 01:48:08 CET 2005


Update of /cvsroot/scummvm/scummvm/sword2
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24807

Modified Files:
	build_display.cpp 
Log Message:
More credits cleanups/fixes.


Index: build_display.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword2/build_display.cpp,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -d -r1.82 -r1.83
--- build_display.cpp	3 Nov 2005 07:27:36 -0000	1.82
+++ build_display.cpp	3 Nov 2005 09:47:19 -0000	1.83
@@ -669,6 +669,13 @@
 		str = NULL;
 		sprite = NULL;
 	};
+
+	~CreditsLine() {
+		free(str);
+		free(sprite);
+		str = NULL;
+		sprite = NULL;
+	}
 };
 
 #define CREDITS_FONT_HEIGHT 25
@@ -873,29 +880,24 @@
 	uint32 musicLength = MAX((int32)(1000 * (_vm->_sound->musicTimeRemaining() - 3)), 25 * (int32)scrollSteps);
 
 	while (scrollPos < scrollSteps && !_vm->_quit) {
-		bool foundStartLine = false;
-
 		clearScene();
 
 		for (i = startLine; i < lineCount; i++) {
+			if (!creditsLines[i])
+				continue;
+
 			// Free any sprites that have scrolled off the screen
 
 			if (creditsLines[i]->top + creditsLines[i]->height < scrollPos) {
-				debug(2, "Freeing line %d", i);
+				debug(2, "Freeing line %d: '%s'", i, creditsLines[i]->str);
 
-				free(creditsLines[i]->sprite);
-				creditsLines[i]->sprite = NULL;
+				delete creditsLines[i];
+				creditsLines[i] = NULL;
 
-				free(creditsLines[i]->str);
-				creditsLines[i]->str = NULL;
+				startLine = i + 1;
 			} else if (creditsLines[i]->top < scrollPos + 400) {
-				if (!foundStartLine) {
-					startLine = i;
-					foundStartLine = true;
-				}
-
 				if (!creditsLines[i]->sprite) {
-					debug(2, "Creating line %d sprite '%s'", i, creditsLines[i]->str);
+					debug(2, "Creating line %d: '%s'", i, creditsLines[i]->str);
 					creditsLines[i]->sprite = _vm->_fontRenderer->makeTextSprite((byte *)creditsLines[i]->str, 600, 14, _vm->_speechFontId, 0);
 				}
 
@@ -954,13 +956,10 @@
 	// before the credits.
 
 	for (i = 0; i < lineCount; i++) {
-		free(creditsLines[i]->str);
-		free(creditsLines[i]->sprite);
 		delete creditsLines[i];
 	}
 
-	if (logoData)
-		free(logoData);
+	free(logoData);
 
 	if (!abortCredits) {
 		fadeDown();





More information about the Scummvm-git-logs mailing list