[banshee/gapless-ng: 6/836] [Banshee.PlayerEngineService] Split out SwitchToEngine from FindSupportingEngine. This will be neede
- From: Christopher James Halse Rogers <chrishr src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [banshee/gapless-ng: 6/836] [Banshee.PlayerEngineService] Split out SwitchToEngine from FindSupportingEngine. This will be neede
- Date: Thu, 25 Feb 2010 22:41:57 +0000 (UTC)
commit 48aa1d3f35ea64d195807ac4f6866ec00e1e3a4a
Author: Christopher James Halse Rogers <raof ubuntu com>
Date: Fri Jul 17 15:35:47 2009 +1000
[Banshee.PlayerEngineService] Split out SwitchToEngine from FindSupportingEngine.
This will be needed for gapless & crossfading, because FindSupportingEngine will be called while the engine is playing
.../Banshee.MediaEngine/PlayerEngineService.cs | 34 +++++++++++--------
1 files changed, 20 insertions(+), 14 deletions(-)
---
diff --git a/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs b/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
index f12e23f..fb56e7e 100644
--- a/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
+++ b/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
@@ -351,7 +351,8 @@ namespace Banshee.MediaEngine
IncrementLastPlayed ();
- FindSupportingEngine (uri);
+ PlayerEngine supportingEngine = FindSupportingEngine (uri);
+ SwitchToEngine (supportingEngine);
CheckPending ();
if (track != null) {
@@ -381,34 +382,39 @@ namespace Banshee.MediaEngine
}
}
- private void FindSupportingEngine (SafeUri uri)
+ private PlayerEngine FindSupportingEngine (SafeUri uri)
{
foreach (PlayerEngine engine in engines) {
foreach (string extension in engine.ExplicitDecoderCapabilities) {
if (!uri.AbsoluteUri.EndsWith (extension)) {
continue;
- } else if (active_engine != engine) {
- Close ();
- pending_engine = engine;
- Log.DebugFormat ("Switching engine to: {0}", engine.GetType ());
}
- return;
+ return engine;
}
}
foreach (PlayerEngine engine in engines) {
foreach (string scheme in engine.SourceCapabilities) {
bool supported = scheme == uri.Scheme;
- if (supported && active_engine != engine) {
- Close ();
- pending_engine = engine;
- Log.DebugFormat ("Switching engine to: {0}", engine.GetType ());
- return;
- } else if (supported) {
- return;
+ if (supported) {
+ return engine;
}
}
}
+ // If none of our engines support this URI, return the currently active one.
+ // There doesn't seem to be anything better to do.
+ return active_engine;
+ }
+
+ private bool SwitchToEngine (PlayerEngine switchTo)
+ {
+ if (active_engine != switchTo) {
+ Close ();
+ pending_engine = switchTo;
+ Log.DebugFormat ("Switching engine to: {0}", switchTo.GetType ());
+ return true;
+ }
+ return false;
}
public void Close ()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]