[Scummvm-git-logs] scummvm master -> a51c23abd3a667811b01e90b0c8c53505021950a
sev-
sev at scummvm.org
Sun Dec 1 15:30:14 UTC 2019
This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
89c1f2cfef DIRECTOR: LINGO: Fix define() code, we were adding too many instructions
4fbcc337af DIRECTOR: LINGO: Improve debug output
3a7a3e2009 GRAPHICS: MACGUI: Fix crash on MacText reallocation
ea5af86128 DIRECTOR: Make text fields assignable
a51c23abd3 DIRECTOR: Do not re-render text if it was not changed
Commit: 89c1f2cfefd5017a92727337a31d339651275d3e
https://github.com/scummvm/scummvm/commit/89c1f2cfefd5017a92727337a31d339651275d3e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-01T16:29:54+01:00
Commit Message:
DIRECTOR: LINGO: Fix define() code, we were adding too many instructions
Changed paths:
engines/director/lingo/lingo-codegen.cpp
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 0b97477..e08844e 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -240,7 +240,7 @@ Symbol *Lingo::define(Common::String &name, int start, int nargs, Common::String
if (end == -1)
end = _currentScript->size();
- sym->u.defn = new ScriptData(&(*_currentScript)[start], end - start + 1);
+ sym->u.defn = new ScriptData(&(*_currentScript)[start], end - start);
sym->nargs = nargs;
sym->maxArgs = nargs;
@@ -256,6 +256,7 @@ Symbol *Lingo::define(Common::String &name, int start, int nargs, Common::String
Common::String instr = g_lingo->decodeInstruction(sym->u.defn, pc, &pc);
debugC(1, kDebugLingoExec, "[%5d] %s", pc, instr.c_str());
}
+ debugC(1, kDebugLingoExec, "<end define code>");
}
return sym;
Commit: 4fbcc337af97560fdd648a28a6e4e7586f419684
https://github.com/scummvm/scummvm/commit/4fbcc337af97560fdd648a28a6e4e7586f419684
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-01T16:29:54+01:00
Commit Message:
DIRECTOR: LINGO: Improve debug output
Changed paths:
engines/director/lingo/lingo.cpp
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index d009893..805bcb5 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -174,17 +174,19 @@ void Lingo::addCode(const char *code, ScriptType type, uint16 id) {
parse(chunk.c_str());
if (debugChannelSet(3, kDebugLingoCompile)) {
+ debugC(2, kDebugLingoCompile, "<current code>");
uint pc = 0;
while (pc < _currentScript->size()) {
Common::String instr = decodeInstruction(_currentScript, pc, &pc);
debugC(2, kDebugLingoCompile, "[%5d] %s", pc, instr.c_str());
}
+ debugC(2, kDebugLingoCompile, "<end code>");
}
begin = end;
} while ((end = findNextDefinition(begin + 1)));
- debugC(1, kDebugLingoCompile, "Code chunk:\n#####\n%s\n#####", begin);
+ debugC(1, kDebugLingoCompile, "Last code chunk:\n#####\n%s\n#####", begin);
parse(begin);
code1(STOP);
@@ -200,11 +202,13 @@ void Lingo::addCode(const char *code, ScriptType type, uint16 id) {
if (_currentScript->size() && !_hadError)
Common::hexdump((byte *)&_currentScript->front(), _currentScript->size() * sizeof(inst));
+ debugC(2, kDebugLingoCompile, "<resulting code>");
uint pc = 0;
while (pc < _currentScript->size()) {
Common::String instr = decodeInstruction(_currentScript, pc, &pc);
debugC(2, kDebugLingoCompile, "[%5d] %s", pc, instr.c_str());
}
+ debugC(2, kDebugLingoCompile, "<end code>");
}
}
Commit: 3a7a3e20092cbcef0b9a2bdda9960aa93958e7a9
https://github.com/scummvm/scummvm/commit/3a7a3e20092cbcef0b9a2bdda9960aa93958e7a9
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-01T16:29:54+01:00
Commit Message:
GRAPHICS: MACGUI: Fix crash on MacText reallocation
Changed paths:
graphics/macgui/mactext.cpp
diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp
index 1c80e55..bc7ebe6 100644
--- a/graphics/macgui/mactext.cpp
+++ b/graphics/macgui/mactext.cpp
@@ -49,7 +49,6 @@ const Common::String MacFontRun::toString() {
MacText::~MacText() {
delete _surface;
- delete _macFont;
}
MacText::MacText(Common::U32String s, MacWindowManager *wm, const MacFont *macFont, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment, int interlinear) {
Commit: ea5af861282b0bc4081e033b3ba8212524289d49
https://github.com/scummvm/scummvm/commit/ea5af861282b0bc4081e033b3ba8212524289d49
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-01T16:29:54+01:00
Commit Message:
DIRECTOR: Make text fields assignable
Changed paths:
engines/director/cachedmactext.cpp
engines/director/cast.cpp
engines/director/cast.h
engines/director/lingo/lingo-code.cpp
diff --git a/engines/director/cachedmactext.cpp b/engines/director/cachedmactext.cpp
index d9a0740..e152974 100644
--- a/engines/director/cachedmactext.cpp
+++ b/engines/director/cachedmactext.cpp
@@ -34,6 +34,7 @@ void CachedMacText::makeMacText() {
assert(_wm != NULL);
delete _macText;
+ _macText = nullptr;
if ((int)_textCast->_textAlign == -1)
_align = (Graphics::TextAlign)3;
diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index d864b50..f01b4a1 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -217,7 +217,7 @@ void TextCast::importStxt(const Stxt *stxt) {
_ftext = stxt->_ftext;
}
-void TextCast::importRTE(byte* text) {
+void TextCast::importRTE(byte *text) {
//assert(rteList.size() == 3);
//child0 is probably font data.
//child1 is the raw text.
@@ -225,6 +225,12 @@ void TextCast::importRTE(byte* text) {
//child2 is positional?
}
+void TextCast::setText(const char *text) {
+ _ftext = text;
+
+ _cachedMacText->forceDirty();
+}
+
ShapeCast::ShapeCast(Common::ReadStreamEndian &stream, uint16 version) {
if (version < 4) {
/*byte flags = */ stream.readByte();
diff --git a/engines/director/cast.h b/engines/director/cast.h
index 213cfbd..7b3ed27 100644
--- a/engines/director/cast.h
+++ b/engines/director/cast.h
@@ -128,6 +128,8 @@ class TextCast : public Cast {
public:
TextCast(Common::ReadStreamEndian &stream, uint16 version = 2);
+ void setText(const char *text);
+
SizeType _borderSize;
SizeType _gutterSize;
SizeType _boxShadow;
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index b2607ed..ca9073e 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -341,7 +341,9 @@ void Lingo::c_assign() {
}
}
- warning("STUB: c_assing REFERENCE");
+ d2.toString();
+
+ g_director->getCurrentScore()->_loadedText->getVal(d1.u.i)->setText(d2.u.s->c_str());
return;
}
Commit: a51c23abd3a667811b01e90b0c8c53505021950a
https://github.com/scummvm/scummvm/commit/a51c23abd3a667811b01e90b0c8c53505021950a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-01T16:29:54+01:00
Commit Message:
DIRECTOR: Do not re-render text if it was not changed
Changed paths:
engines/director/cast.cpp
diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index f01b4a1..5a4936c 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -226,6 +226,10 @@ void TextCast::importRTE(byte *text) {
}
void TextCast::setText(const char *text) {
+ // Do nothing if text did not change
+ if (_ftext.equals(text))
+ return;
+
_ftext = text;
_cachedMacText->forceDirty();
More information about the Scummvm-git-logs
mailing list