[Scummvm-git-logs] scummvm master -> 77834dd43cf708fbd9ba27096544dd7c56ae5be5
sev-
noreply at scummvm.org
Sun Mar 2 21:30:58 UTC 2025
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:
77834dd43c DIRECTOR: Fix initial rect on DigitalVideo
Commit: 77834dd43cf708fbd9ba27096544dd7c56ae5be5
https://github.com/scummvm/scummvm/commit/77834dd43cf708fbd9ba27096544dd7c56ae5be5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-03-02T22:29:48+01:00
Commit Message:
DIRECTOR: Fix initial rect on DigitalVideo
trektech has set the receiving rect to 1x1 while in reality the
dimensions are taken from the video.
This fixes the ship object movie
Changed paths:
engines/director/castmember/digitalvideo.cpp
engines/director/lingo/lingo-the.cpp
engines/director/sprite.cpp
diff --git a/engines/director/castmember/digitalvideo.cpp b/engines/director/castmember/digitalvideo.cpp
index 6e688038f9c..a86f4679564 100644
--- a/engines/director/castmember/digitalvideo.cpp
+++ b/engines/director/castmember/digitalvideo.cpp
@@ -179,6 +179,10 @@ bool DigitalVideoCastMember::loadVideo(Common::String path) {
_duration = getMovieTotalTime();
+ // Setting the initial rect to the actual movie dimensions
+ _initialRect.setWidth(_video->getWidth());
+ _initialRect.setHeight(_video->getHeight());
+
return result;
}
@@ -283,7 +287,7 @@ Graphics::MacWidget *DigitalVideoCastMember::createWidget(Common::Rect &bbox, Ch
const Graphics::Surface *frame = _video->decodeNextFrame();
- debugC(1, kDebugImages, "Video time: %d rate: %f", _channel->_movieTime, _channel->_movieRate);
+ debugC(1, kDebugImages, "Video time: %d rate: %f frame: %p dims: %d x %d", _channel->_movieTime, _channel->_movieRate, (void *)frame, bbox.width(), bbox.height());
if (frame) {
if (_lastFrame) {
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 50392c4636d..965ce693793 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -1708,7 +1708,9 @@ void Lingo::setTheSprite(Datum &id1, int field, Datum &d) {
}
}
- if (castId != sprite->_castId) {
+ // Since Digital Video dimensions get clarified after loading,
+ // we enforce them here
+ if (castId != sprite->_castId || (castMember && castMember->_type == kCastDigitalVideo)) {
if (!sprite->_trails) {
movie->getWindow()->addDirtyRect(channel->getBbox());
channel->_dirty = true;
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index 44ea7f72ed5..a5e4138f03b 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -527,7 +527,7 @@ void Sprite::setCast(CastMemberID memberID, bool replaceDims) {
Common::Rect dims = _cast->getInitialRect();
switch (_cast->_type) {
case kCastShape:
- case kCastText: // fall-through
+ case kCastText:
break;
case kCastBitmap:
default:
More information about the Scummvm-git-logs
mailing list