Add some manual cleanup (experiemental)

This commit is contained in:
scawful
2023-10-22 16:18:46 -04:00
parent 82cca80191
commit ce2ff06d60
4 changed files with 32 additions and 2 deletions

View File

@@ -157,7 +157,8 @@ void Controller::DoRender() const {
SDL_RenderPresent(renderer_.get());
}
void Controller::OnExit() const {
void Controller::OnExit() {
master_editor_.Shutdown();
Mix_CloseAudio();
ImGui_ImplSDLRenderer2_Shutdown();
ImGui_ImplSDL2_Shutdown();

View File

@@ -27,7 +27,7 @@ class Controller {
void OnInput();
void OnLoad();
void DoRender() const;
void OnExit() const;
void OnExit();
private:
struct sdl_deleter {

View File

@@ -34,6 +34,9 @@ class MasterEditor : public SharedROM {
public:
void SetupScreen(std::shared_ptr<SDL_Renderer> renderer);
void UpdateScreen();
void Shutdown() {
overworld_editor_.Shutdown();
}
private:
void DrawFileDialog();

View File

@@ -46,6 +46,32 @@ class Bitmap {
this->pixel_data_[position] = value;
}
void Cleanup() {
// Reset texture_
if (texture_) {
texture_.reset();
}
// Reset surface_ and its pixel data
if (surface_) {
surface_->pixels = nullptr;
surface_.reset();
}
// Reset data_
data_.clear();
// Reset other members if necessary
active_ = false;
pixel_data_ = nullptr;
width_ = 0;
height_ = 0;
depth_ = 0;
data_size_ = 0;
palette_.Clear(); // assuming there's a Clear() method or similar on
// SNESPalette
}
int width() const { return width_; }
int height() const { return height_; }
auto size() const { return data_size_; }