From 7d9b3f44ad8763dc1dd9de578ebdbef8a93e4564 Mon Sep 17 00:00:00 2001 From: Charles Dang Date: Sun, 30 Apr 2017 23:31:49 +1100 Subject: [PATCH] Editor Generate Map: hold reference to generator vector instead of copying --- src/editor/map/context_manager.cpp | 3 +-- src/gui/dialogs/editor/generate_map.cpp | 4 ++-- src/gui/dialogs/editor/generate_map.hpp | 11 +++-------- src/tests/gui/test_gui2.cpp | 7 +++---- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/editor/map/context_manager.cpp b/src/editor/map/context_manager.cpp index ea6e8cb5ab42..0900e9a6a37c 100644 --- a/src/editor/map/context_manager.cpp +++ b/src/editor/map/context_manager.cpp @@ -662,8 +662,7 @@ void context_manager::generate_map_dialog() return; } - gui2::dialogs::editor_generate_map dialog; - dialog.set_map_generators(map_generators_); + gui2::dialogs::editor_generate_map dialog(map_generators_); dialog.select_map_generator(last_map_generator_); dialog.show(gui_.video()); diff --git a/src/gui/dialogs/editor/generate_map.cpp b/src/gui/dialogs/editor/generate_map.cpp index e30e32b1b442..82eed274df22 100644 --- a/src/gui/dialogs/editor/generate_map.cpp +++ b/src/gui/dialogs/editor/generate_map.cpp @@ -64,8 +64,8 @@ namespace dialogs REGISTER_DIALOG(editor_generate_map) -editor_generate_map::editor_generate_map() - : map_generators_() +editor_generate_map::editor_generate_map(std::vector& mg) + : map_generators_(mg) , last_map_generator_(nullptr) , current_map_generator_(0) , random_seed_() diff --git a/src/gui/dialogs/editor/generate_map.hpp b/src/gui/dialogs/editor/generate_map.hpp index a82fe96eec79..6d76acb16003 100644 --- a/src/gui/dialogs/editor/generate_map.hpp +++ b/src/gui/dialogs/editor/generate_map.hpp @@ -35,14 +35,9 @@ namespace dialogs class editor_generate_map : public modal_dialog { public: - editor_generate_map(); + explicit editor_generate_map(std::vector& mg); - void set_map_generators(std::vector mg) - { - map_generators_ = mg; - } - - std::vector get_map_generators() + std::vector& get_map_generators() { return map_generators_; } @@ -67,7 +62,7 @@ class editor_generate_map : public modal_dialog void do_settings(); /** Available map generators */ - std::vector map_generators_; + std::vector& map_generators_; /** Last used map generator, must be in map_generators_ */ map_generator* last_map_generator_; diff --git a/src/tests/gui/test_gui2.cpp b/src/tests/gui/test_gui2.cpp index ef81f8a7b722..7c7963b15ed5 100644 --- a/src/tests/gui/test_gui2.cpp +++ b/src/tests/gui/test_gui2.cpp @@ -992,9 +992,6 @@ struct dialog_tester { editor_generate_map* create() { - editor_generate_map* result = new editor_generate_map(); - BOOST_REQUIRE_MESSAGE(result, "Failed to create a dialog."); - std::vector map_generators; for(const config &i : main_config.child_range("multiplayer")) { if(i["scenario_generation"] == "default") { @@ -1005,7 +1002,9 @@ struct dialog_tester } } } - result->set_map_generators(map_generators); + + editor_generate_map* result = new editor_generate_map(map_generators); + BOOST_REQUIRE_MESSAGE(result, "Failed to create a dialog."); return result; }