citra-emu
/
citra-canary
Archived
1
0
Fork 0

Services: Implemented Y2R_U::GetTransferEndEvent

Aero Porter was throwing an "Invalid Handle" fatal error without this.
This commit is contained in:
Subv 2015-02-24 08:28:36 -05:00
parent 3700263f71
commit ef66feaeba
1 changed files with 18 additions and 1 deletions

View File

@ -11,6 +11,8 @@
namespace Y2R_U { namespace Y2R_U {
static Kernel::SharedPtr<Kernel::Event> completion_event = 0;
/** /**
* Y2R_U::IsBusyConversion service function * Y2R_U::IsBusyConversion service function
* Outputs: * Outputs:
@ -26,13 +28,26 @@ static void IsBusyConversion(Service::Interface* self) {
LOG_WARNING(Service, "(STUBBED) called"); LOG_WARNING(Service, "(STUBBED) called");
} }
/**
* Y2R_U::GetTransferEndEvent service function
* Outputs:
* 1 : Result of function, 0 on success, otherwise error code
* 3 : The handle of the completion event
*/
static void GetTransferEndEvent(Service::Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
cmd_buff[1] = RESULT_SUCCESS.raw;
cmd_buff[3] = Kernel::g_handle_table.Create(completion_event).MoveFrom();
}
const Interface::FunctionInfo FunctionTable[] = { const Interface::FunctionInfo FunctionTable[] = {
{0x00010040, nullptr, "SetInputFormat"}, {0x00010040, nullptr, "SetInputFormat"},
{0x00030040, nullptr, "SetOutputFormat"}, {0x00030040, nullptr, "SetOutputFormat"},
{0x00050040, nullptr, "SetRotation"}, {0x00050040, nullptr, "SetRotation"},
{0x00070040, nullptr, "SetBlockAlignment"}, {0x00070040, nullptr, "SetBlockAlignment"},
{0x000D0040, nullptr, "SetTransferEndInterrupt"}, {0x000D0040, nullptr, "SetTransferEndInterrupt"},
{0x000F0000, nullptr, "GetTransferEndEvent"}, {0x000F0000, GetTransferEndEvent, "GetTransferEndEvent"},
{0x00100102, nullptr, "SetSendingY"}, {0x00100102, nullptr, "SetSendingY"},
{0x00110102, nullptr, "SetSendingU"}, {0x00110102, nullptr, "SetSendingU"},
{0x00120102, nullptr, "SetSendingV"}, {0x00120102, nullptr, "SetSendingV"},
@ -53,6 +68,8 @@ const Interface::FunctionInfo FunctionTable[] = {
// Interface class // Interface class
Interface::Interface() { Interface::Interface() {
completion_event = Kernel::Event::Create(RESETTYPE_ONESHOT, "Y2R:Completed");
Register(FunctionTable); Register(FunctionTable);
} }