[Scummvm-cvs-logs] SF.net SVN: scummvm:[53070] scummvm/branches/branch-1-2-0/engines/sci/ graphics/compare.cpp

wjpalenstijn at users.sourceforge.net wjpalenstijn at users.sourceforge.net
Fri Oct 8 14:31:55 CEST 2010


Revision: 53070
          http://scummvm.svn.sourceforge.net/scummvm/?rev=53070&view=rev
Author:   wjpalenstijn
Date:     2010-10-08 12:31:54 +0000 (Fri, 08 Oct 2010)

Log Message:
-----------
SCI: Backport r53045: fixing kBaseSetter on scaled views

adding check, if view is scaleable
also just copying nsRect now instead of recalculating - fixes lb2 regression at
the docks (calling taxi hangs the game, bug #3982289) - i noticed this
difference before but copying nsRect didnt work back then (i guess because of
other bugs), that's why i recalculated it

Backport note: LB2 and QfG3 (which both have had bugs related to this code) have
been fully replayed with this patch to test.

Modified Paths:
--------------
    scummvm/branches/branch-1-2-0/engines/sci/graphics/compare.cpp

Modified: scummvm/branches/branch-1-2-0/engines/sci/graphics/compare.cpp
===================================================================
--- scummvm/branches/branch-1-2-0/engines/sci/graphics/compare.cpp	2010-10-08 10:41:55 UTC (rev 53069)
+++ scummvm/branches/branch-1-2-0/engines/sci/graphics/compare.cpp	2010-10-08 12:31:54 UTC (rev 53070)
@@ -237,20 +237,24 @@
 		Common::Rect celRect;
 
 		GfxView *tmpView = _cache->getView(viewId);
-		if (tmpView->isSci2Hires())
-			_screen->adjustToUpscaledCoordinates(y, x);
+		if (!tmpView->isScaleable())
+			scaleSignal = 0;
 
 		if (scaleSignal & kScaleSignalDoScaling) {
-			int16 scaleX = readSelectorValue(_segMan, object, SELECTOR(scaleX));
-			int16 scaleY = readSelectorValue(_segMan, object, SELECTOR(scaleY));
-			tmpView->getCelScaledRect(loopNo, celNo, x, y, z, scaleX, scaleY, celRect);
+			celRect.left = readSelectorValue(_segMan, object, SELECTOR(nsLeft));
+			celRect.right = readSelectorValue(_segMan, object, SELECTOR(nsRight));
+			celRect.top = readSelectorValue(_segMan, object, SELECTOR(nsTop));
+			celRect.bottom = readSelectorValue(_segMan, object, SELECTOR(nsBottom));
 		} else {
+			if (tmpView->isSci2Hires())
+				_screen->adjustToUpscaledCoordinates(y, x);
+
 			tmpView->getCelRect(loopNo, celNo, x, y, z, celRect);
-		}
 
-		if (tmpView->isSci2Hires()) {
-			_screen->adjustBackUpscaledCoordinates(celRect.top, celRect.left);
-			_screen->adjustBackUpscaledCoordinates(celRect.bottom, celRect.right);
+			if (tmpView->isSci2Hires()) {
+				_screen->adjustBackUpscaledCoordinates(celRect.top, celRect.left);
+				_screen->adjustBackUpscaledCoordinates(celRect.bottom, celRect.right);
+			}
 		}
 
 		celRect.bottom = y + 1;


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