[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