mirror of
https://github.com/libretro/MesenCE.git
synced 2026-11-11 17:26:45 -10:00
Also fixes DX11.0 support (for Win7 PCs that aren't fully updated), which stopped working after the recent variable refresh rate changes
53 lines
1003 B
C#
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;
|
|
}
|
|
}
|
|
}
|