#include "game/scenes/surface_handle.hpp" namespace scenes { SurfaceHandle::SurfaceHandle(const char* file) : surface_(JD8_LoadSurface(file)) {} SurfaceHandle::~SurfaceHandle() { if (surface_ != nullptr) { JD8_FreeSurface(surface_); } } SurfaceHandle::SurfaceHandle(SurfaceHandle&& other) noexcept : surface_(other.surface_) { other.surface_ = nullptr; } auto SurfaceHandle::operator=(SurfaceHandle&& other) noexcept -> SurfaceHandle& { if (this != &other) { if (surface_ != nullptr) { JD8_FreeSurface(surface_); } surface_ = other.surface_; other.surface_ = nullptr; } return *this; } void SurfaceHandle::reset(const char* file) { if (surface_ != nullptr) { JD8_FreeSurface(surface_); } surface_ = (file != nullptr) ? JD8_LoadSurface(file) : nullptr; } void SurfaceHandle::adopt(JD8_Surface raw) { if (surface_ != nullptr) { JD8_FreeSurface(surface_); } surface_ = raw; } auto SurfaceHandle::release() -> JD8_Surface { JD8_Surface r = surface_; surface_ = nullptr; return r; } } // namespace scenes