[Scummvm-git-logs] scummvm master -> a5f16796edeb8b295d4f17eda1977400e2acb2aa

whiterandrek whiterandrek at gmail.com
Wed Oct 7 19:53:33 UTC 2020


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

Summary:
7922774499 PETKA: fix thread safety issues in petka 2
30fd368be5 PETKA: add commentary about using iterator after erasing in SoundsMap
85f935aa5f PETKA: drop language from game id
beb455d14a PETKA: change demo game id
92aa564163 PETKA: add support for engine features(RTL, PAUSE etc) while playing video
49437e2c1a VIDEO: Update Engine Usage Comment in AVI Decoder
a5f16796ed IMAGE: Update Engine Usage Comment in BMP Decoder


Commit: 7922774499119b4310e6b43fa4b2ad2e33d30dac
    https://github.com/scummvm/scummvm/commit/7922774499119b4310e6b43fa4b2ad2e33d30dac
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-10-07T20:32:53+03:00

Commit Message:
PETKA: fix thread safety issues in petka 2

Changed paths:
    engines/petka/sound.cpp


diff --git a/engines/petka/sound.cpp b/engines/petka/sound.cpp
index e5f018b838..10ef9301f2 100644
--- a/engines/petka/sound.cpp
+++ b/engines/petka/sound.cpp
@@ -33,7 +33,9 @@
 namespace Petka {
 
 Sound::Sound(Common::SeekableReadStream *stream, Audio::Mixer::SoundType type)
-	: _stream(stream), _type(type) {}
+	: _type(type), _stream(stream->readStream(stream->size())) {
+	delete stream;
+}
 
 Sound::~Sound() {
 	stop();


Commit: 30fd368be5ab1a4016b5c060ef858c24954db0e2
    https://github.com/scummvm/scummvm/commit/30fd368be5ab1a4016b5c060ef858c24954db0e2
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-10-07T20:32:53+03:00

Commit Message:
PETKA: add commentary about using iterator after erasing in SoundsMap

Changed paths:
    engines/petka/sound.cpp


diff --git a/engines/petka/sound.cpp b/engines/petka/sound.cpp
index 10ef9301f2..a2c6e9d7c8 100644
--- a/engines/petka/sound.cpp
+++ b/engines/petka/sound.cpp
@@ -112,7 +112,7 @@ void SoundMgr::removeSoundsWithType(Audio::Mixer::SoundType type) {
 	for (it = _sounds.begin(); it != _sounds.end(); ++it) {
 		Sound *s = it->_value.get();
 		if (s->type() == type) {
-			_sounds.erase(it);
+			_sounds.erase(it); // it is safe to inc iterator after erasing in our hashmap impl
 		}
 	}
 }


Commit: 85f935aa5ff8501befead866c108f527d73dbed1
    https://github.com/scummvm/scummvm/commit/85f935aa5ff8501befead866c108f527d73dbed1
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-10-07T20:32:53+03:00

Commit Message:
PETKA: drop language from game id

Changed paths:
    engines/petka/detection_tables.h


diff --git a/engines/petka/detection_tables.h b/engines/petka/detection_tables.h
index c7378561b9..0bceb246d6 100644
--- a/engines/petka/detection_tables.h
+++ b/engines/petka/detection_tables.h
@@ -34,7 +34,7 @@ static const ADGameDescription gameDescriptions[] = {
 		AD_ENTRY1s("DEMO.EXE", "5ef1ceaba05413d04fd733a81e6adbae", 888832),
 		Common::RU_RUS,
 		Common::kPlatformWindows,
-		ADGF_UNSTABLE | ADGF_DROPPLATFORM | ADGF_DEMO,
+		ADGF_UNSTABLE | ADGF_DROPPLATFORM | ADGF_DROPLANGUAGE | ADGF_DEMO,
 		GUIO1(GUIO_NOMIDI)
 
 	},
@@ -46,7 +46,7 @@ static const ADGameDescription gameDescriptions[] = {
 		AD_ENTRY1s("MAIN.STR", "2523bf402ac8b7b2bf54e6e29a79831d", 27414919),
 		Common::RU_RUS,
 		Common::kPlatformWindows,
-		ADGF_UNSTABLE | ADGF_DROPPLATFORM,
+		ADGF_UNSTABLE | ADGF_DROPPLATFORM | ADGF_DROPLANGUAGE,
 		GUIO1(GUIO_NOMIDI)
 
 	},
@@ -58,7 +58,7 @@ static const ADGameDescription gameDescriptions[] = {
 		AD_ENTRY1s("main.str", "4e515669c343609518277cab6e7d8c8f", 18992879),
 		Common::RU_RUS,
 		Common::kPlatformWindows,
-		ADGF_UNSTABLE | ADGF_DROPPLATFORM,
+		ADGF_UNSTABLE | ADGF_DROPPLATFORM | ADGF_DROPLANGUAGE,
 		GUIO1(GUIO_NOMIDI)
 	},
 


Commit: beb455d14aab7ea54301e8365f5be17bf0c28503
    https://github.com/scummvm/scummvm/commit/beb455d14aab7ea54301e8365f5be17bf0c28503
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-10-07T20:32:53+03:00

Commit Message:
PETKA: change demo game id

Changed paths:
    engines/petka/detection_tables.h


diff --git a/engines/petka/detection_tables.h b/engines/petka/detection_tables.h
index 0bceb246d6..120c44a17f 100644
--- a/engines/petka/detection_tables.h
+++ b/engines/petka/detection_tables.h
@@ -29,7 +29,7 @@ static const ADGameDescription gameDescriptions[] = {
 
 	// Red Comrades Demo
 	{
-		"petka_demo",
+		"petka1",
 		0,
 		AD_ENTRY1s("DEMO.EXE", "5ef1ceaba05413d04fd733a81e6adbae", 888832),
 		Common::RU_RUS,


Commit: 92aa56416327552ab0f1cc3da5bf5add7973e988
    https://github.com/scummvm/scummvm/commit/92aa56416327552ab0f1cc3da5bf5add7973e988
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-10-07T22:32:58+03:00

Commit Message:
PETKA: add support for engine features(RTL, PAUSE etc) while playing video

Changed paths:
    engines/petka/petka.cpp
    engines/petka/petka.h


diff --git a/engines/petka/petka.cpp b/engines/petka/petka.cpp
index 6f4572abf5..6e9a423f2b 100644
--- a/engines/petka/petka.cpp
+++ b/engines/petka/petka.cpp
@@ -50,7 +50,7 @@ PetkaEngine *g_vm;
 
 PetkaEngine::PetkaEngine(OSystem *system, const ADGameDescription *desc)
 	: Engine(system), _console(nullptr), _fileMgr(nullptr), _resMgr(nullptr),
-	_qsystem(nullptr), _vsys(nullptr), _desc(desc), _rnd("petka") {
+	_qsystem(nullptr), _vsys(nullptr), _desc(desc), _videoDec(nullptr), _rnd("petka") {
 
 	DebugMan.addDebugChannel(kPetkaDebugGeneral, "general", "General issues");
 	DebugMan.addDebugChannel(kPetkaDebugMessagingSystem, "resources", "Resources");
@@ -79,12 +79,11 @@ Common::Error PetkaEngine::run() {
 
 	const char *const videos[] = {"buka.avi", "skif.avi", "adv.avi"};
 	for (uint i = 0; i < sizeof(videos) / sizeof(char *); ++i) {
-		Common::File *file = new Common::File;
+		Common::ScopedPtr<Common::File> file(new Common::File);
 		if (file->open(videos[i])) {
-			playVideo(file);
+			playVideo(file.release());
 		} else {
 			debugC(kPetkaDebugResources, "Video file %s can't be opened", videos[i]);
-			delete file;
 		}
 	}
 
@@ -171,31 +170,35 @@ Common::RandomSource &PetkaEngine::getRnd() {
 }
 
 void PetkaEngine::playVideo(Common::SeekableReadStream *stream) {
-	Video::AVIDecoder decoder;
-	if (stream && !decoder.loadStream(stream)) {
+	PauseToken token = pauseEngine();
+	Graphics::PixelFormat fmt = _system->getScreenFormat();
+
+	_videoDec.reset(new Video::AVIDecoder);
+	if (!_videoDec->loadStream(stream)) {
+		_videoDec.reset();
 		return;
 	}
 
-	g_system->getMixer()->pauseAll(true);
-	Graphics::PixelFormat fmt = _system->getScreenFormat();
+	_videoDec->start();
 
-	decoder.start();
-	while (!decoder.endOfVideo()) {
+	while (!_videoDec->endOfVideo() && !shouldQuit()) {
 		Common::Event event;
 		while (_eventMan->pollEvent(event)) {
 			switch (event.type) {
+			case Common::EVENT_RETURN_TO_LAUNCHER:
+			case Common::EVENT_QUIT:
 			case Common::EVENT_LBUTTONDOWN:
 			case Common::EVENT_RBUTTONDOWN:
 			case Common::EVENT_KEYDOWN:
-				decoder.close();
-				break;
+				_videoDec.reset();
+				return;
 			default:
 				break;
 			}
 		}
 
-		if (decoder.needsUpdate()) {
-			const Graphics::Surface *frame = decoder.decodeNextFrame();
+		if (_videoDec->needsUpdate()) {
+			const Graphics::Surface *frame = _videoDec->decodeNextFrame();
 			if (frame) {
 				Common::ScopedPtr<Graphics::Surface, Graphics::SurfaceDeleter> f(frame->convertTo(fmt));
 				_system->copyRectToScreen(f->getPixels(), f->pitch, 0, 0, f->w, f->h);
@@ -205,7 +208,8 @@ void PetkaEngine::playVideo(Common::SeekableReadStream *stream) {
 		_system->updateScreen();
 		_system->delayMillis(15);
 	}
-	g_system->getMixer()->pauseAll(false);
+
+	_videoDec.reset();
 }
 
 bool PetkaEngine::isDemo() const {
@@ -304,8 +308,12 @@ bool PetkaEngine::hasFeature(EngineFeature f) const {
 }
 
 void PetkaEngine::pauseEngineIntern(bool pause) {
-	if (!pause)
+	if (!pause && _vsys)
 		_vsys->updateTime();
+
+	if (_videoDec)
+		_videoDec->pauseVideo(pause);
+
 	Engine::pauseEngineIntern(pause);
 }
 
diff --git a/engines/petka/petka.h b/engines/petka/petka.h
index 1d4be76c3d..a32c9db8d1 100644
--- a/engines/petka/petka.h
+++ b/engines/petka/petka.h
@@ -49,6 +49,10 @@ namespace Common {
 class SeekableReadStream;
 }
 
+namespace Video {
+class VideoDecoder;
+}
+
 namespace Petka {
 
 class Console;
@@ -118,6 +122,7 @@ private:
 	Common::ScopedPtr<QSystem> _qsystem;
 	Common::ScopedPtr<VideoSystem> _vsys;
 	Common::ScopedPtr<BigDialogue> _dialogMan;
+	Common::ScopedPtr<Video::VideoDecoder> _videoDec;
 	const ADGameDescription *_desc;
 
 	Common::RandomSource _rnd;


Commit: 49437e2c1aaa142fe4cafc330707f4c9ac8ba812
    https://github.com/scummvm/scummvm/commit/49437e2c1aaa142fe4cafc330707f4c9ac8ba812
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-10-07T22:51:46+03:00

Commit Message:
VIDEO: Update Engine Usage Comment in AVI Decoder

Changed paths:
    video/avi_decoder.h


diff --git a/video/avi_decoder.h b/video/avi_decoder.h
index 5a6864f52e..b27bb0251a 100644
--- a/video/avi_decoder.h
+++ b/video/avi_decoder.h
@@ -54,6 +54,7 @@ namespace Video {
  * Decoder for AVI videos.
  *
  * Video decoder used in engines:
+ *  - petka
  *  - sci
  *  - sword1
  *  - sword2


Commit: a5f16796edeb8b295d4f17eda1977400e2acb2aa
    https://github.com/scummvm/scummvm/commit/a5f16796edeb8b295d4f17eda1977400e2acb2aa
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-10-07T22:52:12+03:00

Commit Message:
IMAGE: Update Engine Usage Comment in BMP Decoder

Changed paths:
    image/bmp.h


diff --git a/image/bmp.h b/image/bmp.h
index 2b7d6fb83f..2493f8351a 100644
--- a/image/bmp.h
+++ b/image/bmp.h
@@ -25,6 +25,7 @@
  * Image decoder used in engines:
  *  - hugo
  *  - mohawk
+ *  - petka
  *  - wintermute
  */
 




More information about the Scummvm-git-logs mailing list