AppletStateMgr.cs 981 B

123456789101112131415161718192021222324252627282930313233
  1. using Ryujinx.HLE.HOS.Kernel.Threading;
  2. using Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.SystemAppletProxy;
  3. using System.Collections.Concurrent;
  4. namespace Ryujinx.HLE.HOS.SystemState
  5. {
  6. class AppletStateMgr
  7. {
  8. public ConcurrentQueue<MessageInfo> Messages { get; }
  9. public FocusState FocusState { get; private set; }
  10. public KEvent MessageEvent { get; }
  11. public IdDictionary AppletResourceUserIds { get; }
  12. public AppletStateMgr(Horizon system)
  13. {
  14. Messages = new ConcurrentQueue<MessageInfo>();
  15. MessageEvent = new KEvent(system.KernelContext);
  16. AppletResourceUserIds = new IdDictionary();
  17. }
  18. public void SetFocus(bool isFocused)
  19. {
  20. FocusState = isFocused ? FocusState.InFocus : FocusState.OutOfFocus;
  21. Messages.Enqueue(MessageInfo.FocusStateChanged);
  22. MessageEvent.ReadableEvent.Signal();
  23. }
  24. }
  25. }