[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