mirror of
https://github.com/wesnoth/wesnoth
synced 2025-04-22 03:17:20 +00:00
Clean up a few more cases of raw pointer management
This commit is contained in:
parent
491c236113
commit
38a6508cf4
@ -59,7 +59,7 @@ namespace event
|
||||
|
||||
/***** Static data. *****/
|
||||
static std::unique_ptr<class sdl_event_handler> handler_ = nullptr;
|
||||
static events::event_context* event_context = nullptr;
|
||||
static std::unique_ptr<events::event_context> event_context = nullptr;
|
||||
|
||||
#ifdef MAIN_EVENT_HANDLER
|
||||
static unsigned draw_interval = 0;
|
||||
@ -532,7 +532,7 @@ void sdl_event_handler::connect(dispatcher* dispatcher)
|
||||
|
||||
if(dispatchers_.empty()) {
|
||||
LOG_GUI_E << "creating new dispatcher event context";
|
||||
event_context = new events::event_context();
|
||||
event_context = std::make_unique<events::event_context>();
|
||||
join();
|
||||
}
|
||||
|
||||
@ -567,7 +567,6 @@ void sdl_event_handler::disconnect(dispatcher* disp)
|
||||
if(dispatchers_.empty()) {
|
||||
LOG_GUI_E << "deleting unused dispatcher event context";
|
||||
leave();
|
||||
delete event_context;
|
||||
event_context = nullptr;
|
||||
}
|
||||
}
|
||||
|
@ -1157,7 +1157,7 @@ static_assert(false, "GUI2/Generator: GENERATE_BODY already defined!");
|
||||
}
|
||||
#endif
|
||||
|
||||
std::unique_ptr<generator_base> generator_base::build(
|
||||
std::unique_ptr<generator_base> generator_base::build(
|
||||
const bool has_minimum, const bool has_maximum, const placement placement, const bool select)
|
||||
{
|
||||
std::unique_ptr<generator_base> result = nullptr;
|
||||
@ -1171,27 +1171,22 @@ namespace {
|
||||
|
||||
void pointer_test()
|
||||
{
|
||||
generator_base *a = generator_base::build(
|
||||
auto a = generator_base::build(
|
||||
true, true, generator_base::horizontal_list, true);
|
||||
|
||||
generator_base *b = generator_base::build(
|
||||
auto b = generator_base::build(
|
||||
true, false, generator_base::horizontal_list, true);
|
||||
|
||||
generator_base *c = generator_base::build(
|
||||
auto c = generator_base::build(
|
||||
false, true, generator_base::horizontal_list, true);
|
||||
|
||||
generator_base *d = generator_base::build(
|
||||
auto d = generator_base::build(
|
||||
false, false, generator_base::horizontal_list, true);
|
||||
|
||||
a->clear();
|
||||
b->clear();
|
||||
c->clear();
|
||||
d->clear();
|
||||
|
||||
delete a;
|
||||
delete b;
|
||||
delete c;
|
||||
delete d;
|
||||
}
|
||||
|
||||
void direct_test()
|
||||
|
@ -409,12 +409,6 @@ window::~window()
|
||||
if(!hidden_) {
|
||||
queue_redraw();
|
||||
}
|
||||
|
||||
#ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
|
||||
|
||||
delete debug_layout_;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
window* window::window_instance(const unsigned handle)
|
||||
|
@ -668,7 +668,7 @@ private:
|
||||
void finalize(const builder_grid& content_grid);
|
||||
|
||||
#ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
|
||||
debug_layout_graph* debug_layout_;
|
||||
std::unique_ptr<debug_layout_graph> debug_layout_;
|
||||
|
||||
public:
|
||||
/** wrapper for debug_layout_graph::generate_dot_file. */
|
||||
|
@ -118,8 +118,10 @@ void teleport_group::get_teleport_pair(
|
||||
const filter_context * fc = resources::filter_con;
|
||||
assert(fc);
|
||||
|
||||
utils::optional<ignore_units_filter_context> ignore_context;
|
||||
if (ignore_units) {
|
||||
fc = new ignore_units_filter_context(*resources::filter_con);
|
||||
ignore_context.emplace(*resources::filter_con);
|
||||
fc = &ignore_context.value();
|
||||
}
|
||||
|
||||
vconfig filter(cfg_.child_or_empty("filter"), true);
|
||||
@ -133,10 +135,6 @@ void teleport_group::get_teleport_pair(
|
||||
terrain_filter target_filter(target, fc, false);
|
||||
target_filter.get_locations(reversed_ ? loc_pair.first : loc_pair.second, u);
|
||||
}
|
||||
|
||||
if (ignore_units) {
|
||||
delete fc;
|
||||
}
|
||||
}
|
||||
|
||||
const std::string& teleport_group::get_teleport_id() const {
|
||||
|
@ -23,20 +23,19 @@ persist_manager::persist_manager()
|
||||
|
||||
persist_manager::~persist_manager() {
|
||||
cancel_transaction();
|
||||
for (context_map::iterator i = contexts_.begin(); i != contexts_.end(); ++i)
|
||||
delete (i->second);
|
||||
}
|
||||
|
||||
persist_context &persist_manager::get_context(const std::string &ns)
|
||||
{
|
||||
persist_context::name_space name(ns,true);
|
||||
std::string key(name.root_);
|
||||
context_map::iterator i = contexts_.find(key);
|
||||
if (i == contexts_.end()) {
|
||||
contexts_[key] = new persist_file_context(key);
|
||||
if (in_transaction_) contexts_[key]->start_transaction();
|
||||
context_map::iterator iter = contexts_.find(key);
|
||||
if (iter == contexts_.end()) {
|
||||
auto pfc = std::make_unique<persist_file_context>(key);
|
||||
if (in_transaction_) pfc->start_transaction();
|
||||
std::tie(iter, std::ignore) = contexts_.emplace(key, std::move(pfc));
|
||||
}
|
||||
persist_context *ret = contexts_[key];
|
||||
auto& ret = iter->second;
|
||||
if (ret->get_node() != ns)
|
||||
ret->set_node(name.descendants_);
|
||||
return *ret;
|
||||
|
@ -16,13 +16,14 @@
|
||||
#pragma once
|
||||
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
class persist_context;
|
||||
|
||||
class persist_manager {
|
||||
protected:
|
||||
typedef std::map<std::string,persist_context *> context_map;
|
||||
typedef std::map<std::string, std::unique_ptr<persist_context>> context_map;
|
||||
|
||||
bool in_transaction_;
|
||||
context_map contexts_;
|
||||
|
Loading…
x
Reference in New Issue
Block a user