aboutsummaryrefslogtreecommitdiff
path: root/engines/mads/msurface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mads/msurface.cpp')
-rw-r--r--engines/mads/msurface.cpp16
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) {