diff --git a/osu.Game/Beatmaps/BeatmapManager.cs b/osu.Game/Beatmaps/BeatmapManager.cs
index ee649ad960..cc765657cc 100644
--- a/osu.Game/Beatmaps/BeatmapManager.cs
+++ b/osu.Game/Beatmaps/BeatmapManager.cs
@@ -119,15 +119,17 @@ namespace osu.Game.Beatmaps
/// The beatmap difficulty to hide.
public void Hide(BeatmapInfo beatmapInfo)
{
- using (var realm = contextFactory.CreateContext())
- using (var transaction = realm.BeginWrite())
+ contextFactory.Run(realm =>
{
- if (!beatmapInfo.IsManaged)
- beatmapInfo = realm.Find(beatmapInfo.ID);
+ using (var transaction = realm.BeginWrite())
+ {
+ if (!beatmapInfo.IsManaged)
+ beatmapInfo = realm.Find(beatmapInfo.ID);
- beatmapInfo.Hidden = true;
- transaction.Commit();
- }
+ beatmapInfo.Hidden = true;
+ transaction.Commit();
+ }
+ });
}
///
@@ -136,15 +138,17 @@ namespace osu.Game.Beatmaps
/// The beatmap difficulty to restore.
public void Restore(BeatmapInfo beatmapInfo)
{
- using (var realm = contextFactory.CreateContext())
- using (var transaction = realm.BeginWrite())
+ contextFactory.Run(realm =>
{
- if (!beatmapInfo.IsManaged)
- beatmapInfo = realm.Find(beatmapInfo.ID);
+ using (var transaction = realm.BeginWrite())
+ {
+ if (!beatmapInfo.IsManaged)
+ beatmapInfo = realm.Find(beatmapInfo.ID);
- beatmapInfo.Hidden = false;
- transaction.Commit();
- }
+ beatmapInfo.Hidden = false;
+ transaction.Commit();
+ }
+ });
}
public void RestoreAll()
@@ -176,8 +180,7 @@ namespace osu.Game.Beatmaps
/// The first result for the provided query, or null if no results were found.
public ILive? QueryBeatmapSet(Expression> query)
{
- using (var context = contextFactory.CreateContext())
- return context.All().FirstOrDefault(query)?.ToLive(contextFactory);
+ return contextFactory.Run(realm => realm.All().FirstOrDefault(query)?.ToLive(contextFactory));
}
#region Delegation to BeatmapModelManager (methods which previously existed locally).
@@ -305,13 +308,13 @@ namespace osu.Game.Beatmaps
// If we seem to be missing files, now is a good time to re-fetch.
if (importedBeatmap?.BeatmapSet?.Files.Count == 0)
{
- using (var realm = contextFactory.CreateContext())
+ contextFactory.Run(realm =>
{
var refetch = realm.Find(importedBeatmap.ID)?.Detach();
if (refetch != null)
importedBeatmap = refetch;
- }
+ });
}
return workingBeatmapCache.GetWorkingBeatmap(importedBeatmap);
diff --git a/osu.Game/Beatmaps/BeatmapModelManager.cs b/osu.Game/Beatmaps/BeatmapModelManager.cs
index 3822c6e121..a4ba13a88d 100644
--- a/osu.Game/Beatmaps/BeatmapModelManager.cs
+++ b/osu.Game/Beatmaps/BeatmapModelManager.cs
@@ -98,17 +98,16 @@ namespace osu.Game.Beatmaps
/// The first result for the provided query, or null if no results were found.
public BeatmapInfo? QueryBeatmap(Expression> query)
{
- using (var context = ContextFactory.CreateContext())
- return context.All().FirstOrDefault(query)?.Detach();
+ return ContextFactory.Run(realm => realm.All().FirstOrDefault(query)?.Detach());
}
public void Update(BeatmapSetInfo item)
{
- using (var realm = ContextFactory.CreateContext())
+ ContextFactory.Run(realm =>
{
var existing = realm.Find(item.ID);
realm.Write(r => item.CopyChangesToRealm(existing));
- }
+ });
}
}
}
diff --git a/osu.Game/Overlays/Settings/Sections/Input/KeyBindingRow.cs b/osu.Game/Overlays/Settings/Sections/Input/KeyBindingRow.cs
index e0a1a82326..60aff91301 100644
--- a/osu.Game/Overlays/Settings/Sections/Input/KeyBindingRow.cs
+++ b/osu.Game/Overlays/Settings/Sections/Input/KeyBindingRow.cs
@@ -386,11 +386,11 @@ namespace osu.Game.Overlays.Settings.Sections.Input
private void updateStoreFromButton(KeyButton button)
{
- using (var realm = realmFactory.CreateContext())
+ realmFactory.Run(realm =>
{
var binding = realm.Find(((IHasGuidPrimaryKey)button.KeyBinding).ID);
realm.Write(() => binding.KeyCombinationString = button.KeyBinding.KeyCombinationString);
- }
+ });
}
private void updateIsDefaultValue()
diff --git a/osu.Game/Scoring/ScoreModelManager.cs b/osu.Game/Scoring/ScoreModelManager.cs
index 5ba152fad3..5e560effa1 100644
--- a/osu.Game/Scoring/ScoreModelManager.cs
+++ b/osu.Game/Scoring/ScoreModelManager.cs
@@ -74,8 +74,7 @@ namespace osu.Game.Scoring
public override bool IsAvailableLocally(ScoreInfo model)
{
- using (var context = ContextFactory.CreateContext())
- return context.All().Any(b => b.OnlineID == model.OnlineID);
+ return ContextFactory.Run(realm => realm.All().Any(s => s.OnlineID == model.OnlineID));
}
}
}
diff --git a/osu.Game/Skinning/SkinManager.cs b/osu.Game/Skinning/SkinManager.cs
index cde21b78c1..3f6e5754fb 100644
--- a/osu.Game/Skinning/SkinManager.cs
+++ b/osu.Game/Skinning/SkinManager.cs
@@ -113,10 +113,10 @@ namespace osu.Game.Skinning
public void SelectRandomSkin()
{
- using (var context = contextFactory.CreateContext())
+ contextFactory.Run(realm =>
{
// choose from only user skins, removing the current selection to ensure a new one is chosen.
- var randomChoices = context.All().Where(s => !s.DeletePending && s.ID != CurrentSkinInfo.Value.ID).ToArray();
+ var randomChoices = realm.All().Where(s => !s.DeletePending && s.ID != CurrentSkinInfo.Value.ID).ToArray();
if (randomChoices.Length == 0)
{
@@ -127,7 +127,7 @@ namespace osu.Game.Skinning
var chosen = randomChoices.ElementAt(RNG.Next(0, randomChoices.Length));
CurrentSkinInfo.Value = chosen.ToLive(contextFactory);
- }
+ });
}
///
@@ -182,8 +182,7 @@ namespace osu.Game.Skinning
/// The first result for the provided query, or null if no results were found.
public ILive Query(Expression> query)
{
- using (var context = contextFactory.CreateContext())
- return context.All().FirstOrDefault(query)?.ToLive(contextFactory);
+ return contextFactory.Run(realm => realm.All().FirstOrDefault(query)?.ToLive(contextFactory));
}
public event Action SourceChanged;
diff --git a/osu.Game/Stores/BeatmapImporter.cs b/osu.Game/Stores/BeatmapImporter.cs
index d285a6b61c..61178014ef 100644
--- a/osu.Game/Stores/BeatmapImporter.cs
+++ b/osu.Game/Stores/BeatmapImporter.cs
@@ -165,8 +165,7 @@ namespace osu.Game.Stores
public override bool IsAvailableLocally(BeatmapSetInfo model)
{
- using (var context = ContextFactory.CreateContext())
- return context.All().Any(b => b.OnlineID == model.OnlineID);
+ return ContextFactory.Run(realm => realm.All().Any(b => b.OnlineID == model.OnlineID));
}
public override string HumanisedModelName => "beatmap";
diff --git a/osu.Game/Stores/RealmArchiveModelManager.cs b/osu.Game/Stores/RealmArchiveModelManager.cs
index b456dae343..115fbf721d 100644
--- a/osu.Game/Stores/RealmArchiveModelManager.cs
+++ b/osu.Game/Stores/RealmArchiveModelManager.cs
@@ -165,7 +165,7 @@ namespace osu.Game.Stores
public bool Delete(TModel item)
{
- using (var realm = ContextFactory.CreateContext())
+ return ContextFactory.Run(realm =>
{
if (!item.IsManaged)
item = realm.Find(item.ID);
@@ -175,12 +175,12 @@ namespace osu.Game.Stores
realm.Write(r => item.DeletePending = true);
return true;
- }
+ });
}
public void Undelete(TModel item)
{
- using (var realm = ContextFactory.CreateContext())
+ ContextFactory.Run(realm =>
{
if (!item.IsManaged)
item = realm.Find(item.ID);
@@ -189,7 +189,7 @@ namespace osu.Game.Stores
return;
realm.Write(r => item.DeletePending = false);
- }
+ });
}
public abstract bool IsAvailableLocally(TModel model);