|
|
|
@ -9,8 +9,10 @@ |
|
|
|
#include "common/string_util.h"
|
|
|
|
#include "core/core.h"
|
|
|
|
#include "core/frontend/applets/error.h"
|
|
|
|
#include "core/hle/kernel/process.h"
|
|
|
|
#include "core/hle/service/am/am.h"
|
|
|
|
#include "core/hle/service/am/applets/error.h"
|
|
|
|
#include "core/reporter.h"
|
|
|
|
|
|
|
|
namespace Service::AM::Applets { |
|
|
|
|
|
|
|
@ -143,9 +145,12 @@ void Error::Execute() { |
|
|
|
} |
|
|
|
|
|
|
|
const auto callback = [this] { DisplayCompleted(); }; |
|
|
|
const auto title_id = Core::CurrentProcess()->GetTitleID(); |
|
|
|
const auto& reporter{Core::System::GetInstance().GetReporter()}; |
|
|
|
|
|
|
|
switch (mode) { |
|
|
|
case ErrorAppletMode::ShowError: |
|
|
|
reporter.SaveErrorReport(title_id, error_code); |
|
|
|
frontend.ShowError(error_code, callback); |
|
|
|
break; |
|
|
|
case ErrorAppletMode::ShowSystemError: |
|
|
|
@ -156,14 +161,18 @@ void Error::Execute() { |
|
|
|
const auto& detail_text = |
|
|
|
system ? args->system_error.detail_text : args->application_error.detail_text; |
|
|
|
|
|
|
|
frontend.ShowCustomErrorText( |
|
|
|
error_code, |
|
|
|
Common::StringFromFixedZeroTerminatedBuffer(main_text.data(), main_text.size()), |
|
|
|
Common::StringFromFixedZeroTerminatedBuffer(detail_text.data(), detail_text.size()), |
|
|
|
callback); |
|
|
|
const auto main_text_string = |
|
|
|
Common::StringFromFixedZeroTerminatedBuffer(main_text.data(), main_text.size()); |
|
|
|
const auto detail_text_string = |
|
|
|
Common::StringFromFixedZeroTerminatedBuffer(detail_text.data(), detail_text.size()); |
|
|
|
|
|
|
|
reporter.SaveErrorReport(title_id, error_code, main_text_string, detail_text_string); |
|
|
|
frontend.ShowCustomErrorText(error_code, main_text_string, detail_text_string, callback); |
|
|
|
break; |
|
|
|
} |
|
|
|
case ErrorAppletMode::ShowErrorRecord: |
|
|
|
reporter.SaveErrorReport(title_id, error_code, |
|
|
|
fmt::format("{:016X}", args->error_record.posix_time)); |
|
|
|
frontend.ShowErrorWithTimestamp( |
|
|
|
error_code, std::chrono::seconds{args->error_record.posix_time}, callback); |
|
|
|
break; |
|
|
|
|