[Scummvm-git-logs] scummvm master -> c3b3dfecafa570be1e1cd717d68c3e67dc8a748b
sev-
noreply at scummvm.org
Sun Feb 16 17:09:33 UTC 2025
This automated email contains information about 10 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
88ebf3dc9d TESTBED: Fix crash when requested video file fails to load
5b3953aaf6 COMMON: FORMATS: Report QTVR 2.0 movies as unsupported
8676fb1fba COMMON: FORMATS: Simplified usage of QTVR node type
a65f2c0b94 DIRECTOR: XTRAS: Implement m_bgOneKey() in KeyPoll Xtra
502209a7df DIRECTOR: XTRAS: Implement QTVR Update method
c81553fb60 VIDEO: QTVR: Print out unhandled node types
154000d2d2 DIRECTOR: XTRAS: Process EVENT_QUIT in QTVR Xtra
10ee20b3e6 VIDEO: QTVR: Distinguish between clicked and roll over hotspot
05555c2a37 DIRECTOR: XTRAS: Initial implementation of m_QTVRMouseDown()
c3b3dfecaf VIDEO: QTVR: Cleanup obsolete method
Commit: 88ebf3dc9dd4b666790b5c7c84bac56c0c6a4efb
https://github.com/scummvm/scummvm/commit/88ebf3dc9dd4b666790b5c7c84bac56c0c6a4efb
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T18:09:16+01:00
Commit Message:
TESTBED: Fix crash when requested video file fails to load
Changed paths:
engines/testbed/video.cpp
diff --git a/engines/testbed/video.cpp b/engines/testbed/video.cpp
index b324a3b30ba..216e9a81048 100644
--- a/engines/testbed/video.cpp
+++ b/engines/testbed/video.cpp
@@ -59,7 +59,6 @@ Common::Error Videotests::videoTest(Common::SeekableReadStream *stream, const Co
Video::QuickTimeDecoder *video = new Video::QuickTimeDecoder();
if (!video->loadStream(stream)) {
warning("Cannot open video %s", name.c_str());
- delete stream;
delete video;
return Common::kReadingFailed;
}
Commit: 5b3953aaf6b84f8f2f7d420848eb27730efdfb25
https://github.com/scummvm/scummvm/commit/5b3953aaf6b84f8f2f7d420848eb27730efdfb25
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T18:09:16+01:00
Commit Message:
COMMON: FORMATS: Report QTVR 2.0 movies as unsupported
Changed paths:
common/formats/quicktime.cpp
diff --git a/common/formats/quicktime.cpp b/common/formats/quicktime.cpp
index 7e2f34e1e43..5b7f365055a 100644
--- a/common/formats/quicktime.cpp
+++ b/common/formats/quicktime.cpp
@@ -892,6 +892,11 @@ int QuickTimeParser::readCTYP(Atom atom) {
_qtvrType = QTVRType::PANORAMA;
break;
+ case MKTAG('q', 't', 'v', 'r'):
+ _qtvrType = QTVRType::OTHER;
+ warning("QuickTimeParser::readCTYP(): QTVR 2.0 files are not yet supported");
+ break;
+
default:
_qtvrType = QTVRType::OTHER;
warning("QuickTimeParser::readCTYP(): Unknown QTVR Type ('%s')", tag2str(ctype));
Commit: 8676fb1fba79461fbe9fbc5163db4e899fb91daa
https://github.com/scummvm/scummvm/commit/8676fb1fba79461fbe9fbc5163db4e899fb91daa
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T18:09:16+01:00
Commit Message:
COMMON: FORMATS: Simplified usage of QTVR node type
Changed paths:
common/formats/quicktime.h
diff --git a/common/formats/quicktime.h b/common/formats/quicktime.h
index 30b33c70caa..44f6d512760 100644
--- a/common/formats/quicktime.h
+++ b/common/formats/quicktime.h
@@ -198,13 +198,13 @@ public:
};
enum class HotSpotType {
- undefined,
- anim,
- cnod,
- link,
- navg,
- soun,
- cmov,
+ undefined = MKTAG('u','n','d','f'),
+ anim = MKTAG('a','n','i','m'),
+ cnod = MKTAG('c','n','o','d'),
+ link = MKTAG('l','i','n','k'),
+ navg = MKTAG('n','a','v','g'),
+ soun = MKTAG('s','o','u','n'),
+ cmov = MKTAG('c','m','o','v'),
};
struct PanoHotSpot {
Commit: a65f2c0b9486f80bddd67ba5079d0a33d8d711dd
https://github.com/scummvm/scummvm/commit/a65f2c0b9486f80bddd67ba5079d0a33d8d711dd
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T18:09:16+01:00
Commit Message:
DIRECTOR: XTRAS: Implement m_bgOneKey() in KeyPoll Xtra
Now it is possible to skip intro in Safecracker. Press ESC.
Changed paths:
engines/director/lingo/xtras/keypoll.cpp
diff --git a/engines/director/lingo/xtras/keypoll.cpp b/engines/director/lingo/xtras/keypoll.cpp
index c5b191d01ae..ba23c9cbb52 100644
--- a/engines/director/lingo/xtras/keypoll.cpp
+++ b/engines/director/lingo/xtras/keypoll.cpp
@@ -105,7 +105,29 @@ void KeypollXtra::m_new(int nargs) {
}
XOBJSTUB(KeypollXtra::m_xtra, 0)
-XOBJSTUB(KeypollXtra::m_bgOneKey, 0)
+
+void KeypollXtra::m_bgOneKey(int nargs) {
+ ARGNUMCHECK(1);
+
+ Common::Event event;
+
+ int requestedKey = g_lingo->pop().asInt();
+
+ while (g_system->getEventManager()->pollEvent(event)) {
+ switch (event.type) {
+ case Common::EVENT_KEYDOWN:
+ if (event.kbd.keycode == requestedKey) {
+ g_lingo->push(1);
+ return;
+ }
+ default:
+ break;
+ }
+ }
+
+ g_lingo->push(0);
+}
+
XOBJSTUB(KeypollXtra::m_bgAllKeys, 0)
}
Commit: 502209a7dfa2b880a071f613fcc17f1b80666f28
https://github.com/scummvm/scummvm/commit/502209a7dfa2b880a071f613fcc17f1b80666f28
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T18:09:16+01:00
Commit Message:
DIRECTOR: XTRAS: Implement QTVR Update method
Changed paths:
engines/director/lingo/xtras/qtvrxtra.cpp
diff --git a/engines/director/lingo/xtras/qtvrxtra.cpp b/engines/director/lingo/xtras/qtvrxtra.cpp
index 654248c6ab1..964e50aaa9d 100644
--- a/engines/director/lingo/xtras/qtvrxtra.cpp
+++ b/engines/director/lingo/xtras/qtvrxtra.cpp
@@ -385,7 +385,13 @@ void QtvrxtraXtra::m_QTVRClose(int nargs) {
}
}
-XOBJSTUB(QtvrxtraXtra::m_QTVRUpdate, 0)
+void QtvrxtraXtra::m_QTVRUpdate(int nargs) {
+ QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+ me->_visible = true;
+
+ m_QTVRIdle(0);
+}
+
void QtvrxtraXtra::m_QTVRGetQTVRType(int nargs) {
ARGNUMCHECK(0);
Commit: c81553fb60e4396d46dd7cbb2d8b86de97b684d3
https://github.com/scummvm/scummvm/commit/c81553fb60e4396d46dd7cbb2d8b86de97b684d3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T18:09:17+01:00
Commit Message:
VIDEO: QTVR: Print out unhandled node types
Changed paths:
video/qtvr_decoder.cpp
diff --git a/video/qtvr_decoder.cpp b/video/qtvr_decoder.cpp
index ee1457542a1..08aa12b98f8 100644
--- a/video/qtvr_decoder.cpp
+++ b/video/qtvr_decoder.cpp
@@ -1156,6 +1156,8 @@ void QuickTimeDecoder::updateQTVRCursor(int16 x, int16 y) {
break;
default:
+ if (hsType != HotSpotType::undefined)
+ warning("Hotspot type: %s", tag2str((uint32)hsType));
hsOver = kCursorPanoObjOver;
hsDown = kCursorPanoObjDown;
hsUp = kCursorPanoObjUp;
Commit: 154000d2d2ea4f22f216197b742583755e3c560d
https://github.com/scummvm/scummvm/commit/154000d2d2ea4f22f216197b742583755e3c560d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T18:09:17+01:00
Commit Message:
DIRECTOR: XTRAS: Process EVENT_QUIT in QTVR Xtra
Changed paths:
engines/director/lingo/xtras/qtvrxtra.cpp
diff --git a/engines/director/lingo/xtras/qtvrxtra.cpp b/engines/director/lingo/xtras/qtvrxtra.cpp
index 964e50aaa9d..a5a466041a3 100644
--- a/engines/director/lingo/xtras/qtvrxtra.cpp
+++ b/engines/director/lingo/xtras/qtvrxtra.cpp
@@ -490,6 +490,11 @@ void QtvrxtraXtra::m_QTVRMouseOver(int nargs) {
if (!me->_rect.contains(pos))
break;
+ if (event.type == Common::EVENT_QUIT) {
+ g_director->processEventQUIT();
+ break;
+ }
+
g_director->delayMillis(10);
}
Commit: 10ee20b3e61173113f4a4ba79218024f374deeb6
https://github.com/scummvm/scummvm/commit/10ee20b3e61173113f4a4ba79218024f374deeb6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T18:09:17+01:00
Commit Message:
VIDEO: QTVR: Distinguish between clicked and roll over hotspot
Changed paths:
video/qt_decoder.h
video/qtvr_decoder.cpp
diff --git a/video/qt_decoder.h b/video/qt_decoder.h
index b040be18701..109505a55e2 100644
--- a/video/qt_decoder.h
+++ b/video/qt_decoder.h
@@ -95,7 +95,9 @@ public:
int getCurrentColumn() { return _nextVideoTrack->getCurFrame() % _nav.columns; }
void setCurrentColumn(int column);
- const PanoHotSpot *getCurrentHotspot() { return _currentHotspot; }
+ const PanoHotSpot *getCurrentHotspot() { return _rolloverHotspot; }
+ const PanoHotSpot *getRolloverHotspot() { return _rolloverHotspot; }
+ const PanoHotSpot *getClickedHotspot() { return _clickedHotspot; }
void nudge(const Common::String &direction);
@@ -181,7 +183,8 @@ private:
int _zoomState = kZoomNone;
bool _repeatTimerActive = false;
- const PanoHotSpot *_currentHotspot = nullptr;
+ const PanoHotSpot *_rolloverHotspot = nullptr;
+ const PanoHotSpot *_clickedHotspot = nullptr;
bool _renderHotspots = false;
Graphics::Surface *_scaledSurface;
diff --git a/video/qtvr_decoder.cpp b/video/qtvr_decoder.cpp
index 08aa12b98f8..ff43709b1c3 100644
--- a/video/qtvr_decoder.cpp
+++ b/video/qtvr_decoder.cpp
@@ -929,10 +929,13 @@ void QuickTimeDecoder::handlePanoMouseButton(bool isDown, int16 x, int16 y, bool
_mouseDrag.x = x;
_mouseDrag.y = y;
+
+ if (_rolloverHotspot)
+ _clickedHotspot = _rolloverHotspot;
}
- if (!repeat && !isDown && _currentHotspot && _currentHotspot->type == HotSpotType::link && _prevMouse == _mouseDrag) {
- PanoLink *link = _panoTrack->panoSamples[_currentSample].linkTable.get(_currentHotspot->typeData);
+ if (!repeat && !isDown && _rolloverHotspot && _rolloverHotspot->type == HotSpotType::link && _prevMouse == _mouseDrag) {
+ PanoLink *link = _panoTrack->panoSamples[_currentSample].linkTable.get(_rolloverHotspot->typeData);
if (link) {
goToNode(link->toNodeID);
@@ -1017,10 +1020,10 @@ void QuickTimeDecoder::lookupHotspot(int16 x, int16 y) {
int hotspotId = track->lookupHotspot(x, y);
if (hotspotId && _currentSample != -1) {
- if (!_currentHotspot || _currentHotspot->id != hotspotId)
- _currentHotspot = _panoTrack->panoSamples[_currentSample].hotSpotTable.get(hotspotId);
+ if (!_rolloverHotspot || _rolloverHotspot->id != hotspotId)
+ _rolloverHotspot = _panoTrack->panoSamples[_currentSample].hotSpotTable.get(hotspotId);
} else {
- _currentHotspot = nullptr;
+ _rolloverHotspot = nullptr;
}
}
@@ -1143,8 +1146,8 @@ void QuickTimeDecoder::updateQTVRCursor(int16 x, int16 y) {
// Get hotspot cursors
HotSpotType hsType = HotSpotType::undefined;
- if (_currentHotspot)
- hsType = _currentHotspot->type;
+ if (_rolloverHotspot)
+ hsType = _rolloverHotspot->type;
int hsOver, hsDown, hsUp;
@@ -1164,21 +1167,21 @@ void QuickTimeDecoder::updateQTVRCursor(int16 x, int16 y) {
break;
}
- if (_currentHotspot) {
- if (_currentHotspot->mouseOverCursorID)
- hsOver = _currentHotspot->mouseOverCursorID;
+ if (_rolloverHotspot) {
+ if (_rolloverHotspot->mouseOverCursorID)
+ hsOver = _rolloverHotspot->mouseOverCursorID;
- if (_currentHotspot->mouseDownCursorID)
- hsDown = _currentHotspot->mouseDownCursorID;
+ if (_rolloverHotspot->mouseDownCursorID)
+ hsDown = _rolloverHotspot->mouseDownCursorID;
- if (_currentHotspot->mouseUpCursorID)
- hsUp = _currentHotspot->mouseUpCursorID;
+ if (_rolloverHotspot->mouseUpCursorID)
+ hsUp = _rolloverHotspot->mouseUpCursorID;
}
int sensitivity = 5;
if (!_isMouseButtonDown) {
- setCursor(_currentHotspot ? hsOver : kCursorPano);
+ setCursor(_rolloverHotspot ? hsOver : kCursorPano);
} else {
int res = 0;
PanoSampleDesc *desc = (PanoSampleDesc *)_panoTrack->sampleDescs[0];
@@ -1236,7 +1239,7 @@ void QuickTimeDecoder::updateQTVRCursor(int16 x, int16 y) {
}
(void)hsUp;
- setCursor(_cursorDirMap[res] ? _cursorDirMap[res] : _currentHotspot ? hsDown : kCursorPanoNav);
+ setCursor(_cursorDirMap[res] ? _cursorDirMap[res] : _rolloverHotspot ? hsDown : kCursorPanoNav);
}
}
}
Commit: 05555c2a3767afaf15092f915e7e67f6343af676
https://github.com/scummvm/scummvm/commit/05555c2a3767afaf15092f915e7e67f6343af676
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T18:09:17+01:00
Commit Message:
DIRECTOR: XTRAS: Initial implementation of m_QTVRMouseDown()
Changed paths:
engines/director/lingo/xtras/qtvrxtra.cpp
engines/director/lingo/xtras/qtvrxtra.h
diff --git a/engines/director/lingo/xtras/qtvrxtra.cpp b/engines/director/lingo/xtras/qtvrxtra.cpp
index a5a466041a3..a0b845fb7cc 100644
--- a/engines/director/lingo/xtras/qtvrxtra.cpp
+++ b/engines/director/lingo/xtras/qtvrxtra.cpp
@@ -429,7 +429,70 @@ void QtvrxtraXtra::m_QTVRIdle(int nargs) {
);
}
-XOBJSTUB(QtvrxtraXtra::m_QTVRMouseDown, 0)
+void QtvrxtraXtra::m_QTVRMouseDown(int nargs) {
+ QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+ const Common::QuickTimeParser::PanoHotSpot *hotspot;
+
+ Common::Event event;
+ bool cont = true;
+
+ if (nargs != -1337 && g_system->getEventManager()->pollEvent(event)) {
+ if (event.type != Common::EVENT_LBUTTONDOWN)
+ cont = false;
+ }
+
+ if (!cont) {
+ if (me->_video->getQTVRType() == Common::QuickTimeParser::QTVRType::PANORAMA)
+ g_lingo->push(Common::String("pan ,0"));
+ else
+ g_lingo->pushVoid();
+ return;
+ }
+
+ while (true) {
+ Graphics::Surface const *frame = me->_video->decodeNextFrame();
+
+ Graphics::Surface *dither = frame->convertTo(g_director->_wm->_pixelformat, me->_video->getPalette(), 256, g_director->getPalette(), 256, Graphics::kDitherNaive);
+
+ g_director->getCurrentWindow()->getSurface()->copyRectToSurface(
+ dither->getPixels(), dither->pitch, me->_rect.left, me->_rect.top, dither->w, dither->h
+ );
+
+ g_director->getCurrentWindow()->setDirty(true);
+
+ while (g_system->getEventManager()->pollEvent(event)) {
+ me->_widget->processEvent(event);
+
+ if (event.type == Common::EVENT_LBUTTONUP)
+ break;
+ }
+
+ // MouseStillDownHandler
+ // NodeLeaveHandler
+ // PanZoomStartHandler
+
+ g_director->draw();
+
+ if (event.type == Common::EVENT_QUIT) {
+ g_director->processEventQUIT();
+ break;
+ }
+
+ if (event.type == Common::EVENT_LBUTTONUP)
+ break;
+
+ g_director->delayMillis(10);
+ }
+
+ hotspot = me->_video->getClickedHotspot();
+
+ if (!hotspot) {
+ g_lingo->push(Common::String("pan ,0"));
+ return;
+ }
+
+ g_lingo->push(Common::String::format("%s,%d", tag2str((uint32)hotspot->type), hotspot->id));
+}
void QtvrxtraXtra::m_QTVRMouseOver(int nargs) {
ARGNUMCHECK(0);
@@ -443,13 +506,15 @@ void QtvrxtraXtra::m_QTVRMouseOver(int nargs) {
}
// Execute handler on first call to MouseOver
- const Common::QuickTimeParser::PanoHotSpot *hotspot = me->_video->getCurrentHotspot();
+ const Common::QuickTimeParser::PanoHotSpot *hotspot = me->_video->getRolloverHotspot();
if (!me->_rolloverHotSpotHandler.empty()) {
g_lingo->push(hotspot ? hotspot->id : 0);
g_lingo->executeHandler(me->_rolloverHotSpotHandler, 1);
}
+ int nextTick = g_system->getMillis();
+
while (true) {
Graphics::Surface const *frame = me->_video->decodeNextFrame();
@@ -471,20 +536,49 @@ void QtvrxtraXtra::m_QTVRMouseOver(int nargs) {
break;
}
- hotspot = me->_video->getCurrentHotspot();
+ hotspot = me->_video->getRolloverHotspot();
+
+ if (event.type == Common::EVENT_LBUTTONDOWN) {
+ // MouseDownHandler
+ // PassMouseDown
+
+ //if (!PassMouseDown) {
+ // g_lingo->push(0);
+ // return
+ //}
+
+ me->_widget->processEvent(event);
+
+ m_QTVRMouseDown(-1337);
+
+ return; // MouseDown will take care of the return value
+ }
me->_widget->processEvent(event);
- if (!me->_rolloverHotSpotHandler.empty() && hotspot != me->_video->getCurrentHotspot()) {
+ if (!me->_rolloverHotSpotHandler.empty() && hotspot != me->_video->getRolloverHotspot()) {
g_lingo->push(hotspot ? hotspot->id : 0);
g_lingo->executeHandler(me->_rolloverHotSpotHandler, 1);
+ if (me->_exitMouseOver)
+ break;
+
// TODO We need to redraw current frame because the handler could change
// some fields etc. FIXME
}
}
+ if (g_system->getMillis() > nextTick) {
+ nextTick = g_system->getMillis() + 500;
+
+ if (!me->_mouseOverHandler.empty())
+ g_lingo->executeHandler(me->_mouseOverHandler);
+ }
+
+ if (me->_exitMouseOver)
+ break;
+
g_director->draw();
if (!me->_rect.contains(pos))
@@ -498,11 +592,13 @@ void QtvrxtraXtra::m_QTVRMouseOver(int nargs) {
g_director->delayMillis(10);
}
- g_lingo->push(Common::String("pan ,0"));
+ if (me->_video->getQTVRType() == Common::QuickTimeParser::QTVRType::PANORAMA)
+ g_lingo->push(0);
+ else
+ g_lingo->pushVoid();
}
void QtvrxtraXtra::m_QTVRGetPanAngle(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRGetPanAngle", nargs);
ARGNUMCHECK(0);
QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
@@ -511,7 +607,6 @@ void QtvrxtraXtra::m_QTVRGetPanAngle(int nargs) {
}
void QtvrxtraXtra::m_QTVRSetPanAngle(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRSetPanAngle", nargs);
ARGNUMCHECK(1);
QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
@@ -520,7 +615,6 @@ void QtvrxtraXtra::m_QTVRSetPanAngle(int nargs) {
}
void QtvrxtraXtra::m_QTVRGetTiltAngle(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRGetTiltAngle", nargs);
ARGNUMCHECK(0);
QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
@@ -529,7 +623,6 @@ void QtvrxtraXtra::m_QTVRGetTiltAngle(int nargs) {
}
void QtvrxtraXtra::m_QTVRSetTiltAngle(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRSetTiltAngle", nargs);
ARGNUMCHECK(1);
QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
@@ -538,7 +631,6 @@ void QtvrxtraXtra::m_QTVRSetTiltAngle(int nargs) {
}
void QtvrxtraXtra::m_QTVRGetFOV(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRGetFOV", nargs);
ARGNUMCHECK(0);
QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
@@ -547,7 +639,6 @@ void QtvrxtraXtra::m_QTVRGetFOV(int nargs) {
}
void QtvrxtraXtra::m_QTVRSetFOV(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRSetFOV", nargs);
ARGNUMCHECK(1);
QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
@@ -685,8 +776,22 @@ void QtvrxtraXtra::m_QTVRSetMouseDownHandler(int nargs) {
me->_mouseDownHandler = g_lingo->pop().asString();
}
-XOBJSTUB(QtvrxtraXtra::m_QTVRGetMouseOverHandler, 0)
-XOBJSTUB(QtvrxtraXtra::m_QTVRSetMouseOverHandler, 0)
+void QtvrxtraXtra::m_QTVRGetMouseOverHandler(int nargs) {
+ ARGNUMCHECK(0);
+
+ QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+
+ g_lingo->push(me->_mouseOverHandler);
+}
+
+void QtvrxtraXtra::m_QTVRSetMouseOverHandler(int nargs) {
+ ARGNUMCHECK(1);
+
+ QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+
+ me->_mouseOverHandler = g_lingo->pop().asString();
+}
+
XOBJSTUB(QtvrxtraXtra::m_QTVRGetMouseStillDownHandler, 0)
XOBJSTUB(QtvrxtraXtra::m_QTVRSetMouseStillDownHandler, 0)
XOBJSTUB(QtvrxtraXtra::m_QTVRGetNodeLeaveHandler, 0)
@@ -710,7 +815,13 @@ void QtvrxtraXtra::m_QTVRSetRolloverHotSpotHandler(int nargs) {
me->_rolloverHotSpotHandler = g_lingo->pop().asString();
}
-XOBJSTUB(QtvrxtraXtra::m_QTVRExitMouseOver, 0)
+void QtvrxtraXtra::m_QTVRExitMouseOver(int nargs) {
+ ARGNUMCHECK(0);
+
+ QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+
+ me->_exitMouseOver = true;
+}
void QtvrxtraXtra::m_QTVRPassMouseDown(int nargs) {
ARGNUMCHECK(0);
diff --git a/engines/director/lingo/xtras/qtvrxtra.h b/engines/director/lingo/xtras/qtvrxtra.h
index 9f40ebd4612..912a7edf18f 100644
--- a/engines/director/lingo/xtras/qtvrxtra.h
+++ b/engines/director/lingo/xtras/qtvrxtra.h
@@ -51,9 +51,11 @@ public:
bool _visible;
bool _passMouseDown;
+ bool _exitMouseOver = false;
Common::String _rolloverHotSpotHandler;
Common::String _mouseDownHandler;
+ Common::String _mouseOverHandler;
};
namespace QtvrxtraXtra {
Commit: c3b3dfecafa570be1e1cd717d68c3e67dc8a748b
https://github.com/scummvm/scummvm/commit/c3b3dfecafa570be1e1cd717d68c3e67dc8a748b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T18:09:17+01:00
Commit Message:
VIDEO: QTVR: Cleanup obsolete method
Changed paths:
video/qt_decoder.h
diff --git a/video/qt_decoder.h b/video/qt_decoder.h
index 109505a55e2..0bb5b8bf13b 100644
--- a/video/qt_decoder.h
+++ b/video/qt_decoder.h
@@ -95,7 +95,6 @@ public:
int getCurrentColumn() { return _nextVideoTrack->getCurFrame() % _nav.columns; }
void setCurrentColumn(int column);
- const PanoHotSpot *getCurrentHotspot() { return _rolloverHotspot; }
const PanoHotSpot *getRolloverHotspot() { return _rolloverHotspot; }
const PanoHotSpot *getClickedHotspot() { return _clickedHotspot; }
More information about the Scummvm-git-logs
mailing list