diff options
| author | Colin Snover | 2016-01-20 20:06:45 -0600 | 
|---|---|---|
| committer | Colin Snover | 2016-01-20 20:06:45 -0600 | 
| commit | 0017cfa06c1dbda7175588a0a16ad13526491fcf (patch) | |
| tree | 6e4f9a72be369c5ef53d5b274fe8790a58014ac7 | |
| parent | 5b6b20f421c3f88b6cbd28e735a7496705c2ef7e (diff) | |
| download | scummvm-rg350-0017cfa06c1dbda7175588a0a16ad13526491fcf.tar.gz scummvm-rg350-0017cfa06c1dbda7175588a0a16ad13526491fcf.tar.bz2 scummvm-rg350-0017cfa06c1dbda7175588a0a16ad13526491fcf.zip  | |
SCI: Fix SCI32 hires detection making PQ4 unusably slow
| -rw-r--r-- | engines/sci/graphics/frameout.cpp | 11 | ||||
| -rw-r--r-- | engines/sci/graphics/frameout.h | 2 | 
2 files changed, 11 insertions, 2 deletions
diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp index 90bd798a1b..cb81fe8d61 100644 --- a/engines/sci/graphics/frameout.cpp +++ b/engines/sci/graphics/frameout.cpp @@ -60,12 +60,19 @@ enum SciSpeciaPlanelPictureCodes {  };  GfxFrameout::GfxFrameout(SegManager *segMan, ResourceManager *resMan, GfxCoordAdjuster *coordAdjuster, GfxCache *cache, GfxScreen *screen, GfxPalette32 *palette, GfxPaint32 *paint32) -	: _segMan(segMan), _resMan(resMan), _cache(cache), _screen(screen), _palette(palette), _paint32(paint32) { +	: _segMan(segMan), _resMan(resMan), _cache(cache), _screen(screen), _palette(palette), _paint32(paint32), _isHiRes(false) {  	_coordAdjuster = (GfxCoordAdjuster32 *)coordAdjuster;  	_curScrollText = -1;  	_showScrollText = false;  	_maxScrollTexts = 0; + +	// TODO: Make hires detection work uniformly across all SCI engine +	// versions (this flag is normally passed by SCI::MakeGraphicsMgr +	// to the GraphicsMgr constructor depending upon video configuration) +	if (getSciVersion() >= SCI_VERSION_2_1_EARLY && _resMan->detectHires()) { +		_isHiRes = true; +	}  }  GfxFrameout::~GfxFrameout() { @@ -877,7 +884,7 @@ void GfxFrameout::kernelFrameout() {  						view->adjustBackUpscaledCoordinates(nsRect.top, nsRect.left);  						view->adjustBackUpscaledCoordinates(nsRect.bottom, nsRect.right);  						g_sci->_gfxCompare->setNSRect(itemEntry->object, nsRect); -					} else if (getSciVersion() >= SCI_VERSION_2_1_EARLY && _resMan->detectHires()) { +					} else if (getSciVersion() >= SCI_VERSION_2_1_EARLY && _isHiRes) {  						_coordAdjuster->fromDisplayToScript(nsRect.top, nsRect.left);  						_coordAdjuster->fromDisplayToScript(nsRect.bottom, nsRect.right);  						g_sci->_gfxCompare->setNSRect(itemEntry->object, nsRect); diff --git a/engines/sci/graphics/frameout.h b/engines/sci/graphics/frameout.h index 0017fb19e8..d1a706e8de 100644 --- a/engines/sci/graphics/frameout.h +++ b/engines/sci/graphics/frameout.h @@ -153,6 +153,8 @@ public:  	void printPlaneItemList(Console *con, reg_t planeObject);  private: +	bool _isHiRes; +  	void showVideo();  	void createPlaneItemList(reg_t planeObject, FrameoutList &itemList);  	bool isPictureOutOfView(FrameoutEntry *itemEntry, Common::Rect planeRect, int16 planeOffsetX, int16 planeOffsetY);  | 
