diff options
Diffstat (limited to 'engines/sword25/gfx/graphicengine.cpp')
-rw-r--r-- | engines/sword25/gfx/graphicengine.cpp | 37 |
1 files changed, 11 insertions, 26 deletions
diff --git a/engines/sword25/gfx/graphicengine.cpp b/engines/sword25/gfx/graphicengine.cpp index 502d2d3b2a..6b1c2bc514 100644 --- a/engines/sword25/gfx/graphicengine.cpp +++ b/engines/sword25/gfx/graphicengine.cpp @@ -18,9 +18,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * $URL$ - * $Id$ - * */ /* @@ -86,7 +83,6 @@ GraphicEngine::GraphicEngine(Kernel *pKernel) : GraphicEngine::~GraphicEngine() { unregisterScriptBindings(); _backSurface.free(); - _frameBuffer.free(); delete _thumbnail; } @@ -112,8 +108,9 @@ bool GraphicEngine::init(int width, int height, int bitDepth, int backbufferCoun _screenRect.right = _width; _screenRect.bottom = _height; - _backSurface.create(width, height, 4); - _frameBuffer.create(width, height, 4); + const Graphics::PixelFormat format = g_system->getScreenFormat(); + + _backSurface.create(width, height, format); // Standardmäßig ist Vsync an. setVsync(true); @@ -149,18 +146,6 @@ bool GraphicEngine::endFrame() { _renderObjectManagerPtr->render(); - // FIXME: The following hack doesn't really work (all the thumbnails are empty) -#if 0 - // HACK: The frame buffer surface is only used as the base for creating thumbnails when saving the - // game, since the _backSurface is blanked. Currently I'm doing a slightly hacky check and only - // copying the back surface if line 50 (the first line after the interface area) is non-blank - if (READ_LE_UINT32((byte *)_backSurface.pixels + (_backSurface.pitch * 50)) & 0xffffff) { - // Make a copy of the current frame into the frame buffer - Common::copy((byte *)_backSurface.pixels, (byte *)_backSurface.pixels + - (_backSurface.pitch * _backSurface.h), (byte *)_frameBuffer.pixels); - } -#endif - g_system->updateScreen(); return true; @@ -237,10 +222,6 @@ bool GraphicEngine::fill(const Common::Rect *fillRectPtr, uint color) { return true; } -Graphics::Surface *GraphicEngine::getScreenshot() { - return &_frameBuffer; -} - // ----------------------------------------------------------------------------- // RESOURCE MANAGING // ----------------------------------------------------------------------------- @@ -268,8 +249,9 @@ Resource *GraphicEngine::loadResource(const Common::String &filename) { return pResource; } - // Load sprite image - if (filename.hasSuffix(".png") || filename.hasSuffix(".b25s")) { + // Load sprite image. Savegame thumbnails are also loaded here. + if (filename.hasSuffix(".png") || filename.hasSuffix(".b25s") || + filename.hasPrefix("/saves")) { bool result = false; RenderedImage *pImage = new RenderedImage(filename, result); if (!result) { @@ -356,7 +338,8 @@ bool GraphicEngine::canLoadResource(const Common::String &filename) { filename.hasSuffix("_ani.xml") || filename.hasSuffix("_fnt.xml") || filename.hasSuffix(".swf") || - filename.hasSuffix(".b25s"); + filename.hasSuffix(".b25s") || + filename.hasPrefix("/saves"); } void GraphicEngine::updateLastFrameDuration() { @@ -385,7 +368,9 @@ bool GraphicEngine::saveThumbnailScreenshot(const Common::String &filename) { // Note: In ScumMVM, rather than saivng the thumbnail to a file, we store it in memory // until needed when creating savegame files delete _thumbnail; - _thumbnail = Screenshot::createThumbnail(&_frameBuffer); + + _thumbnail = Screenshot::createThumbnail(&_backSurface); + return true; } |