diff --git a/graphics/macgui/macwindow.cpp b/graphics/macgui/macwindow.cpp index dbb600ba825..6405d37591f 100644 --- a/graphics/macgui/macwindow.cpp +++ b/graphics/macgui/macwindow.cpp @@ -324,19 +324,19 @@ void MacWindow::loadBorder(Common::SeekableReadStream &file, bool active, int lo source = *(bmpDecoder.getSurface()); source.convertToInPlace(surface->getSupportedPixelFormat(), bmpDecoder.getPalette()); - surface->create(source.w, source.h, source.format); surface->copyFrom(source); surface->applyColorKey(255, 0, 255, false); if (active) - _macBorder.addActiveBorder(*surface); + _macBorder.addActiveBorder(surface); else - _macBorder.addInactiveBorder(*surface); + _macBorder.addInactiveBorder(surface); if (!_macBorder.hasOffsets()) _macBorder.setOffsets(lo, ro, to, bo); updateInnerDims(); + source.free(); } void MacWindow::setCloseable(bool closeable) { diff --git a/graphics/macgui/macwindowborder.cpp b/graphics/macgui/macwindowborder.cpp index b77fa356033..25832440cf5 100644 --- a/graphics/macgui/macwindowborder.cpp +++ b/graphics/macgui/macwindowborder.cpp @@ -71,15 +71,15 @@ bool MacWindowBorder::hasBorder(bool active) { return active ? _activeInitialized : _inactiveInitialized; } -void MacWindowBorder::addActiveBorder(TransparentSurface &source) { +void MacWindowBorder::addActiveBorder(TransparentSurface *source) { assert(!_activeBorder); - _activeBorder = new NinePatchBitmap(&source, false); + _activeBorder = new NinePatchBitmap(source, true); _activeInitialized = true; } -void MacWindowBorder::addInactiveBorder(TransparentSurface &source) { +void MacWindowBorder::addInactiveBorder(TransparentSurface *source) { assert(!_inactiveBorder); - _inactiveBorder = new NinePatchBitmap(&source, false); + _inactiveBorder = new NinePatchBitmap(source, true); _inactiveInitialized = true; } diff --git a/graphics/macgui/macwindowborder.h b/graphics/macgui/macwindowborder.h index 54938e5143a..6a1b55c5e35 100644 --- a/graphics/macgui/macwindowborder.h +++ b/graphics/macgui/macwindowborder.h @@ -86,14 +86,14 @@ public: * Will fail if there is already an active border. * @param The surface that will be displayed. */ - void addActiveBorder(TransparentSurface &source); + void addActiveBorder(TransparentSurface *source); /** * Add the given surface as the display of the border in the inactive state. * Will fail if there is already an inactive border. * @param The surface that will be displayed. */ - void addInactiveBorder(TransparentSurface &source); + void addInactiveBorder(TransparentSurface *source); /** * Accessor function for the custom offsets.