1
0
Fork 0
forked from suyu/suyu

- renamed NewHandle to CreateHandle

- updated CreateHandle/DeleteHandle to use KernelObject's
This commit is contained in:
bunnei 2014-05-18 22:09:08 -04:00
parent 16d55842c5
commit 112904b832
2 changed files with 8 additions and 8 deletions

View file

@ -27,7 +27,7 @@ union GX_CmdBufferHeader {
// <=15 when writing a command to shared memory. This is incremented by the application when // <=15 when writing a command to shared memory. This is incremented by the application when
// writing a command to shared memory, after increasing this value TriggerCmdReqQueue is only // writing a command to shared memory, after increasing this value TriggerCmdReqQueue is only
// used if this field is value 1. // used if this field is value 1.
BitField<8,8,u32> number_commands; BitField<8,8,u32> number_commands;
}; };
@ -101,9 +101,7 @@ void RegisterInterruptRelayQueue(Service::Interface* self) {
u32* cmd_buff = Service::GetCommandBuffer(); u32* cmd_buff = Service::GetCommandBuffer();
u32 flags = cmd_buff[1]; u32 flags = cmd_buff[1];
u32 event_handle = cmd_buff[3]; // TODO(bunnei): Implement event handling u32 event_handle = cmd_buff[3]; // TODO(bunnei): Implement event handling
cmd_buff[2] = g_thread_id; // ThreadID cmd_buff[2] = g_thread_id; // ThreadID
cmd_buff[4] = self->NewHandle();
} }
/// This triggers handling of the GX command written to the command buffer in shared memory. /// This triggers handling of the GX command written to the command buffer in shared memory.

View file

@ -63,14 +63,16 @@ public:
} }
/// Allocates a new handle for the service /// Allocates a new handle for the service
Handle NewHandle() { Handle CreateHandle(KernelObject *obj) {
Handle handle = (m_handles.size() << 16) | 0;//m_handle; Handle handle = g_kernel_objects.Create(obj);
m_handles.push_back(handle); m_handles.push_back(handle);
return handle; return handle;
} }
/// Frees a handle from the service /// Frees a handle from the service
void DeleteHandle(Handle handle) { template <class T>
void DeleteHandle(const Handle handle) {
g_kernel_objects.Destroy<T>(handle);
m_handles.erase(std::remove(m_handles.begin(), m_handles.end(), handle), m_handles.end()); m_handles.erase(std::remove(m_handles.begin(), m_handles.end(), handle), m_handles.end());
} }
@ -111,8 +113,8 @@ protected:
private: private:
std::vector<Handle> m_handles; std::vector<Handle> m_handles;
std::map<u32, FunctionInfo> m_functions; std::map<u32, FunctionInfo> m_functions;
}; };