aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStary 2001 <mctinfoilball@gmail.com>2018-02-10 18:31:40 +0000
committergdkchan <gab.dark.100@gmail.com>2018-02-10 15:31:40 -0300
commit2f2b60db4cc687a86cc2cc5aa9bbe5fcf202dc9b (patch)
treedf44001d717670cf1c9c9a5c564d00fd77cfa29a
parent55743c0cba7d1f3daafcedff4f9f623fdcf24b83 (diff)
Make HSessionObj implement IDisposable (#10)
* Make HSessionObj implement IDisposable, so that objects that have handles created to them are disposed when the handles are closed. * Spelling fix: GenertateObjectId -> GenerateObjectId
-rw-r--r--Ryujinx/OsHle/Handles/HDomain.cs2
-rw-r--r--Ryujinx/OsHle/Handles/HSessionObj.cs20
-rw-r--r--Ryujinx/OsHle/Ipc/IpcHandler.cs2
-rw-r--r--Ryujinx/OsHle/Objects/ObjHelper.cs2
4 files changed, 22 insertions, 4 deletions
diff --git a/Ryujinx/OsHle/Handles/HDomain.cs b/Ryujinx/OsHle/Handles/HDomain.cs
index fd252f5d..e781602a 100644
--- a/Ryujinx/OsHle/Handles/HDomain.cs
+++ b/Ryujinx/OsHle/Handles/HDomain.cs
@@ -17,7 +17,7 @@ namespace Ryujinx.OsHle.Handles
ObjIds = new IdPool();
}
- public int GenertateObjectId(object Obj)
+ public int GenerateObjectId(object Obj)
{
int Id = ObjIds.GenerateId();
diff --git a/Ryujinx/OsHle/Handles/HSessionObj.cs b/Ryujinx/OsHle/Handles/HSessionObj.cs
index c1e5e41a..d2b2b0d7 100644
--- a/Ryujinx/OsHle/Handles/HSessionObj.cs
+++ b/Ryujinx/OsHle/Handles/HSessionObj.cs
@@ -1,6 +1,8 @@
+using System;
+
namespace Ryujinx.OsHle.Handles
{
- class HSessionObj : HSession
+ class HSessionObj : HSession, IDisposable
{
public object Obj { get; private set; }
@@ -8,5 +10,21 @@ namespace Ryujinx.OsHle.Handles
{
this.Obj = Obj;
}
+
+ public void Dispose()
+ {
+ Dispose(true);
+ }
+
+ protected virtual void Dispose(bool Disposing)
+ {
+ if(Disposing && Obj != null)
+ {
+ if(Obj is IDisposable DisposableObj)
+ {
+ DisposableObj.Dispose();
+ }
+ }
+ }
}
} \ No newline at end of file
diff --git a/Ryujinx/OsHle/Ipc/IpcHandler.cs b/Ryujinx/OsHle/Ipc/IpcHandler.cs
index ff90d873..c373d2ce 100644
--- a/Ryujinx/OsHle/Ipc/IpcHandler.cs
+++ b/Ryujinx/OsHle/Ipc/IpcHandler.cs
@@ -212,7 +212,7 @@ namespace Ryujinx.OsHle.Ipc
Ns.Os.Handles.ReplaceData(HndId, Dom);
- return FillResponse(Response, 0, Dom.GenertateObjectId(Dom));
+ return FillResponse(Response, 0, Dom.GenerateObjectId(Dom));
}
private static IpcMessage IpcDuplicateSessionEx(
diff --git a/Ryujinx/OsHle/Objects/ObjHelper.cs b/Ryujinx/OsHle/Objects/ObjHelper.cs
index e37f5320..bab22203 100644
--- a/Ryujinx/OsHle/Objects/ObjHelper.cs
+++ b/Ryujinx/OsHle/Objects/ObjHelper.cs
@@ -9,7 +9,7 @@ namespace Ryujinx.OsHle.Objects
{
if (Context.Session is HDomain Dom)
{
- Context.Response.ResponseObjIds.Add(Dom.GenertateObjectId(Obj));
+ Context.Response.ResponseObjIds.Add(Dom.GenerateObjectId(Obj));
}
else
{