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)); 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] [Test]
public void TestUpdateViaQueriedReference() public void TestUpdateViaQueriedReference()

View File

@ -55,7 +55,7 @@ namespace osu.Game.Database
private T getThreadLocalValue() 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. // 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; 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() protected override void LoadComplete()
{ {
var realm = realmFactory.Get();
if (ruleset == null || ruleset.ID.HasValue) if (ruleset == null || ruleset.ID.HasValue)
{ {
var rulesetId = ruleset?.ID; var rulesetId = ruleset?.ID;
realmKeyBindings = realm.All<RealmKeyBinding>() realmKeyBindings = realmFactory.Context.All<RealmKeyBinding>()
.Where(b => b.RulesetID == rulesetId && b.Variant == variant); .Where(b => b.RulesetID == rulesetId && b.Variant == variant);
realmSubscription = realmKeyBindings realmSubscription = realmKeyBindings
.SubscribeForNotifications((sender, changes, error) => .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> /// <returns>A set of display strings for all the user's key configuration for the action.</returns>
public IEnumerable<string> GetReadableKeyCombinationsFor(GlobalAction globalAction) 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(); string str = ((IKeyBinding)action).KeyCombination.ReadableString();
@ -92,7 +92,7 @@ namespace osu.Game.Input
// compare counts in database vs defaults // compare counts in database vs defaults
foreach (var group in defaults.GroupBy(k => k.Action)) 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(); int aimCount = group.Count();
if (aimCount <= 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; 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(); 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) if (Hotkey != null)
{ {
var realm = realmFactory.Get(); realmKeyBinding = realmFactory.Context.All<RealmKeyBinding>().FirstOrDefault(rkb => rkb.RulesetID == null && rkb.Action == (int)Hotkey.Value);
realmKeyBinding = realm.All<RealmKeyBinding>().FirstOrDefault(rkb => rkb.RulesetID == null && rkb.Action == (int)Hotkey.Value);
if (realmKeyBinding != null) if (realmKeyBinding != null)
{ {