This commit is contained in:
german77
2022-07-14 22:34:50 -05:00
committed by Narr the Reg
parent e6d09620e4
commit d01d998a17
3 changed files with 26 additions and 0 deletions

View File

@@ -543,6 +543,7 @@ struct System::Impl {
ExecuteProgramCallback execute_program_callback; ExecuteProgramCallback execute_program_callback;
ExitCallback exit_callback; ExitCallback exit_callback;
GameLogCallback game_log_callback;
std::array<u64, Core::Hardware::NUM_CPU_CORES> dynarmic_ticks{}; std::array<u64, Core::Hardware::NUM_CPU_CORES> dynarmic_ticks{};
std::array<MicroProfileToken, Core::Hardware::NUM_CPU_CORES> microprofile_cpu{}; std::array<MicroProfileToken, Core::Hardware::NUM_CPU_CORES> microprofile_cpu{};
@@ -1011,6 +1012,18 @@ void System::RegisterExitCallback(ExitCallback&& callback) {
impl->exit_callback = std::move(callback); impl->exit_callback = std::move(callback);
} }
void System::RegisterGameLogCallback(GameLogCallback&& callback) {
impl->game_log_callback = std::move(callback);
}
void System::AppendGameMessage(std::string& text) {
if (impl->game_log_callback) {
impl->game_log_callback(text);
} else {
LOG_CRITICAL(Core, "game_log_callback must be initialized by the frontend");
}
}
void System::Exit() { void System::Exit() {
if (impl->exit_callback) { if (impl->exit_callback) {
impl->exit_callback(); impl->exit_callback();

View File

@@ -462,6 +462,18 @@ public:
*/ */
void RegisterExitCallback(ExitCallback&& callback); void RegisterExitCallback(ExitCallback&& callback);
/// Type used for the frontend to designate a callback for System to display log output.
using GameLogCallback = std::function<void(std::string)>;
/**
* Registers a callback from the frontend for System to display log output.
* @param callback Callback from the frontend to display log output.
*/
void RegisterGameLogCallback(GameLogCallback&& callback);
/// Inserts a new entry on the game log ouput window
void AppendGameMessage(std::string& text);
/// Instructs the frontend to exit the application. /// Instructs the frontend to exit the application.
void Exit(); void Exit();

View File

@@ -276,6 +276,7 @@ private:
if (text_log) { if (text_log) {
output_log += fmt::format("Log Text: {}\n", *text_log); output_log += fmt::format("Log Text: {}\n", *text_log);
system.AppendGameMessage(*text_log);
} }
LOG_DEBUG(Service_LM, "LogManager {} ({}):\n{}", NameOf(entry.severity), LOG_DEBUG(Service_LM, "LogManager {} ({}):\n{}", NameOf(entry.severity),
DestinationToString(destination), output_log); DestinationToString(destination), output_log);