[Scummvm-cvs-logs] SF.net SVN: scummvm:[55583] scummvm/trunk/engines/drascula

tdhs at users.sourceforge.net tdhs at users.sourceforge.net
Fri Jan 28 09:07:51 CET 2011


Revision: 55583
          http://scummvm.svn.sourceforge.net/scummvm/?rev=55583&view=rev
Author:   tdhs
Date:     2011-01-28 08:07:50 +0000 (Fri, 28 Jan 2011)

Log Message:
-----------
DRASCULA: Fixed Code to allow Quit/RTL Function and avoid Memory Leakage.

A memory leakage was traced down to a failure to call the engine destructor.
This was due to the engine directly calling OSystem quit() i.e. _system->quit(), rather than
just allowing engine::run() to return.
Have removed this code and implemented the changes required to allow graceful Quit/RTL to occur.

Modified Paths:
--------------
    scummvm/trunk/engines/drascula/actors.cpp
    scummvm/trunk/engines/drascula/animation.cpp
    scummvm/trunk/engines/drascula/drascula.cpp
    scummvm/trunk/engines/drascula/drascula.h
    scummvm/trunk/engines/drascula/graphics.cpp
    scummvm/trunk/engines/drascula/interface.cpp
    scummvm/trunk/engines/drascula/objects.cpp
    scummvm/trunk/engines/drascula/saveload.cpp
    scummvm/trunk/engines/drascula/sound.cpp

Modified: scummvm/trunk/engines/drascula/actors.cpp
===================================================================
--- scummvm/trunk/engines/drascula/actors.cpp	2011-01-28 02:56:07 UTC (rev 55582)
+++ scummvm/trunk/engines/drascula/actors.cpp	2011-01-28 08:07:50 UTC (rev 55583)
@@ -450,7 +450,7 @@
 	trackVonBraun = (pointX < vonBraunX) ? 0 : 1;
 	vonBraunHasMoved = 1;
 
-	for (;;) {
+	while (!shouldQuit()) {
 		updateEvents();
 		updateRoom();
 		updateScreen();

Modified: scummvm/trunk/engines/drascula/animation.cpp
===================================================================
--- scummvm/trunk/engines/drascula/animation.cpp	2011-01-28 02:56:07 UTC (rev 55582)
+++ scummvm/trunk/engines/drascula/animation.cpp	2011-01-28 08:07:50 UTC (rev 55583)
@@ -52,54 +52,54 @@
 	int l, l2, p;
 	//int pixelPos[6];
 
-	while (term_int == 0) {
+	while (term_int == 0 && !shouldQuit()) {
 		playMusic(29);
 		playFLI("logoddm.bin", 9);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		delay(600);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		clearRoom();
 		delay(340);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		playMusic(26);
 		delay(500);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		playFLI("logoalc.bin", 8);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		clearRoom();
 		loadPic("cielo.alg", screenSurface, COMPLETE_PAL);
 		black();
 		updateScreen();
 		fadeFromBlack(2);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		delay(900);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		color_abc(kColorRed);
 		centerText(_textmisc[1], 160, 100);
 		updateScreen();
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		delay(1000);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		delay(1200);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 
 		playFLI("scrollb.bin", 9);
 
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		clearRoom();
 		playSound(5);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		if (animate("scr2.bin", 17))
 			break;
@@ -108,10 +108,10 @@
 			break;
 		loadPic("cielo2.alg", screenSurface, COMPLETE_PAL);
 		updateScreen();
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		fadeToBlack(1);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		clearRoom();
 
@@ -121,10 +121,10 @@
 		loadPic("aux104.alg", drawSurface2);
 
 		playMusic(4);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		delay(400);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 
 		for (l2 = 0; l2 < 3; l2++)
@@ -132,13 +132,13 @@
 				copyBackground();
 				copyBackground(interf_x[l], interf_y[l], 156, 45, 63, 31, drawSurface2, screenSurface);
 				updateScreen();
-				if (getScan() == Common::KEYCODE_ESCAPE) {
+				if (getScan() == Common::KEYCODE_ESCAPE || shouldQuit()) {
 					term_int = 1;
 					break;
 				}
 				pause(3);
 			}
-			if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+			if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 				break;
 
 		l2 = 0; p = 0;
@@ -157,17 +157,17 @@
 			}
 			if (l2 == 7)
 				l2 = 0;
-			if (getScan() == Common::KEYCODE_ESCAPE) {
+			if (getScan() == Common::KEYCODE_ESCAPE  || shouldQuit()) {
 				term_int = 1;
 				break;
 			}
 		}
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		copyBackground(0, 0, 0, 0, 320, 200, screenSurface, bgSurface);
 
 		talk_drascula_big(1);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 
 		clearRoom();
@@ -187,17 +187,17 @@
 		placeDrascula();
 		updateScreen();
 		talk_igor(8, kIgorDch);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		copyBackground();
 		placeIgor();
 		placeDrascula();
 		updateScreen();
 		talk_drascula(2);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_drascula(3);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		if (animate("lib.bin", 16))
 			break;
@@ -209,12 +209,12 @@
 		updateScreen();
 		pause(10);
 		talk_solo(_textd[4],"d4.als");
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		loadPic("plan1.alg", screenSurface, HALF_PAL);
 		updateScreen();
 		talk_solo(_textd[5], "d5.als");
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		if (animate("lib2.bin", 16))
 			break;
@@ -223,7 +223,7 @@
 		updateScreen();
 		pause(20);
 		talk_solo(_textd[6], "d6.als");
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		if (animate("lib2.bin", 16))
 			break;
@@ -231,34 +231,34 @@
 		loadPic("plan3.alg", screenSurface, HALF_PAL);
 		updateScreen();
 		pause(20);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_solo(_textd[7], "d7.als");
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		loadPic("plan3.alg", screenSurface, HALF_PAL);
 		updateScreen();
 		talk_solo(_textd[8], "d8.als");
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		clearRoom();
 		loadPic(100, bgSurface, HALF_PAL);
 		MusicFadeout();
 		stopMusic();
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_igor(9, kIgorDch);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_drascula(9);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_igor(10, kIgorDch);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		playMusic(11);
 		talk_drascula(10);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		if (animate("rayo1.bin", 16))
 			break;
@@ -276,14 +276,14 @@
 		black();
 		playMusic(23);
 		fadeFromBlack(0);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		trackDrascula = 1;
 		talk_igor(1, kIgorDch);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_drascula(11, 1);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		trackDrascula = 3;
 		copyBackground();
@@ -297,7 +297,7 @@
 		placeDrascula();
 		updateScreen();
 		talk_drascula(12);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		trackDrascula = 3;
 		copyBackground();
@@ -311,11 +311,11 @@
 		placeDrascula();
 		updateScreen();
 		talk_igor(2, kIgorDch);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		pause(13);
 		talk_drascula(13, 1);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		trackDrascula = 3;
 		copyBackground();
@@ -329,35 +329,35 @@
 		placeDrascula();
 		updateScreen();
 		talk_drascula(14);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_igor(3, kIgorDch);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_drascula(15);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_igor(4, kIgorDch);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_drascula(16);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_igor(5, kIgorDch);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		trackIgor = 3;
 		talk_drascula(17);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		pause(18);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_igor(6, kIgorFront);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		fadeToBlack(0);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		clearRoom();
 
@@ -386,30 +386,30 @@
 
 	term_int = 0;
 
-	for (;;) {
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+	while (!shouldQuit()) {
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 
 		if (animate("ag.bin", 14))
 			break;
 
 		loadPic("an11y13.alg", extraSurface);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 
 		talk_bartender(22);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 
 		loadPic(97, extraSurface);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 
 		pause(4);
 		playSound(1);
 		hiccup(18);
 		finishSound();
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 
 		clearRoom();
@@ -419,36 +419,36 @@
 		color_solo = kColorWhite;
 		pause(80);
 
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_solo(_textbj[1], "BJ1.als");
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		clearRoom();
 		loadPic("bj.alg", screenSurface, HALF_PAL);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		black();
 		updateScreen();
 		fadeFromBlack(1);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		color_solo = kColorYellow;
 		talk_solo(_text[214], "214.als");
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		clearRoom();
 
 		loadPic(16, bgSurface, HALF_PAL);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		loadPic("auxbj.alg", drawSurface3);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 
 		roomNumber = 16;
 
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		for (l = 0; l < 200; l++)
 			factor_red[l] = 99;
@@ -459,18 +459,18 @@
 		curY = 95;
 		trackProtagonist = 1;
 		hare_se_ve = 1;
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 
 		loadPic("97g.alg", extraSurface);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 
 		if (animate("lev.bin", 15))
 			break;
 
 		gotoObject(100 + curWidth / 2, 99 + curHeight);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		trackProtagonist = 1;
 		curX = 100;
@@ -484,46 +484,46 @@
 			break;
 		playMusic(9);
 		loadPic(97, extraSurface);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		updateRoom();
 		updateScreen();
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		pause(120);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_solo(_text[223], "223.als");
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		color_solo = kColorWhite;
 		updateRoom();
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		updateScreen();
 		pause(110);
 		talk_solo(_textbj[11], "BJ11.als");
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		updateRoom();
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		updateScreen();
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		pause(118);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		gotoObject(132, 97 + curHeight);
 		pause(60);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk(224);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk_bj(12);
 		gotoObject(157, 98 + curHeight);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		if (animate("bes.bin", 16))
 			break;
@@ -540,25 +540,25 @@
 		// Also check animation_9_6(), where the same hack was used by
 		// the original
 		roomNumber = -1;
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		pause(8);
 		updateRoom();
 		updateScreen();
 		talk(225);
 		pause(76);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		trackProtagonist = 1;
 		updateRoom();
 		updateScreen();
 		talk(226);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		updateRoom();
 		updateScreen();
 		pause(30);
-		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE))
+		if ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE) || shouldQuit())
 			break;
 		talk(227);
 		fadeToBlack(0);
@@ -1259,7 +1259,7 @@
 		startWalking();
 		talk_bj(21);
 
-		for (;;) {
+		while (!shouldQuit()) {
 			if (characterMoved == 0)
 				break;
 			updateRoom();
@@ -1496,7 +1496,7 @@
 
 	playMusic(18);
 
-	for (;;) {
+	while (!shouldQuit()) {
 		updateRoom();
 		copyRect(frus_x[frame], frus_y[frame], frank_x, 81, 44, 87, backSurface, screenSurface);
 		updateScreen();

Modified: scummvm/trunk/engines/drascula/drascula.cpp
===================================================================
--- scummvm/trunk/engines/drascula/drascula.cpp	2011-01-28 02:56:07 UTC (rev 55582)
+++ scummvm/trunk/engines/drascula/drascula.cpp	2011-01-28 08:07:50 UTC (rev 55583)
@@ -156,6 +156,11 @@
 	freeTexts(_textd1);
 }
 
+bool DrasculaEngine::hasFeature(EngineFeature f) const {
+	return
+		(f == kSupportsRTL);
+}
+
 Common::Error DrasculaEngine::run() {
 	// Initialize backend
 	initGraphics(320, 200, false);
@@ -198,7 +203,7 @@
 
 	checkCD();
 
-	for (;;) {
+	while (!shouldQuit()) {
 		int i;
 		takeObject = 0;
 		_menuBar = false;
@@ -452,7 +457,7 @@
 
 	showCursor();
 
-	while (1) {
+	while (!shouldQuit()) {
 		if (characterMoved == 0) {
 			stepX = STEP_X;
 			stepY = STEP_Y;
@@ -636,8 +641,9 @@
 
 		if (currentChapter != 3)
 			framesWithoutAction++;
+	}
 
-	}
+	return false;
 }
 
 
@@ -772,11 +778,6 @@
 		case Common::EVENT_RBUTTONUP:
 			rightMouseButton = 1;
 			break;
-		case Common::EVENT_QUIT:
-			// TODO
-			endChapter();
-			_system->quit();
-			break;
 		default:
 			break;
 		}

Modified: scummvm/trunk/engines/drascula/drascula.h
===================================================================
--- scummvm/trunk/engines/drascula/drascula.h	2011-01-28 02:56:07 UTC (rev 55582)
+++ scummvm/trunk/engines/drascula/drascula.h	2011-01-28 08:07:50 UTC (rev 55583)
@@ -325,6 +325,7 @@
 public:
 	DrasculaEngine(OSystem *syst, const DrasculaGameDescription *gameDesc);
 	virtual ~DrasculaEngine();
+	virtual bool hasFeature(EngineFeature f) const;
 
 	Common::RandomSource *_rnd;
 	const DrasculaGameDescription *_gameDescription;

Modified: scummvm/trunk/engines/drascula/graphics.cpp
===================================================================
--- scummvm/trunk/engines/drascula/graphics.cpp	2011-01-28 02:56:07 UTC (rev 55582)
+++ scummvm/trunk/engines/drascula/graphics.cpp	2011-01-28 08:07:50 UTC (rev 55583)
@@ -417,7 +417,7 @@
 	xr = mouseX;
 	yr = mouseY;
 
-	for (;;) {
+	while (!shouldQuit()) {
 		// efecto(bgSurface);
 
 		memcpy(copia, bgSurface, 64000);
@@ -497,7 +497,7 @@
 	Common::SeekableReadStream *stream = _archives.open(filefli);
 	LastFrame = _system->getMillis();
 
-	while (playFrameSSN(stream) && (!term_int)) {
+	while (playFrameSSN(stream) && (!term_int) && !shouldQuit()) {
 		if (getScan() == Common::KEYCODE_ESCAPE)
 			term_int = 1;
 	}
@@ -651,6 +651,4 @@
 	return ((term_int == 1) || (getScan() == Common::KEYCODE_ESCAPE));
 }
 
-
-
 } // End of namespace Drascula

Modified: scummvm/trunk/engines/drascula/interface.cpp
===================================================================
--- scummvm/trunk/engines/drascula/interface.cpp	2011-01-28 02:56:07 UTC (rev 55582)
+++ scummvm/trunk/engines/drascula/interface.cpp	2011-01-28 08:07:50 UTC (rev 55583)
@@ -99,7 +99,7 @@
 	updateScreen();
 
 	delay(100);
-	for (;;) {
+	while (!shouldQuit()) {
 		key = getScan();
 		if (key != 0)
 			break;
@@ -153,7 +153,7 @@
 	int v = 0, h = 0;
 	char select2[23];
 	strcpy(select2, "                      ");
-	for (;;) {
+	while (!shouldQuit()) {
 		select2[v] = '-';
 		copyBackground(115, 14, 115, 14, 176, 9, bgSurface, screenSurface);
 		print_abc(select2, 117, 15);

Modified: scummvm/trunk/engines/drascula/objects.cpp
===================================================================
--- scummvm/trunk/engines/drascula/objects.cpp	2011-01-28 02:56:07 UTC (rev 55582)
+++ scummvm/trunk/engines/drascula/objects.cpp	2011-01-28 08:07:50 UTC (rev 55583)
@@ -75,7 +75,7 @@
 	roomY = pointY;
 	startWalking();
 
-	for (;;) {
+	while (!shouldQuit()) {
 		updateRoom();
 		updateScreen();
 		updateEvents();

Modified: scummvm/trunk/engines/drascula/saveload.cpp
===================================================================
--- scummvm/trunk/engines/drascula/saveload.cpp	2011-01-28 02:56:07 UTC (rev 55582)
+++ scummvm/trunk/engines/drascula/saveload.cpp	2011-01-28 08:07:50 UTC (rev 55583)
@@ -64,7 +64,7 @@
 	_system->setFeatureState(OSystem::kFeatureVirtualKeyboard, true);
 	setCursor(kCursorCrosshair);
 
-	for (;;) {
+	while (!shouldQuit()) {
 		y = 27;
 		copyBackground();
 		for (n = 0; n < NUM_SAVES; n++) {

Modified: scummvm/trunk/engines/drascula/sound.cpp
===================================================================
--- scummvm/trunk/engines/drascula/sound.cpp	2011-01-28 02:56:07 UTC (rev 55582)
+++ scummvm/trunk/engines/drascula/sound.cpp	2011-01-28 08:07:50 UTC (rev 55583)
@@ -55,7 +55,7 @@
 	setCursor(kCursorCrosshair);
 	showCursor();
 
-	for (;;) {
+	while (!shouldQuit()) {
 		int masterVolume = CLIP((_mixer->getVolumeForSoundType(Audio::Mixer::kPlainSoundType) / 16), 0, 15);
 		int voiceVolume = CLIP((_mixer->getVolumeForSoundType(Audio::Mixer::kSpeechSoundType) / 16), 0, 15);
 		int musicVolume = CLIP((_mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType) / 16), 0, 15);
@@ -146,7 +146,7 @@
 
 void DrasculaEngine::MusicFadeout() {
 	int org_vol = _mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType);
-	for (;;) {
+	while (!shouldQuit()) {
 		int vol = _mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType);
 		vol -= 10;
 			if (vol < 0)


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list