mirror of
https://github.com/yuzu-emu/yuzu-android.git
synced 2025-06-21 19:27:54 -05:00
Kernel: Convert SharedMemory to not use Handles
This commit is contained in:
@ -12,7 +12,7 @@
|
||||
namespace Service {
|
||||
namespace HID {
|
||||
|
||||
Handle g_shared_mem = 0;
|
||||
Kernel::SharedPtr<Kernel::SharedMemory> g_shared_mem = nullptr;
|
||||
|
||||
Handle g_event_pad_or_touch_1 = 0;
|
||||
Handle g_event_pad_or_touch_2 = 0;
|
||||
@ -30,7 +30,7 @@ static s16 next_circle_y = 0;
|
||||
* Gets a pointer to the PadData structure inside HID shared memory
|
||||
*/
|
||||
static inline PadData* GetPadData() {
|
||||
return reinterpret_cast<PadData*>(Kernel::GetSharedMemoryPointer(g_shared_mem, 0).ValueOr(nullptr));
|
||||
return reinterpret_cast<PadData*>(g_shared_mem->GetPointer().ValueOr(nullptr));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -120,7 +120,7 @@ void PadUpdateComplete() {
|
||||
}
|
||||
|
||||
void HIDInit() {
|
||||
g_shared_mem = Kernel::CreateSharedMemory("HID:SharedMem"); // Create shared memory object
|
||||
g_shared_mem = Kernel::SharedMemory::Create("HID:SharedMem").MoveFrom();
|
||||
|
||||
// Create event handles
|
||||
g_event_pad_or_touch_1 = Kernel::CreateEvent(RESETTYPE_ONESHOT, "HID:EventPadOrTouch1");
|
||||
|
@ -9,11 +9,15 @@
|
||||
#include "core/hle/kernel/kernel.h"
|
||||
#include "common/bit_field.h"
|
||||
|
||||
namespace Kernel {
|
||||
class SharedMemory;
|
||||
}
|
||||
|
||||
namespace Service {
|
||||
namespace HID {
|
||||
|
||||
// Handle to shared memory region designated to HID_User service
|
||||
extern Handle g_shared_mem;
|
||||
extern Kernel::SharedPtr<Kernel::SharedMemory> g_shared_mem;
|
||||
|
||||
// Event handles
|
||||
extern Handle g_event_pad_or_touch_1;
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include "common/log.h"
|
||||
|
||||
#include "core/hle/hle.h"
|
||||
#include "core/hle/kernel/shared_memory.h"
|
||||
#include "core/hle/service/hid/hid.h"
|
||||
#include "hid_user.h"
|
||||
|
||||
@ -46,7 +47,8 @@ void GetIPCHandles(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
cmd_buff[1] = 0; // No error
|
||||
cmd_buff[3] = Service::HID::g_shared_mem;
|
||||
// TODO(yuriks): Return error from SendSyncRequest is this fails (part of IPC marshalling)
|
||||
cmd_buff[3] = Kernel::g_handle_table.Create(Service::HID::g_shared_mem).MoveFrom();
|
||||
cmd_buff[4] = Service::HID::g_event_pad_or_touch_1;
|
||||
cmd_buff[5] = Service::HID::g_event_pad_or_touch_2;
|
||||
cmd_buff[6] = Service::HID::g_event_accelerometer;
|
||||
|
Reference in New Issue
Block a user