diff --git a/src/osdep/amiberry_gui.cpp b/src/osdep/amiberry_gui.cpp index 80cd8156..5372bedf 100644 --- a/src/osdep/amiberry_gui.cpp +++ b/src/osdep/amiberry_gui.cpp @@ -1985,7 +1985,7 @@ void apply_theme() // Check if the font_name contains the full path to the file (e.g. in /usr/share/fonts) if (my_existsfile2(gui_theme.font_name.c_str())) { - gui_font = new gcn::SDLTrueTypeFont(gui_theme.font_name, gui_theme.font_size); + gui_font = std::make_unique(gui_theme.font_name, gui_theme.font_size); } else { @@ -1993,7 +1993,7 @@ void apply_theme() std::string font = get_data_path(); font.append(gui_theme.font_name); if (my_existsfile2(font.c_str())) - gui_font = new gcn::SDLTrueTypeFont(font, gui_theme.font_size); + gui_font = std::make_unique(font, gui_theme.font_size); else { // If the font file was not found in the data directory, fallback to a system font @@ -2019,7 +2019,7 @@ void apply_theme() write_log("An error occurred while trying to open the GUI font! Exception: %s\n", ex.what()); abort(); } - gcn::Widget::setGlobalFont(gui_font); + gcn::Widget::setGlobalFont(gui_font.get()); gcn::Widget::setWidgetsBaseColor(gui_base_color); gcn::Widget::setWidgetsForegroundColor(gui_foreground_color); gcn::Widget::setWidgetsBackgroundColor(gui_background_color); diff --git a/src/osdep/gui/ShowMessage.cpp b/src/osdep/gui/ShowMessage.cpp index ac811f2b..90a41602 100644 --- a/src/osdep/gui/ShowMessage.cpp +++ b/src/osdep/gui/ShowMessage.cpp @@ -156,19 +156,19 @@ static void InitShowMessage(const std::string& message) if (gui_graphics == nullptr) { - gui_graphics = new gcn::SDLGraphics(); + gui_graphics = std::make_unique(); gui_graphics->setTarget(gui_screen); } if (gui_input == nullptr) { - gui_input = new gcn::SDLInput(); + gui_input = std::make_unique(); } if (uae_gui == nullptr) { halt_gui = true; - uae_gui = new gcn::Gui(); - uae_gui->setGraphics(gui_graphics); - uae_gui->setInput(gui_input); + uae_gui = std::make_unique(); + uae_gui->setGraphics(gui_graphics.get()); + uae_gui->setInput(gui_input.get()); } if (gui_top == nullptr) { @@ -259,14 +259,6 @@ static void ExitShowMessage() if (halt_gui) { - delete uae_gui; - uae_gui = nullptr; - delete gui_input; - gui_input = nullptr; - delete gui_graphics; - gui_graphics = nullptr; - delete gui_font; - gui_font = nullptr; delete gui_top; gui_top = nullptr; diff --git a/src/osdep/gui/gui_handling.h b/src/osdep/gui/gui_handling.h index a3991a8c..67fd0118 100644 --- a/src/osdep/gui/gui_handling.h +++ b/src/osdep/gui/gui_handling.h @@ -173,8 +173,8 @@ extern bool gui_running; extern gcn::Container* selectors; extern gcn::ScrollArea* selectorsScrollArea; extern ConfigCategory categories[]; -extern gcn::Gui* uae_gui; extern gcn::Container* gui_top; +extern std::unique_ptr uae_gui; // GUI Colors extern amiberry_gui_theme gui_theme; @@ -186,12 +186,12 @@ extern gcn::Color gui_selection_color; extern gcn::Color gui_foreground_color; extern gcn::Color gui_font_color; -extern gcn::SDLInput* gui_input; +extern std::unique_ptr gui_input; extern SDL_Surface* gui_screen; extern SDL_Joystick* gui_joystick; -extern gcn::SDLGraphics* gui_graphics; -extern gcn::SDLTrueTypeFont* gui_font; +extern std::unique_ptr gui_graphics; +extern std::unique_ptr gui_font; extern SDL_Texture* gui_texture; diff --git a/src/osdep/gui/main_window.cpp b/src/osdep/gui/main_window.cpp index 5b01ee13..3d4e8c62 100644 --- a/src/osdep/gui/main_window.cpp +++ b/src/osdep/gui/main_window.cpp @@ -141,18 +141,18 @@ SDL_Rect gui_window_rect{0, 0, GUI_WIDTH, GUI_HEIGHT}; /* * Gui SDL stuff we need */ -gcn::SDLInput* gui_input; -gcn::SDLGraphics* gui_graphics; -gcn::SDLImageLoader* gui_imageLoader; -gcn::SDLTrueTypeFont* gui_font; +std::unique_ptr gui_input; +std::unique_ptr gui_graphics; +std::unique_ptr gui_imageLoader; +std::unique_ptr gui_font; /* * Gui stuff we need */ -gcn::Gui* uae_gui; gcn::Container* gui_top; gcn::Container* selectors; gcn::ScrollArea* selectorsScrollArea; +std::unique_ptr uae_gui; // GUI Colors gcn::Color gui_base_color; @@ -163,8 +163,8 @@ gcn::Color gui_selection_color; gcn::Color gui_foreground_color; gcn::Color gui_font_color; -gcn::FocusHandler* focusHdl; -gcn::Widget* activeWidget; +std::unique_ptr focusHdl; +std::unique_ptr activeWidget; // Main buttons gcn::Button* cmdQuit; @@ -392,31 +392,24 @@ void amiberry_gui_init() // Create helpers for GUI framework //------------------------------------------------- - gui_imageLoader = new gcn::SDLImageLoader(); + gui_imageLoader = std::make_unique(); gui_imageLoader->setRenderer(mon->gui_renderer); // The ImageLoader in use is static and must be set to be // able to load images - gcn::Image::setImageLoader(gui_imageLoader); - gui_graphics = new gcn::SDLGraphics(); + gcn::Image::setImageLoader(gui_imageLoader.get()); + gui_graphics = std::make_unique(); // Set the target for the graphics object to be the screen. // In other words, we will draw to the screen. // Note, any surface will do, it doesn't have to be the screen. gui_graphics->setTarget(gui_screen); - gui_input = new gcn::SDLInput(); + gui_input = std::make_unique(); } void amiberry_gui_halt() { AmigaMonitor* mon = &AMonitors[0]; - delete gui_imageLoader; - gui_imageLoader = nullptr; - delete gui_input; - gui_input = nullptr; - delete gui_graphics; - gui_graphics = nullptr; - if (gui_screen != nullptr) { SDL_FreeSurface(gui_screen); @@ -715,9 +708,9 @@ void check_input() //------------------------------------------------- // Quit entire program via Q on keyboard //------------------------------------------------- - focusHdl = gui_top->_getFocusHandler(); - activeWidget = focusHdl->getFocused(); - if (dynamic_cast(activeWidget) == nullptr) + focusHdl.reset(gui_top->_getFocusHandler()); + activeWidget.reset(focusHdl->getFocused()); + if (dynamic_cast(activeWidget.get()) == nullptr) { // ...but only if we are not in a Textfield... uae_quit(); @@ -1023,9 +1016,9 @@ void gui_widgets_init() //------------------------------------------------- // Create GUI //------------------------------------------------- - uae_gui = new gcn::Gui(); - uae_gui->setGraphics(gui_graphics); - uae_gui->setInput(gui_input); + uae_gui = std::make_unique(); + uae_gui->setGraphics(gui_graphics.get()); + uae_gui->setInput(gui_input.get()); //------------------------------------------------- // Initialize fonts @@ -1204,15 +1197,9 @@ void gui_widgets_halt() delete cmdRestart; delete cmdStart; delete cmdHelp; - delete mainButtonActionListener; - - delete gui_font; - gui_font = nullptr; delete gui_top; gui_top = nullptr; - delete uae_gui; - uae_gui = nullptr; } void refresh_all_panels()