[Scummvm-cvs-logs] SF.net SVN: scummvm:[44820] scummvm/trunk/engines/sci/gui

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Fri Oct 9 14:04:07 CEST 2009


Revision: 44820
          http://scummvm.svn.sourceforge.net/scummvm/?rev=44820&view=rev
Author:   m_kiewitz
Date:     2009-10-09 12:04:07 +0000 (Fri, 09 Oct 2009)

Log Message:
-----------
SCI/newgui: SciGuiFont now locks the resourcedata, fixes broken fonts in games

Modified Paths:
--------------
    scummvm/trunk/engines/sci/gui/gui_font.cpp
    scummvm/trunk/engines/sci/gui/gui_font.h

Modified: scummvm/trunk/engines/sci/gui/gui_font.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_font.cpp	2009-10-09 12:01:22 UTC (rev 44819)
+++ scummvm/trunk/engines/sci/gui/gui_font.cpp	2009-10-09 12:04:07 UTC (rev 44820)
@@ -32,7 +32,7 @@
 namespace Sci {
 
 SciGuiFont::SciGuiFont(ResourceManager *resMan, GuiResourceId resourceId)
-	: _resourceId(resourceId) {
+	: _resourceId(resourceId), _resMan(resMan) {
 	assert(resourceId != -1);
 
 	// Workaround: lsl1sci mixes its own internal fonts with the global
@@ -40,11 +40,11 @@
 	if (!resMan->testResource(ResourceId(kResourceTypeFont, resourceId)))
 		resourceId = resourceId & 0x7ff;
 
-	Resource *fontResource = resMan->findResource(ResourceId(kResourceTypeFont, resourceId), false);
-	if (!fontResource) {
+	_resource = resMan->findResource(ResourceId(kResourceTypeFont, resourceId), true);
+	if (!_resource) {
 		error("font resource %d not found", resourceId);
 	}
-	_resourceData = fontResource->data;
+	_resourceData = _resource->data;
 
 	_numChars = READ_LE_UINT16(_resourceData + 2);
 	_fontHeight = READ_LE_UINT16(_resourceData + 4);
@@ -58,6 +58,7 @@
 }
 
 SciGuiFont::~SciGuiFont() {
+	_resMan->unlockResource(_resource);
 }
 
 GuiResourceId SciGuiFont::getResourceId() {

Modified: scummvm/trunk/engines/sci/gui/gui_font.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_font.h	2009-10-09 12:01:22 UTC (rev 44819)
+++ scummvm/trunk/engines/sci/gui/gui_font.h	2009-10-09 12:04:07 UTC (rev 44820)
@@ -43,6 +43,9 @@
 	void draw(SciGuiScreen *screen, int16 chr, int16 top, int16 left, byte color, byte textface);
 
 private:
+	ResourceManager *_resMan;
+
+	Resource *_resource;
 	GuiResourceId _resourceId;
 	byte *_resourceData;
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list