mirror of
https://github.com/yuzu-emu/yuzu-android
synced 2025-08-08 20:02:34 -07:00
applet: Use std::queue instead of std::vector for storage stack
This commit is contained in:
@@ -2,7 +2,10 @@
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include <cstring>
|
||||
#include "common/assert.h"
|
||||
#include "core/frontend/applets/software_keyboard.h"
|
||||
#include "core/hle/service/am/am.h"
|
||||
#include "core/hle/service/am/applets/applets.h"
|
||||
|
||||
namespace Service::AM::Applets {
|
||||
@@ -11,8 +14,15 @@ Applet::Applet() = default;
|
||||
|
||||
Applet::~Applet() = default;
|
||||
|
||||
void Applet::Initialize(std::vector<std::shared_ptr<IStorage>> storage) {
|
||||
void Applet::Initialize(std::queue<std::shared_ptr<IStorage>> storage) {
|
||||
storage_stack = std::move(storage);
|
||||
|
||||
const auto common_data = storage_stack.front()->GetData();
|
||||
storage_stack.pop();
|
||||
|
||||
ASSERT(common_data.size() >= sizeof(CommonArguments));
|
||||
std::memcpy(&common_args, common_data.data(), sizeof(CommonArguments));
|
||||
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
|
@@ -6,7 +6,7 @@
|
||||
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
#include <queue>
|
||||
#include "common/swap.h"
|
||||
|
||||
union ResultCode;
|
||||
@@ -29,7 +29,7 @@ public:
|
||||
Applet();
|
||||
virtual ~Applet();
|
||||
|
||||
virtual void Initialize(std::vector<std::shared_ptr<IStorage>> storage);
|
||||
virtual void Initialize(std::queue<std::shared_ptr<IStorage>> storage);
|
||||
|
||||
virtual bool TransactionComplete() const = 0;
|
||||
virtual ResultCode GetStatus() const = 0;
|
||||
@@ -53,7 +53,8 @@ protected:
|
||||
};
|
||||
static_assert(sizeof(CommonArguments) == 0x20, "CommonArguments has incorrect size.");
|
||||
|
||||
std::vector<std::shared_ptr<IStorage>> storage_stack;
|
||||
CommonArguments common_args;
|
||||
std::queue<std::shared_ptr<IStorage>> storage_stack;
|
||||
bool initialized = false;
|
||||
};
|
||||
|
||||
|
@@ -42,7 +42,7 @@ SoftwareKeyboard::SoftwareKeyboard() = default;
|
||||
|
||||
SoftwareKeyboard::~SoftwareKeyboard() = default;
|
||||
|
||||
void SoftwareKeyboard::Initialize(std::vector<std::shared_ptr<IStorage>> storage_) {
|
||||
void SoftwareKeyboard::Initialize(std::queue<std::shared_ptr<IStorage>> storage_) {
|
||||
complete = false;
|
||||
initial_text.clear();
|
||||
final_data.clear();
|
||||
@@ -50,11 +50,14 @@ void SoftwareKeyboard::Initialize(std::vector<std::shared_ptr<IStorage>> storage
|
||||
Applet::Initialize(std::move(storage_));
|
||||
|
||||
ASSERT(storage_stack.size() >= 2);
|
||||
const auto& keyboard_config = storage_stack[1]->GetData();
|
||||
const auto& keyboard_config = storage_stack.front()->GetData();
|
||||
storage_stack.pop();
|
||||
|
||||
ASSERT(keyboard_config.size() >= sizeof(KeyboardConfig));
|
||||
std::memcpy(&config, keyboard_config.data(), sizeof(KeyboardConfig));
|
||||
|
||||
const auto& work_buffer = storage_stack[2]->GetData();
|
||||
const auto& work_buffer = storage_stack.front()->GetData();
|
||||
storage_stack.pop();
|
||||
|
||||
if (config.initial_string_size == 0)
|
||||
return;
|
||||
|
@@ -49,7 +49,7 @@ public:
|
||||
SoftwareKeyboard();
|
||||
~SoftwareKeyboard() override;
|
||||
|
||||
void Initialize(std::vector<std::shared_ptr<IStorage>> storage) override;
|
||||
void Initialize(std::queue<std::shared_ptr<IStorage>> storage) override;
|
||||
|
||||
bool TransactionComplete() const override;
|
||||
ResultCode GetStatus() const override;
|
||||
|
Reference in New Issue
Block a user