[Scummvm-cvs-logs] scummvm master -> 05ebbd88a6f7bf7f01f899d9f5aad2519ddfa154

sylvaintv sylvaintv at gmail.com
Sun May 29 23:18:08 CEST 2016


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

Summary:
05ebbd88a6 GNAP: Fix waitForUpdate behavior


Commit: 05ebbd88a6f7bf7f01f899d9f5aad2519ddfa154
    https://github.com/scummvm/scummvm/commit/05ebbd88a6f7bf7f01f899d9f5aad2519ddfa154
Author: sylvaintv (sylvaintv at gmail.com)
Date: 2016-05-29T23:16:28+02:00

Commit Message:
GNAP: Fix waitForUpdate behavior

Changed paths:
    engines/gnap/gamesys.cpp
    engines/gnap/gamesys.h



diff --git a/engines/gnap/gamesys.cpp b/engines/gnap/gamesys.cpp
index e59662f..d1f2c89 100644
--- a/engines/gnap/gamesys.cpp
+++ b/engines/gnap/gamesys.cpp
@@ -48,6 +48,7 @@ GameSys::GameSys(GnapEngine *vm) : _vm(vm) {
 	_removeSequenceItemValue = 0;
 	_gfxItemsCount = 0;
 	_animationsCount = 0;
+	_animationsDone = false;
 	_backgroundImageValue3 = 0;
 	_backgroundImageValue1 = 0;
 	_backgroundImageValue4 = 1000;
@@ -167,6 +168,9 @@ void GameSys::requestRemoveSequence(int sequenceId, int id) {
 void GameSys::waitForUpdate() {
 	//ResetEvent(updateEvent);
 	//WaitForSingleObject(updateEvent, INFINITE);
+	while ( !_animationsDone) {
+		_vm->gameUpdateTick();
+	}
 }
 
 int GameSys::isSequenceActive(int sequenceId, int id) {
@@ -1006,6 +1010,8 @@ void GameSys::fatUpdateFrame() {
 	if (clockDelta <= 0)
 		return;
 
+	_animationsDone = true;
+
 	int duration, currFrameNum;
 
 	for (int i = 0; i < _gfxItemsCount; ++i) {
@@ -1091,10 +1097,12 @@ void GameSys::fatUpdateFrame() {
 					} else {
 						gfxItem->_prevFrame._duration -= duration;
 						gfxItem->_updFlag = false;
+						_animationsDone = false;
 					}
 				} else {
 					gfxItem->_delayTicks -= clockDelta;
 					gfxItem->_updFlag = false;
+					_animationsDone = false;
 				}
 			}
 		} else {
@@ -1132,6 +1140,7 @@ void GameSys::fatUpdateFrame() {
 				gfxItem->_currFrame._rect = _newSpriteDrawItems[k]._rect;
 				gfxItem->_currFrame._spriteId = _newSpriteDrawItems[k]._surface ? 0xCAFEBABE : -1;// TODO
 				gfxItem->_currFrame._soundId = -1;
+				_animationsDone = false;
 			}
 		}
 		_newSpriteDrawItemsCount = 0;
@@ -1149,6 +1158,7 @@ void GameSys::fatUpdateFrame() {
 				gfxItem->_currFrame._soundId = -1;
 				gfxItem->_updFlag = true;
 				gfxItem->_surface = _grabSpriteSurface2;
+				_animationsDone = false;
 				break;
 			}
 		}
@@ -1175,6 +1185,7 @@ void GameSys::fatUpdateFrame() {
 					found = true;
 				}
 				if (found) {
+					_animationsDone = false;
 					seqRemoveGfx(seqItem->_sequenceId2, seqItem->_id2);
 					seqRemoveGfx(seqItem->_sequenceId, seqItem->_id);
 					_fatSequenceItems.remove_at(i);
@@ -1197,6 +1208,7 @@ void GameSys::fatUpdateFrame() {
 					found = true;
 				}
 				if (found) {
+					_animationsDone = false;
 					seqRemoveGfx(seqItem->_sequenceId, seqItem->_id);
 					_fatSequenceItems.remove_at(i);
 					--i;
@@ -1220,6 +1232,7 @@ void GameSys::fatUpdateFrame() {
 					seqRemoveGfx(seqItem->_sequenceId, seqItem->_id);
 					seqInsertGfx(i, gfxDuration);
 				}
+				_animationsDone = false;
 			}
 		} else {
 			_seqItems.remove_at(i);
diff --git a/engines/gnap/gamesys.h b/engines/gnap/gamesys.h
index 98014f1..b9752bd 100644
--- a/engines/gnap/gamesys.h
+++ b/engines/gnap/gamesys.h
@@ -167,6 +167,8 @@ public:
 	int _backgroundImageValue4, _backgroundImageValue2;
 
 	int32 _gameSysClock, _lastUpdateClock;
+	bool _animationsDone;
+	
 
 	Graphics::Surface *_backgroundSurface;
 	Graphics::Surface *_frontSurface;






More information about the Scummvm-git-logs mailing list