Moved file operations to front end

This commit is contained in:
David Marcec
2018-10-18 00:33:02 +11:00
parent 682c2c19f1
commit fc18ce68cc
3 changed files with 11 additions and 12 deletions

View File

@@ -2,7 +2,6 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include "common/file_util.h"
#include "common/logging/log.h" #include "common/logging/log.h"
#include "core/core.h" #include "core/core.h"
#include "core/hle/ipc_helpers.h" #include "core/hle/ipc_helpers.h"
@@ -344,15 +343,8 @@ void Module::Interface::CreateUserInterface(Kernel::HLERequestContext& ctx) {
rb.PushIpcInterface<IUser>(*this); rb.PushIpcInterface<IUser>(*this);
} }
void Module::Interface::LoadAmiibo(const std::string& filename) { void Module::Interface::LoadAmiibo(const std::vector<u8> amiibo) {
amiibo_buffer.clear(); amiibo_buffer = amiibo;
auto nfc_file = FileUtil::IOFile(filename, "rb");
if (!nfc_file.IsOpen()) {
return;
}
amiibo_buffer.resize(nfc_file.GetSize());
nfc_file.ReadBytes(amiibo_buffer.data(), amiibo_buffer.size());
nfc_file.Close();
nfc_tag_load->Signal(); nfc_tag_load->Signal();
} }

View File

@@ -18,7 +18,7 @@ public:
~Interface() override; ~Interface() override;
void CreateUserInterface(Kernel::HLERequestContext& ctx); void CreateUserInterface(Kernel::HLERequestContext& ctx);
void LoadAmiibo(const std::string& path); void LoadAmiibo(const std::vector<u8> amiibo);
const Kernel::SharedPtr<Kernel::Event>& GetNFCEvent() const; const Kernel::SharedPtr<Kernel::Event>& GetNFCEvent() const;
const std::vector<u8>& GetAmiiboBuffer() const; const std::vector<u8>& GetAmiiboBuffer() const;

View File

@@ -1294,7 +1294,14 @@ void GMainWindow::OnLoadAmiibo() {
Service::SM::ServiceManager& sm = system.ServiceManager(); Service::SM::ServiceManager& sm = system.ServiceManager();
auto nfc = sm.GetService<Service::NFP::Module::Interface>("nfp:user"); auto nfc = sm.GetService<Service::NFP::Module::Interface>("nfp:user");
if (nfc != nullptr) { if (nfc != nullptr) {
nfc->LoadAmiibo(filename.toStdString()); auto nfc_file = FileUtil::IOFile(filename.toStdString(), "rb");
if (!nfc_file.IsOpen()) {
return;
}
std::vector<u8> amiibo_buffer(nfc_file.GetSize());
nfc_file.ReadBytes(amiibo_buffer.data(), amiibo_buffer.size());
nfc_file.Close();
nfc->LoadAmiibo(amiibo_buffer);
} }
} }
} }