| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- using Ryujinx.HLE.HOS.Kernel.Threading;
- using Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.SystemAppletProxy;
- using System.Collections.Concurrent;
- namespace Ryujinx.HLE.HOS.SystemState
- {
- class AppletStateMgr
- {
- public ConcurrentQueue<AppletMessage> Messages { get; }
- public FocusState FocusState { get; private set; }
- public KEvent MessageEvent { get; }
- public IdDictionary AppletResourceUserIds { get; }
- public IdDictionary IndirectLayerHandles { get; }
- public AppletStateMgr(Horizon system)
- {
- Messages = new ConcurrentQueue<AppletMessage>();
- MessageEvent = new KEvent(system.KernelContext);
- AppletResourceUserIds = new IdDictionary();
- IndirectLayerHandles = new IdDictionary();
- }
- public void SetFocus(bool isFocused)
- {
- FocusState = isFocused ? FocusState.InFocus : FocusState.OutOfFocus;
- Messages.Enqueue(AppletMessage.FocusStateChanged);
- if (isFocused)
- {
- Messages.Enqueue(AppletMessage.ChangeIntoForeground);
- }
- MessageEvent.ReadableEvent.Signal();
- }
- }
- }
|