diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/access/asurface.cpp | 7 | ||||
-rw-r--r-- | engines/access/asurface.h | 4 |
2 files changed, 10 insertions, 1 deletions
diff --git a/engines/access/asurface.cpp b/engines/access/asurface.cpp index abae6bf703..cb51431657 100644 --- a/engines/access/asurface.cpp +++ b/engines/access/asurface.cpp @@ -294,6 +294,13 @@ void ASurface::copyBlock(ASurface *src, const Common::Rect &bounds) { copyRectToSurface(*src, bounds.left, bounds.top, bounds); } +void ASurface::copyTo(ASurface *dest) { + if (dest->empty()) + dest->create(this->w, this->h); + + dest->blitFrom(*this); +} + void ASurface::saveBlock(const Common::Rect &bounds) { _savedBounds = bounds; _savedBounds.clip(Common::Rect(0, 0, this->w, this->h)); diff --git a/engines/access/asurface.h b/engines/access/asurface.h index ce9928c00e..dd05c8067b 100644 --- a/engines/access/asurface.h +++ b/engines/access/asurface.h @@ -63,6 +63,8 @@ public: void create(uint16 width, uint16 height); + bool empty() const { return w == 0 || h == 0 || pixels == nullptr; } + void clearBuffer(); bool clip(Common::Rect &r); @@ -113,7 +115,7 @@ public: virtual void addDirtyRect(const Common::Rect &r) {} - void copyTo(ASurface *dest) { dest->blitFrom(*this); } + void copyTo(ASurface *dest); void saveBlock(const Common::Rect &bounds); |