Files
SourMesen 40335ce735 UI: Update to Avalonia 12, .NET 10 and replace ReactiveUI with MVVM community toolkit (#142)
Also fixes DX11.0 support (for Win7 PCs that aren't fully updated), which stopped working after the recent variable refresh rate changes
2026-07-03 16:04:42 +09:00

53 lines
1003 B
C#

using CommunityToolkit.Mvvm.ComponentModel;
using System;
using System.Collections;
using System.Collections.Generic;
namespace Mesen.ViewModels
{
public partial class ViewModelBase : ObservableObject
{
}
public partial class DisposableViewModel : ViewModelBase, IDisposable
{
private HashSet<IDisposable> _disposables = new();
public bool Disposed { get; private set; } = false;
public void Dispose()
{
if(Disposed) {
return;
}
Disposed = true;
foreach(IDisposable obj in _disposables) {
obj.Dispose();
}
_disposables.Clear();
_disposables = new();
DisposeView();
}
protected virtual void DisposeView() { }
public T AddDisposable<T>(T obj) where T : IDisposable
{
_disposables.Add(obj);
return obj;
}
public T AddDisposables<T>(T disposables) where T : IEnumerable
{
foreach(object obj in disposables) {
if(obj is IDisposable disposable) {
_disposables.Add(disposable);
}
}
return disposables;
}
}
}