Merge pull request #9274 from pchote/fix-sound-engine

Don’t create multiple sound contexts.
This commit is contained in:
Matthias Mailänder
2015-09-06 11:35:50 +02:00
2 changed files with 10 additions and 5 deletions

View File

@@ -234,6 +234,8 @@ namespace OpenRA
}
}
Sound.Create(Settings.Server.Dedicated ? "Null" : Settings.Sound.Engine);
Console.WriteLine("Available mods:");
foreach (var mod in ModMetadata.AllMods)
Console.WriteLine("\t{0}: {1} ({2})", mod.Key, mod.Value.Title, mod.Value.Version);
@@ -275,7 +277,7 @@ namespace OpenRA
Settings.Game.Mod = mod;
Sound.StopVideo();
Sound.Initialize(Settings.Server.Dedicated ? "Null" : Settings.Sound.Engine);
Sound.Initialize();
ModData = new ModData(mod, !Settings.Server.Dedicated);
ModData.InitializeLoaders();

View File

@@ -29,6 +29,12 @@ namespace OpenRA
static ISound video;
static MusicInfo currentMusic;
public static void Create(string engineName)
{
var enginePath = Platform.ResolvePath(".", "OpenRA.Platforms." + engineName + ".dll");
soundEngine = CreateDevice(Assembly.LoadFile(enginePath));
}
static ISoundEngine CreateDevice(Assembly platformDll)
{
foreach (PlatformAttribute r in platformDll.GetCustomAttributes(typeof(PlatformAttribute), false))
@@ -66,11 +72,8 @@ namespace OpenRA
return soundEngine.AddSoundSourceFromMemory(rawData, channels, sampleBits, sampleRate);
}
public static void Initialize(string engineName)
public static void Initialize()
{
var enginePath = Platform.ResolvePath(".", "OpenRA.Platforms." + engineName + ".dll");
soundEngine = CreateDevice(Assembly.LoadFile(enginePath));
sounds = new Cache<string, ISoundSource>(LoadSound);
music = null;
currentMusic = null;