AppletStateMgr.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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<AppletMessage> 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<AppletMessage>();
  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(AppletMessage.FocusStateChanged);
  22. if (isFocused)
  23. {
  24. Messages.Enqueue(AppletMessage.ChangeIntoForeground);
  25. }
  26. MessageEvent.ReadableEvent.Signal();
  27. }
  28. }
  29. }