diff options
Diffstat (limited to 'src/core/hle/applets/swkbd.cpp')
| -rw-r--r-- | src/core/hle/applets/swkbd.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/core/hle/applets/swkbd.cpp b/src/core/hle/applets/swkbd.cpp index 1db6b5a17..87238aa1c 100644 --- a/src/core/hle/applets/swkbd.cpp +++ b/src/core/hle/applets/swkbd.cpp | |||
| @@ -24,13 +24,6 @@ | |||
| 24 | namespace HLE { | 24 | namespace HLE { |
| 25 | namespace Applets { | 25 | namespace Applets { |
| 26 | 26 | ||
| 27 | SoftwareKeyboard::SoftwareKeyboard(Service::APT::AppletId id) : Applet(id), started(false) { | ||
| 28 | // Create the SharedMemory that will hold the framebuffer data | ||
| 29 | // TODO(Subv): What size should we use here? | ||
| 30 | using Kernel::MemoryPermission; | ||
| 31 | framebuffer_memory = Kernel::SharedMemory::Create(0x1000, MemoryPermission::ReadWrite, MemoryPermission::ReadWrite, "SoftwareKeyboard Memory"); | ||
| 32 | } | ||
| 33 | |||
| 34 | ResultCode SoftwareKeyboard::ReceiveParameter(Service::APT::MessageParameter const& parameter) { | 27 | ResultCode SoftwareKeyboard::ReceiveParameter(Service::APT::MessageParameter const& parameter) { |
| 35 | if (parameter.signal != static_cast<u32>(Service::APT::SignalType::LibAppJustStarted)) { | 28 | if (parameter.signal != static_cast<u32>(Service::APT::SignalType::LibAppJustStarted)) { |
| 36 | LOG_ERROR(Service_APT, "unsupported signal %u", parameter.signal); | 29 | LOG_ERROR(Service_APT, "unsupported signal %u", parameter.signal); |
| @@ -39,8 +32,19 @@ ResultCode SoftwareKeyboard::ReceiveParameter(Service::APT::MessageParameter con | |||
| 39 | return ResultCode(-1); | 32 | return ResultCode(-1); |
| 40 | } | 33 | } |
| 41 | 34 | ||
| 35 | // The LibAppJustStarted message contains a buffer with the size of the framebuffer shared memory. | ||
| 36 | // Create the SharedMemory that will hold the framebuffer data | ||
| 37 | Service::APT::CaptureBufferInfo capture_info; | ||
| 38 | ASSERT(sizeof(capture_info) == parameter.buffer_size); | ||
| 39 | |||
| 40 | memcpy(&capture_info, parameter.data, sizeof(capture_info)); | ||
| 41 | |||
| 42 | using Kernel::MemoryPermission; | ||
| 43 | framebuffer_memory = Kernel::SharedMemory::Create(capture_info.size, MemoryPermission::ReadWrite, | ||
| 44 | MemoryPermission::ReadWrite, "SoftwareKeyboard Memory"); | ||
| 45 | |||
| 46 | // Send the response message with the newly created SharedMemory | ||
| 42 | Service::APT::MessageParameter result; | 47 | Service::APT::MessageParameter result; |
| 43 | // The buffer passed in parameter contains the data returned by GSPGPU::ImportDisplayCaptureInfo | ||
| 44 | result.signal = static_cast<u32>(Service::APT::SignalType::LibAppFinished); | 48 | result.signal = static_cast<u32>(Service::APT::SignalType::LibAppFinished); |
| 45 | result.data = nullptr; | 49 | result.data = nullptr; |
| 46 | result.buffer_size = 0; | 50 | result.buffer_size = 0; |