mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-12 22:51:11 +00:00
SCI: fix crash due accessing invalid object (implemented deleteScreenitem)
svn-id: r46993
This commit is contained in:
parent
05a16d7cba
commit
a6aaeb70e6
@ -676,6 +676,10 @@ reg_t kUpdateScreenItem(EngineState *s, int argc, reg_t *argv) {
|
||||
}
|
||||
|
||||
reg_t kDeleteScreenItem(EngineState *s, int argc, reg_t *argv) {
|
||||
reg_t viewObj = argv[0];
|
||||
|
||||
s->_gui->deleteScreenItem(viewObj);
|
||||
|
||||
/*
|
||||
reg_t viewObj = argv[0];
|
||||
uint16 viewId = GET_SEL32V(s->_segMan, viewObj, view);
|
||||
|
@ -844,6 +844,16 @@ void SciGui::addScreenItem(reg_t object) {
|
||||
_screenItemCount++;
|
||||
}
|
||||
|
||||
void SciGui::deleteScreenItem(reg_t object) {
|
||||
for (int itemNr = 0; itemNr < _screenItemCount; itemNr++) {
|
||||
if (_screenItems[itemNr] == object) {
|
||||
_screenItems.remove_at(itemNr);
|
||||
_screenItemCount--;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SciGui::frameOut() {
|
||||
for (int itemNr = 0; itemNr < _screenItemCount; itemNr++) {
|
||||
reg_t viewObj = _screenItems[itemNr];
|
||||
|
@ -155,6 +155,7 @@ public:
|
||||
|
||||
// SCI32
|
||||
virtual void addScreenItem(reg_t object);
|
||||
virtual void deleteScreenItem(reg_t object);
|
||||
virtual void frameOut();
|
||||
|
||||
virtual bool debugUndither(bool flag);
|
||||
|
Loading…
x
Reference in New Issue
Block a user