feat: overhaul editor console panel and diagnostics
This commit is contained in:
@@ -21,13 +21,18 @@ EditorConsoleSink::~EditorConsoleSink() {
|
||||
}
|
||||
|
||||
void EditorConsoleSink::Log(const LogEntry& entry) {
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
if (m_logs.size() >= MAX_LOGS) {
|
||||
m_logs.erase(m_logs.begin());
|
||||
std::function<void()> callback;
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
if (m_logs.size() >= MAX_LOGS) {
|
||||
m_logs.erase(m_logs.begin());
|
||||
}
|
||||
m_logs.push_back(EditorConsoleRecord{ m_nextSerial++, entry });
|
||||
++m_revision;
|
||||
callback = m_callback;
|
||||
}
|
||||
m_logs.push_back(entry);
|
||||
if (m_callback) {
|
||||
m_callback();
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,16 +40,43 @@ void EditorConsoleSink::Flush() {
|
||||
}
|
||||
|
||||
std::vector<LogEntry> EditorConsoleSink::GetLogs() const {
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
std::vector<LogEntry> logs;
|
||||
logs.reserve(m_logs.size());
|
||||
for (const EditorConsoleRecord& record : m_logs) {
|
||||
logs.push_back(record.entry);
|
||||
}
|
||||
return logs;
|
||||
}
|
||||
|
||||
std::vector<EditorConsoleRecord> EditorConsoleSink::GetRecords() const {
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
return m_logs;
|
||||
}
|
||||
|
||||
void EditorConsoleSink::Clear() {
|
||||
uint64_t EditorConsoleSink::GetRevision() const {
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
m_logs.clear();
|
||||
return m_revision;
|
||||
}
|
||||
|
||||
void EditorConsoleSink::Clear() {
|
||||
std::function<void()> callback;
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
if (m_logs.empty()) {
|
||||
return;
|
||||
}
|
||||
m_logs.clear();
|
||||
++m_revision;
|
||||
callback = m_callback;
|
||||
}
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
|
||||
void EditorConsoleSink::SetCallback(std::function<void()> callback) {
|
||||
std::lock_guard<std::mutex> lock(m_mutex);
|
||||
m_callback = std::move(callback);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user