diff options
Diffstat (limited to 'engines/mads/msurface.cpp')
-rw-r--r-- | engines/mads/msurface.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/engines/mads/msurface.cpp b/engines/mads/msurface.cpp index c8c66234cb..62807e5543 100644 --- a/engines/mads/msurface.cpp +++ b/engines/mads/msurface.cpp @@ -34,20 +34,32 @@ MADSEngine *MSurface::_vm = nullptr; MSurface::MSurface() { pixels = nullptr; + _freeFlag = false; } MSurface::MSurface(int width, int height) { pixels = nullptr; + _freeFlag = false; setSize(width, height); } MSurface::~MSurface() { - Graphics::Surface::free(); + if (_freeFlag) + Graphics::Surface::free(); } void MSurface::setSize(int width, int height) { - Graphics::Surface::free(); + if (_freeFlag) + Graphics::Surface::free(); Graphics::Surface::create(width, height, Graphics::PixelFormat::createFormatCLUT8()); + _freeFlag = true; +} + +void MSurface::setPixels(byte *pData, int horizSize, int vertSize) { + _freeFlag = false; + pixels = pData; + w = horizSize; + h = vertSize; } int MSurface::scaleValue(int value, int scale, int err) { |