summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Logging/LogManager.cpp
diff options
context:
space:
mode:
authorJordan Woyak <jordan.woyak@gmail.com>2025-05-02 15:24:34 -0500
committerGitHub <noreply@github.com>2025-05-02 15:24:34 -0500
commit63572f15fc92363307914614ec5ad409570f8f50 (patch)
tree3f9635ba30b0802304672ff54ebf2cd9caaa363a /Source/Core/Common/Logging/LogManager.cpp
parent6515807685c608ac97ace6e0747b0a2529e9c917 (diff)
parentc8be8197118899c065d195c168956b8fa0e76d56 (diff)
Merge pull request #13620 from JosJuice/logmanager-cleanup
LogManager: Stop using manual memory management
Diffstat (limited to 'Source/Core/Common/Logging/LogManager.cpp')
-rw-r--r--Source/Core/Common/Logging/LogManager.cpp25
1 files changed, 10 insertions, 15 deletions
diff --git a/Source/Core/Common/Logging/LogManager.cpp b/Source/Core/Common/Logging/LogManager.cpp
index 283bd436e0..d0117ad07f 100644
--- a/Source/Core/Common/Logging/LogManager.cpp
+++ b/Source/Core/Common/Logging/LogManager.cpp
@@ -8,6 +8,7 @@
#include <cstdarg>
#include <cstring>
#include <locale>
+#include <memory>
#include <mutex>
#include <ostream>
#include <string>
@@ -151,8 +152,8 @@ LogManager::LogManager()
m_log[LogType::WII_IPC] = {"WII_IPC", "WII IPC"};
RegisterListener(LogListener::FILE_LISTENER,
- new FileLogListener(File::GetUserPath(F_MAINLOG_IDX)));
- RegisterListener(LogListener::CONSOLE_LISTENER, new ConsoleListener());
+ std::make_unique<FileLogListener>(File::GetUserPath(F_MAINLOG_IDX)));
+ RegisterListener(LogListener::CONSOLE_LISTENER, std::make_unique<ConsoleListener>());
// Set up log listeners
LogLevel verbosity = Config::Get(LOGGER_VERBOSITY);
@@ -171,12 +172,7 @@ LogManager::LogManager()
m_path_cutoff_point = DeterminePathCutOffPoint();
}
-LogManager::~LogManager()
-{
- // The log window listener pointer is owned by the GUI code.
- delete m_listeners[LogListener::CONSOLE_LISTENER];
- delete m_listeners[LogListener::FILE_LISTENER];
-}
+LogManager::~LogManager() = default;
void LogManager::SaveSettings()
{
@@ -273,9 +269,9 @@ const char* LogManager::GetFullName(LogType type) const
return m_log[type].m_full_name;
}
-void LogManager::RegisterListener(LogListener::LISTENER id, LogListener* listener)
+void LogManager::RegisterListener(LogListener::LISTENER id, std::unique_ptr<LogListener> listener)
{
- m_listeners[id] = listener;
+ m_listeners[id] = std::move(listener);
}
void LogManager::EnableListener(LogListener::LISTENER id, bool enable)
@@ -289,23 +285,22 @@ bool LogManager::IsListenerEnabled(LogListener::LISTENER id) const
}
// Singleton. Ugh.
-static LogManager* s_log_manager;
+static std::unique_ptr<LogManager> s_log_manager;
LogManager* LogManager::GetInstance()
{
- return s_log_manager;
+ return s_log_manager.get();
}
void LogManager::Init()
{
- s_log_manager = new LogManager();
+ s_log_manager = std::unique_ptr<LogManager>(new LogManager());
}
void LogManager::Shutdown()
{
if (s_log_manager)
s_log_manager->SaveSettings();
- delete s_log_manager;
- s_log_manager = nullptr;
+ s_log_manager.reset();
}
} // namespace Common::Log