aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-01-20 13:48:32 -0500
committerGitHub <noreply@github.com>2017-01-20 13:48:32 -0500
commitd0ce1cc3193eddb237844b7df8565c5c97747249 (patch)
treee4afeb3047e9a1c5f3f00208b24a0f2f44a413a0 /Emby.Server.Implementations
parent4f5151023aabb7f2f303daadb3cbd023cedb7302 (diff)
parente4fd626d1cccc38b8bd84aa9dcbcde7e7306e1ea (diff)
Merge pull request #2406 from MediaBrowser/dev
Dev
Diffstat (limited to 'Emby.Server.Implementations')
-rw-r--r--Emby.Server.Implementations/Data/SqliteItemRepository.cs10
-rw-r--r--Emby.Server.Implementations/Intros/DefaultIntroProvider.cs15
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs39
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs3
4 files changed, 55 insertions, 12 deletions
diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index 5809d84fd..6bec6dce3 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
@@ -2648,7 +2648,7 @@ namespace Emby.Server.Implementations.Data
{
//Logger.Debug("{2} query time: {0}ms. Query: {1}",
// Convert.ToInt32(elapsed),
- // cmd.CommandText,
+ // commandText,
// methodName);
}
}
@@ -3617,10 +3617,12 @@ namespace Emby.Server.Implementations.Data
var index = 0;
foreach (var type in query.TrailerTypes)
{
- clauses.Add("TrailerTypes like @TrailerTypes" + index);
+ var paramName = "@TrailerTypes" + index;
+
+ clauses.Add("TrailerTypes like " + paramName);
if (statement != null)
{
- statement.TryBind("@TrailerTypes" + index, "%" + type + "%");
+ statement.TryBind(paramName, "%" + type + "%");
}
index++;
}
@@ -4201,7 +4203,7 @@ namespace Emby.Server.Implementations.Data
var paramName = "@ExcludeProviderId" + index;
//excludeIds.Add("(COALESCE((select value from ProviderIds where ItemId=Guid and Name = '" + pair.Key + "'), '') <> " + paramName + ")");
- excludeIds.Add("ProviderIds not like " + paramName);
+ excludeIds.Add("(ProviderIds is null or ProviderIds not like " + paramName + ")");
if (statement != null)
{
statement.TryBind(paramName, "%" + pair.Key + "=" + pair.Value + "%");
diff --git a/Emby.Server.Implementations/Intros/DefaultIntroProvider.cs b/Emby.Server.Implementations/Intros/DefaultIntroProvider.cs
index 90bb2f5c0..500d4b69b 100644
--- a/Emby.Server.Implementations/Intros/DefaultIntroProvider.cs
+++ b/Emby.Server.Implementations/Intros/DefaultIntroProvider.cs
@@ -105,21 +105,26 @@ namespace Emby.Server.Implementations.Intros
trailerTypes.Clear();
}
- var trailerResult = _libraryManager.GetItemList(new InternalItemsQuery(user)
+ // hack - can't filter by user library because local trailers get TopParentId =null in the db.
+ // for now we have to use a post-query filter afterwards to solve that
+ var trailerResult = _libraryManager.GetItemList(new InternalItemsQuery
{
IncludeItemTypes = new[] { typeof(Trailer).Name },
TrailerTypes = trailerTypes.ToArray(),
SimilarTo = item,
- IsPlayed = config.EnableIntrosForWatchedContent ? (bool?)null : false,
+ //IsPlayed = config.EnableIntrosForWatchedContent ? (bool?)null : false,
MaxParentalRating = config.EnableIntrosParentalControl ? ratingLevel : null,
BlockUnratedItems = config.EnableIntrosParentalControl ? new[] { UnratedItem.Trailer } : new UnratedItem[] { },
// Account for duplicates by imdb id, since the database doesn't support this yet
- Limit = config.TrailerLimit * 2,
+ Limit = config.TrailerLimit * 4,
SourceTypes = sourceTypes.ToArray(),
MinSimilarityScore = 0
-
- }).Where(i => string.IsNullOrWhiteSpace(i.GetProviderId(MetadataProviders.Imdb)) || !string.Equals(i.GetProviderId(MetadataProviders.Imdb), item.GetProviderId(MetadataProviders.Imdb), StringComparison.OrdinalIgnoreCase)).Take(config.TrailerLimit);
+ })
+ .Where(i => string.IsNullOrWhiteSpace(i.GetProviderId(MetadataProviders.Imdb)) || !string.Equals(i.GetProviderId(MetadataProviders.Imdb), item.GetProviderId(MetadataProviders.Imdb), StringComparison.OrdinalIgnoreCase))
+ .Where(i => i.IsVisibleStandalone(user))
+ .Where(i => config.EnableIntrosForWatchedContent || !i.IsPlayed(user))
+ .Take(config.TrailerLimit);
candidates.AddRange(trailerResult.Select(i => new ItemWithTrailer
{
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
index 5e55b893f..beb08cc25 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
@@ -240,14 +240,49 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
try
{
- _logger.Info("Killing ffmpeg recording process for {0}", _targetPath);
+ _logger.Info("Stopping ffmpeg recording process for {0}", _targetPath);
//process.Kill();
_process.StandardInput.WriteLine("q");
}
catch (Exception ex)
{
- _logger.ErrorException("Error killing transcoding job for {0}", ex, _targetPath);
+ _logger.ErrorException("Error stopping recording transcoding job for {0}", ex, _targetPath);
+ }
+
+ if (_hasExited)
+ {
+ return;
+ }
+
+ try
+ {
+ _logger.Info("Calling recording process.WaitForExit for {0}", _targetPath);
+
+ if (_process.WaitForExit(5000))
+ {
+ return;
+ }
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error waiting for recording process to exit for {0}", ex, _targetPath);
+ }
+
+ if (_hasExited)
+ {
+ return;
+ }
+
+ try
+ {
+ _logger.Info("Killing ffmpeg recording process for {0}", _targetPath);
+
+ _process.Kill();
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error killing recording transcoding job for {0}", ex, _targetPath);
}
}
}
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
index 7954b86ba..449a4104f 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
@@ -160,7 +160,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
Id = channel.Path.GetMD5().ToString("N"),
IsInfiniteStream = true,
- SupportsDirectStream = false
+ SupportsDirectStream = false,
+ IsRemote = true
};
return new List<MediaSourceInfo> { mediaSource };