aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Ava/Ui/ViewModels
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Ava/Ui/ViewModels')
-rw-r--r--Ryujinx.Ava/Ui/ViewModels/MainWindowViewModel.cs15
-rw-r--r--Ryujinx.Ava/Ui/ViewModels/SettingsViewModel.cs45
2 files changed, 48 insertions, 12 deletions
diff --git a/Ryujinx.Ava/Ui/ViewModels/MainWindowViewModel.cs b/Ryujinx.Ava/Ui/ViewModels/MainWindowViewModel.cs
index cd756d68..98516159 100644
--- a/Ryujinx.Ava/Ui/ViewModels/MainWindowViewModel.cs
+++ b/Ryujinx.Ava/Ui/ViewModels/MainWindowViewModel.cs
@@ -38,6 +38,8 @@ namespace Ryujinx.Ava.Ui.ViewModels
{
internal class MainWindowViewModel : BaseModel
{
+ private const int HotKeyPressDelayMs = 500;
+
private readonly MainWindow _owner;
private ObservableCollection<ApplicationData> _applications;
private string _aspectStatusText;
@@ -54,6 +56,7 @@ namespace Ryujinx.Ava.Ui.ViewModels
private bool _isLoading;
private int _progressMaximum;
private int _progressValue;
+ private long _lastFullscreenToggle = Environment.TickCount64;
private bool _showLoadProgress;
private bool _showMenuAndStatusBar = true;
private bool _showStatusSeparator;
@@ -929,6 +932,13 @@ namespace Ryujinx.Ava.Ui.ViewModels
public void ToggleFullscreen()
{
+ if (Environment.TickCount64 - _lastFullscreenToggle < HotKeyPressDelayMs)
+ {
+ return;
+ }
+
+ _lastFullscreenToggle = Environment.TickCount64;
+
WindowState state = _owner.WindowState;
if (state == WindowState.FullScreen)
@@ -1085,6 +1095,11 @@ namespace Ryujinx.Ava.Ui.ViewModels
{
selection.Favorite = !selection.Favorite;
+ _owner.ApplicationLibrary.LoadAndSaveMetaData(selection.TitleId, appMetadata =>
+ {
+ appMetadata.Favorite = selection.Favorite;
+ });
+
RefreshView();
}
}
diff --git a/Ryujinx.Ava/Ui/ViewModels/SettingsViewModel.cs b/Ryujinx.Ava/Ui/ViewModels/SettingsViewModel.cs
index 7b08923e..a7cf710e 100644
--- a/Ryujinx.Ava/Ui/ViewModels/SettingsViewModel.cs
+++ b/Ryujinx.Ava/Ui/ViewModels/SettingsViewModel.cs
@@ -48,6 +48,10 @@ namespace Ryujinx.Ava.Ui.ViewModels
private int _graphicsBackendMultithreadingIndex;
private float _previousVolumeLevel;
private float _volume;
+ private bool _isVulkanAvailable = true;
+ private List<string> _gpuIds = new List<string>();
+ private KeyboardHotkeys _keyboardHotkeys;
+ private int _graphicsBackendIndex;
public int ResolutionScale
{
@@ -97,6 +101,17 @@ namespace Ryujinx.Ava.Ui.ViewModels
}
}
+ public bool IsVulkanAvailable
+ {
+ get => _isVulkanAvailable;
+ set
+ {
+ _isVulkanAvailable = value;
+
+ OnPropertyChanged();
+ }
+ }
+
public bool EnableDiscordIntegration { get; set; }
public bool CheckUpdatesOnStart { get; set; }
public bool ShowConfirmExit { get; set; }
@@ -143,10 +158,10 @@ namespace Ryujinx.Ava.Ui.ViewModels
public int BaseStyleIndex { get; set; }
public int GraphicsBackendIndex
{
- get => graphicsBackendIndex;
+ get => _graphicsBackendIndex;
set
{
- graphicsBackendIndex = value;
+ _graphicsBackendIndex = value;
OnPropertyChanged();
OnPropertyChanged(nameof(IsVulkanSelected));
}
@@ -170,14 +185,9 @@ namespace Ryujinx.Ava.Ui.ViewModels
public DateTimeOffset DateOffset { get; set; }
public TimeSpan TimeOffset { get; set; }
public AvaloniaList<TimeZone> TimeZones { get; set; }
-
public AvaloniaList<string> GameDirectories { get; set; }
public ObservableCollection<ComboBoxItem> AvailableGpus { get; set; }
- private KeyboardHotkeys _keyboardHotkeys;
- private int graphicsBackendIndex;
- private List<string> _gpuIds = new List<string>();
-
public KeyboardHotkeys KeyboardHotkeys
{
get => _keyboardHotkeys;
@@ -233,20 +243,31 @@ namespace Ryujinx.Ava.Ui.ViewModels
if (!Program.UseVulkan)
{
var devices = VulkanRenderer.GetPhysicalDevices();
- foreach (var device in devices)
+
+ if (devices.Length == 0)
{
- _gpuIds.Add(device.Id);
- names.Add($"{device.Name} {(device.IsDiscrete ? "(dGpu)" : "")}");
+ IsVulkanAvailable = false;
+ GraphicsBackendIndex = 1;
+ }
+ else
+ {
+ foreach (var device in devices)
+ {
+ _gpuIds.Add(device.Id);
+ names.Add($"{device.Name} {(device.IsDiscrete ? "(dGPU)" : "")}");
+ }
}
}
else
{
foreach (var device in VulkanPhysicalDevice.SuitableDevices)
{
- _gpuIds.Add(VulkanInitialization.StringFromIdPair(device.Value.VendorID, device.Value.DeviceID));
+ _gpuIds.Add(
+ VulkanInitialization.StringFromIdPair(device.Value.VendorID, device.Value.DeviceID));
var value = device.Value;
var name = value.DeviceName;
- names.Add($"{Marshal.PtrToStringAnsi((IntPtr)name)} {(device.Value.DeviceType == PhysicalDeviceType.DiscreteGpu ? "(dGpu)" : "")}");
+ names.Add(
+ $"{Marshal.PtrToStringAnsi((IntPtr)name)} {(device.Value.DeviceType == PhysicalDeviceType.DiscreteGpu ? "(dGPU)" : "")}");
}
}