Update existing usages to use the main realm context where applicable

This commit is contained in:
Dean Herbert 2021-01-13 17:35:00 +09:00
parent 542f535247
commit 9d744d629f
6 changed files with 8 additions and 19 deletions

View File

@ -49,7 +49,7 @@ namespace osu.Game.Tests.Database
Assert.That(query().Where(k => k.Action == (int)GlobalAction.Select).Count, Is.EqualTo(2));
}
private IQueryable<RealmKeyBinding> query() => realmContextFactory.Get().All<RealmKeyBinding>();
private IQueryable<RealmKeyBinding> query() => realmContextFactory.Context.All<RealmKeyBinding>();
[Test]
public void TestUpdateViaQueriedReference()

View File

@ -55,7 +55,7 @@ namespace osu.Game.Database
private T getThreadLocalValue()
{
var context = contextFactory.Get();
var context = contextFactory.Context;
// only use the original if no context is available or the source realm is the same.
if (context == null || original.Realm?.IsSameInstance(context) == true) return original;

View File

@ -53,14 +53,12 @@ namespace osu.Game.Input.Bindings
protected override void LoadComplete()
{
var realm = realmFactory.Get();
if (ruleset == null || ruleset.ID.HasValue)
{
var rulesetId = ruleset?.ID;
realmKeyBindings = realm.All<RealmKeyBinding>()
.Where(b => b.RulesetID == rulesetId && b.Variant == variant);
realmKeyBindings = realmFactory.Context.All<RealmKeyBinding>()
.Where(b => b.RulesetID == rulesetId && b.Variant == variant);
realmSubscription = realmKeyBindings
.SubscribeForNotifications((sender, changes, error) =>

View File

@ -28,7 +28,7 @@ namespace osu.Game.Input
/// <returns>A set of display strings for all the user's key configuration for the action.</returns>
public IEnumerable<string> GetReadableKeyCombinationsFor(GlobalAction globalAction)
{
foreach (var action in query().Where(b => (GlobalAction)b.Action == globalAction))
foreach (var action in RealmFactory.Context.All<RealmKeyBinding>().Where(b => (GlobalAction)b.Action == globalAction))
{
string str = ((IKeyBinding)action).KeyCombination.ReadableString();
@ -92,7 +92,7 @@ namespace osu.Game.Input
// compare counts in database vs defaults
foreach (var group in defaults.GroupBy(k => k.Action))
{
int count = query(rulesetId, variant).Count(k => k.Action == (int)group.Key);
int count = usage.Context.All<RealmKeyBinding>().Count(k => k.RulesetID == rulesetId && k.Variant == variant && k.Action == (int)group.Key);
int aimCount = group.Count();
if (aimCount <= count)
@ -113,13 +113,5 @@ namespace osu.Game.Input
}
}
}
/// <summary>
/// Retrieve live queryable <see cref="RealmKeyBinding"/>s for a specified ruleset/variant content.
/// </summary>
/// <param name="rulesetId">An optional ruleset ID. If null, global bindings are returned.</param>
/// <param name="variant">An optional ruleset variant. If null, the no-variant bindings are returned.</param>
private IQueryable<RealmKeyBinding> query(int? rulesetId = null, int? variant = null) =>
RealmFactory.Get().All<RealmKeyBinding>().Where(b => b.RulesetID == rulesetId && b.Variant == variant);
}
}

View File

@ -37,7 +37,7 @@ namespace osu.Game.Overlays.KeyBinding
{
var rulesetId = Ruleset?.ID;
using (var realm = realmFactory.Get())
using (var realm = realmFactory.GetForRead())
{
var bindings = realm.All<RealmKeyBinding>().Where(b => b.RulesetID == rulesetId && b.Variant == variant).Detach();

View File

@ -165,8 +165,7 @@ namespace osu.Game.Overlays.Toolbar
if (Hotkey != null)
{
var realm = realmFactory.Get();
realmKeyBinding = realm.All<RealmKeyBinding>().FirstOrDefault(rkb => rkb.RulesetID == null && rkb.Action == (int)Hotkey.Value);
realmKeyBinding = realmFactory.Context.All<RealmKeyBinding>().FirstOrDefault(rkb => rkb.RulesetID == null && rkb.Action == (int)Hotkey.Value);
if (realmKeyBinding != null)
{