summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/am/applets/applets.cpp
diff options
context:
space:
mode:
authorZach Hilman <zachhilman@gmail.com>2019-05-18 03:47:07 +0200
committerZach Hilman <zachhilman@gmail.com>2019-05-25 22:09:20 +0200
commitbdc47693f154ffe41f16a452f65d9bd609a72683 (patch)
treec42661106b8c1d0b9efcc54e9cd55ba697dbeb3e /src/core/hle/service/am/applets/applets.cpp
parentsvc: Save report on call to svcBreak (diff)
downloadyuzu-bdc47693f154ffe41f16a452f65d9bd609a72683.tar
yuzu-bdc47693f154ffe41f16a452f65d9bd609a72683.tar.gz
yuzu-bdc47693f154ffe41f16a452f65d9bd609a72683.tar.bz2
yuzu-bdc47693f154ffe41f16a452f65d9bd609a72683.tar.lz
yuzu-bdc47693f154ffe41f16a452f65d9bd609a72683.tar.xz
yuzu-bdc47693f154ffe41f16a452f65d9bd609a72683.tar.zst
yuzu-bdc47693f154ffe41f16a452f65d9bd609a72683.zip
Diffstat (limited to 'src/core/hle/service/am/applets/applets.cpp')
-rw-r--r--src/core/hle/service/am/applets/applets.cpp33
1 files changed, 24 insertions, 9 deletions
diff --git a/src/core/hle/service/am/applets/applets.cpp b/src/core/hle/service/am/applets/applets.cpp
index e812c66e9..2a945bc7b 100644
--- a/src/core/hle/service/am/applets/applets.cpp
+++ b/src/core/hle/service/am/applets/applets.cpp
@@ -35,12 +35,27 @@ AppletDataBroker::AppletDataBroker() {
AppletDataBroker::~AppletDataBroker() = default;
+AppletDataBroker::RawChannelData AppletDataBroker::PeekDataToAppletForDebug() const {
+ std::vector<std::vector<u8>> out_normal;
+ std::vector<std::vector<u8>> out_interactive;
+
+ for (const auto& storage : in_channel) {
+ out_normal.push_back(storage->GetData());
+ }
+
+ for (const auto& storage : in_interactive_channel) {
+ out_interactive.push_back(storage->GetData());
+ }
+
+ return {out_normal, out_interactive};
+}
+
std::unique_ptr<IStorage> AppletDataBroker::PopNormalDataToGame() {
if (out_channel.empty())
return nullptr;
auto out = std::move(out_channel.front());
- out_channel.pop();
+ out_channel.pop_front();
return out;
}
@@ -49,7 +64,7 @@ std::unique_ptr<IStorage> AppletDataBroker::PopNormalDataToApplet() {
return nullptr;
auto out = std::move(in_channel.front());
- in_channel.pop();
+ in_channel.pop_front();
return out;
}
@@ -58,7 +73,7 @@ std::unique_ptr<IStorage> AppletDataBroker::PopInteractiveDataToGame() {
return nullptr;
auto out = std::move(out_interactive_channel.front());
- out_interactive_channel.pop();
+ out_interactive_channel.pop_front();
return out;
}
@@ -67,25 +82,25 @@ std::unique_ptr<IStorage> AppletDataBroker::PopInteractiveDataToApplet() {
return nullptr;
auto out = std::move(in_interactive_channel.front());
- in_interactive_channel.pop();
+ in_interactive_channel.pop_front();
return out;
}
void AppletDataBroker::PushNormalDataFromGame(IStorage storage) {
- in_channel.push(std::make_unique<IStorage>(storage));
+ in_channel.push_back(std::make_unique<IStorage>(storage));
}
void AppletDataBroker::PushNormalDataFromApplet(IStorage storage) {
- out_channel.push(std::make_unique<IStorage>(storage));
+ out_channel.push_back(std::make_unique<IStorage>(storage));
pop_out_data_event.writable->Signal();
}
void AppletDataBroker::PushInteractiveDataFromGame(IStorage storage) {
- in_interactive_channel.push(std::make_unique<IStorage>(storage));
+ in_interactive_channel.push_back(std::make_unique<IStorage>(storage));
}
void AppletDataBroker::PushInteractiveDataFromApplet(IStorage storage) {
- out_interactive_channel.push(std::make_unique<IStorage>(storage));
+ out_interactive_channel.push_back(std::make_unique<IStorage>(storage));
pop_interactive_out_data_event.writable->Signal();
}
@@ -189,7 +204,7 @@ std::shared_ptr<Applet> AppletManager::GetApplet(AppletId id) const {
UNIMPLEMENTED_MSG(
"No backend implementation exists for applet_id={:02X}! Falling back to stub applet.",
static_cast<u8>(id));
- return std::make_shared<StubApplet>();
+ return std::make_shared<StubApplet>(id);
}
}