[Scummvm-git-logs] scummvm master -> 086fbdffe40224a05cacba30ab44cc0bacbd9d53

neuromancer noreply at scummvm.org
Fri Jan 20 08:15:10 UTC 2023


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
45480659b1 FREESCAPE: do not deallocate textures in TinyGL directly
086fbdffe4 FREESCAPE: properly reset inputs when changing areas


Commit: 45480659b1253ce9bf0ba494c039cf8e885c6a94
    https://github.com/scummvm/scummvm/commit/45480659b1253ce9bf0ba494c039cf8e885c6a94
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-01-20T09:15:55+01:00

Commit Message:
FREESCAPE: do not deallocate textures in TinyGL directly

Changed paths:
    engines/freescape/freescape.cpp


diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index f9f95523c2d..da1e74e580e 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -160,9 +160,12 @@ FreescapeEngine::~FreescapeEngine() {
 		delete _border;
 	}
 
-	delete _borderTexture;
-	delete _uiTexture;
-	delete _titleTexture;
+
+	if (_gfx->_isAccelerated) {
+		delete _borderTexture;
+		delete _uiTexture;
+		delete _titleTexture;
+	}
 
 	for (auto &it : _areaMap) {
 		delete it._value;


Commit: 086fbdffe40224a05cacba30ab44cc0bacbd9d53
    https://github.com/scummvm/scummvm/commit/086fbdffe40224a05cacba30ab44cc0bacbd9d53
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-01-20T09:15:55+01:00

Commit Message:
FREESCAPE: properly reset inputs when changing areas

Changed paths:
    engines/freescape/freescape.cpp
    engines/freescape/freescape.h
    engines/freescape/games/driller.cpp


diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index da1e74e580e..192b67d4c38 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -336,6 +336,16 @@ void FreescapeEngine::drawFrame() {
 
 void FreescapeEngine::pressedKey(const int keycode) {}
 
+void FreescapeEngine::resetInput() {
+	_shootMode = false;
+	centerCrossair();
+	g_system->warpMouse(_crossairPosition.x, _crossairPosition.y);
+	g_system->getEventManager()->purgeMouseEvents();
+	g_system->getEventManager()->purgeKeyboardEvents();
+	rotate(0, 0);
+}
+
+
 void FreescapeEngine::processInput() {
 	float currentFrame = g_system->getMillis();
 	float deltaTime = 20.0;
@@ -512,7 +522,6 @@ Common::Error FreescapeEngine::run() {
 
 	// Simple main event loop
 	int saveSlot = ConfMan.getInt("save_slot");
-	centerCrossair();
 	if (saveSlot == -1)
 		titleScreen();
 	loadBorder(); // Border is load unmodified
@@ -529,7 +538,7 @@ Common::Error FreescapeEngine::run() {
 	bool endGame = false;
 	// Draw first frame
 
-	rotate(0, 0);
+	resetInput();
 	drawFrame();
 	_gfx->flipBuffer();
 	g_system->updateScreen();
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 522e7d205da..43752be62cd 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -178,6 +178,7 @@ public:
 	bool _shootMode;
 	bool _noClipMode;
 	void processInput();
+	void resetInput();
 	void generateDemoInput();
 	virtual void pressedKey(const int keycode);
 	void move(CameraMovement direction, uint8 scale, float deltaTime);
diff --git a/engines/freescape/games/driller.cpp b/engines/freescape/games/driller.cpp
index f35a7fa9378..9a71d97e432 100644
--- a/engines/freescape/games/driller.cpp
+++ b/engines/freescape/games/driller.cpp
@@ -222,6 +222,7 @@ void DrillerEngine::gotoArea(uint16 areaID, int entranceID) {
 
 	if (areaID == _startArea && entranceID == _startEntrance) {
 		_yaw = 280;
+		_pitch = 0;
 	} else if (areaID == 127) {
 		assert(entranceID == 0);
 		_yaw = 90;
@@ -242,10 +243,7 @@ void DrillerEngine::gotoArea(uint16 areaID, int entranceID) {
 	_currentArea->_skyColor = 0;
 	_currentArea->_usualBackgroundColor = 0;
 
-	if (areaID != _startArea || entranceID != _startEntrance) {
-		g_system->warpMouse(_crossairPosition.x, _crossairPosition.y);
-		rotate(0, 0);
-	}
+	resetInput();
 }
 
 void DrillerEngine::loadGlobalObjects(Common::SeekableReadStream *file, int offset) {
@@ -719,10 +717,10 @@ void DrillerEngine::processBorder() {
 		while (entry->areaId) {
 
 			if (entry->palette == kDrillerCGAPaletteRedGreen) {
-				_borderCGAByArea[entry->areaId] = borderTextureRedGreen; 
+				_borderCGAByArea[entry->areaId] = borderTextureRedGreen;
 				_paletteCGAByArea[entry->areaId] = (byte *)kDrillerCGAPaletteRedGreenData;
 			} else if (entry->palette == kDrillerCGAPalettePinkBlue) {
-				_borderCGAByArea[entry->areaId] = _borderTexture; 
+				_borderCGAByArea[entry->areaId] = _borderTexture;
 				_paletteCGAByArea[entry->areaId] = (byte *)kDrillerCGAPalettePinkBlueData;
 			} else
 				error("Invalid CGA palette to use");




More information about the Scummvm-git-logs mailing list