From b8133c19971c7a2026af803003fafedbdb70488e Mon Sep 17 00:00:00 2001 From: gdkchan Date: Tue, 18 Sep 2018 20:36:43 -0300 Subject: Thread scheduler rewrite (#393) * Started to rewrite the thread scheduler * Add a single core-like scheduling mode, enabled by default * Clear exclusive monitor on context switch * Add SetThreadActivity, misc fixes * Implement WaitForAddress and SignalToAddress svcs, misc fixes * Misc fixes (on SetActivity and Arbiter), other tweaks * Rebased * Add missing null check * Rename multicore key on config, fix UpdatePriorityInheritance * Make scheduling data MLQs private * nit: Ordering --- Ryujinx.HLE/HOS/SystemState/AppletStateMgr.cs | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) (limited to 'Ryujinx.HLE/HOS/SystemState') diff --git a/Ryujinx.HLE/HOS/SystemState/AppletStateMgr.cs b/Ryujinx.HLE/HOS/SystemState/AppletStateMgr.cs index ee0e6fea..b537b06a 100644 --- a/Ryujinx.HLE/HOS/SystemState/AppletStateMgr.cs +++ b/Ryujinx.HLE/HOS/SystemState/AppletStateMgr.cs @@ -1,11 +1,10 @@ using Ryujinx.HLE.HOS.Kernel; using Ryujinx.HLE.HOS.Services.Am; -using System; using System.Collections.Concurrent; namespace Ryujinx.HLE.HOS.SystemState { - class AppletStateMgr : IDisposable + class AppletStateMgr { private ConcurrentQueue Messages; @@ -13,11 +12,11 @@ namespace Ryujinx.HLE.HOS.SystemState public KEvent MessageEvent { get; private set; } - public AppletStateMgr() + public AppletStateMgr(Horizon System) { Messages = new ConcurrentQueue(); - MessageEvent = new KEvent(); + MessageEvent = new KEvent(System); } public void SetFocus(bool IsFocused) @@ -33,30 +32,17 @@ namespace Ryujinx.HLE.HOS.SystemState { Messages.Enqueue(Message); - MessageEvent.WaitEvent.Set(); + MessageEvent.Signal(); } public bool TryDequeueMessage(out MessageInfo Message) { if (Messages.Count < 2) { - MessageEvent.WaitEvent.Reset(); + MessageEvent.Reset(); } return Messages.TryDequeue(out Message); } - - public void Dispose() - { - Dispose(true); - } - - protected virtual void Dispose(bool Disposing) - { - if (Disposing) - { - MessageEvent.Dispose(); - } - } } } \ No newline at end of file -- cgit v1.2.3