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