Added system for handling core errors in citra-qt.

This commit is contained in:
TheKoopaKingdom 2017-03-08 16:28:30 -05:00
parent e523c76cc8
commit 1ecb322daa
9 changed files with 121 additions and 26 deletions

View file

@ -5,6 +5,7 @@
#include "common/common_paths.h"
#include "common/file_util.h"
#include "common/logging/log.h"
#include "core/core.h"
#include "core/hle/applets/applet.h"
#include "core/hle/kernel/event.h"
#include "core/hle/kernel/mutex.h"
@ -74,6 +75,7 @@ void GetSharedFont(Service::Interface* self) {
LOG_ERROR(Service_APT, "shared font file missing - go dump it from your 3ds");
rb.Push<u32>(-1); // TODO: Find the right error code
rb.Skip(1 + 2, true);
Core::System::GetInstance().SetStatus(Core::System::ResultStatus::ErrorSharedFont);
return;
}
@ -279,8 +281,9 @@ void CancelParameter(Service::Interface* self) {
rb.Push(RESULT_SUCCESS); // No error
rb.Push(true); // Set to Success
LOG_WARNING(Service_APT, "(STUBBED) called check_sender=0x%08X, sender_appid=0x%08X, "
"check_receiver=0x%08X, receiver_appid=0x%08X",
LOG_WARNING(Service_APT,
"(STUBBED) called check_sender=0x%08X, sender_appid=0x%08X, "
"check_receiver=0x%08X, receiver_appid=0x%08X",
check_sender, sender_appid, check_receiver, receiver_appid);
}

View file

@ -10,6 +10,7 @@
#include "common/bit_field.h"
#include "common/common_types.h"
#include "common/logging/log.h"
#include "core/core.h"
#include "core/hle/result.h"
#include "core/hle/service/err_f.h"
@ -172,6 +173,7 @@ static void ThrowFatalError(Interface* self) {
const ErrInfo* errinfo = reinterpret_cast<ErrInfo*>(&cmd_buff[1]);
LOG_CRITICAL(Service_ERR, "Fatal error type: %s",
GetErrType(errinfo->errinfo_common.specifier).c_str());
Core::System::GetInstance().SetStatus(Core::System::ResultStatus::ErrorUnknown);
// Generic Info
LogGenericInfo(errinfo->errinfo_common);

View file

@ -8,6 +8,7 @@
#include "common/logging/log.h"
#include "common/scope_exit.h"
#include "common/string_util.h"
#include "core/core.h"
#include "core/file_sys/errors.h"
#include "core/hle/kernel/client_session.h"
#include "core/hle/result.h"
@ -132,6 +133,10 @@ static void OpenFileDirectly(Service::Interface* self) {
LOG_ERROR(Service_FS,
"failed to get a handle for archive archive_id=0x%08X archive_path=%s",
static_cast<u32>(archive_id), archive_path.DebugStr().c_str());
if (static_cast<u32>(archive_id) == 0x2345678A) {
Core::System::GetInstance().SetStatus(Core::System::ResultStatus::ErrorSystemFiles);
return;
}
cmd_buff[1] = archive_handle.Code().raw;
cmd_buff[3] = 0;
return;