diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-11-23 02:01:25 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-11-23 02:01:25 -0500 |
| commit | 40b15060c57c63870c2e02b2378ec3299bac21ee (patch) | |
| tree | fcafb9627127b062c993e1376caabe08db443b72 /Emby.Server.Implementations | |
| parent | b9bdbf22bf91df486f1e875d8a6fd2e0580c5b58 (diff) | |
| parent | 8bc4d49c8967f850d0b76ee8896bbc8ce3e50424 (diff) | |
Merge pull request #2305 from MediaBrowser/dev
fix scanning of new libraries
Diffstat (limited to 'Emby.Server.Implementations')
4 files changed, 35 insertions, 21 deletions
diff --git a/Emby.Server.Implementations/Data/SqliteFileOrganizationRepository.cs b/Emby.Server.Implementations/Data/SqliteFileOrganizationRepository.cs index 2d1aabf5f..23bab883e 100644 --- a/Emby.Server.Implementations/Data/SqliteFileOrganizationRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteFileOrganizationRepository.cs @@ -194,7 +194,6 @@ namespace Emby.Server.Implementations.Data using (var statement = connection.PrepareStatement("select ResultId, OriginalPath, TargetPath, FileLength, OrganizationDate, Status, OrganizationType, StatusMessage, ExtractedName, ExtractedYear, ExtractedSeasonNumber, ExtractedEpisodeNumber, ExtractedEndingEpisodeNumber, DuplicatePaths from FileOrganizerResults where ResultId=@ResultId")) { statement.TryBind("@ResultId", id.ToGuidParamValue()); - statement.MoveNext(); foreach (var row in statement.ExecuteQuery()) { diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs index 78d78a9df..f017a21dc 100644 --- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs @@ -638,25 +638,30 @@ namespace Emby.Server.Implementations.Data CheckDisposed(); + var tuples = new List<Tuple<BaseItem, List<Guid>>>(); + foreach (var item in items) + { + var ancestorIds = item.SupportsAncestors ? + item.GetAncestorIds().Distinct().ToList() : + null; + + tuples.Add(new Tuple<BaseItem, List<Guid>>(item, ancestorIds)); + } + using (var connection = CreateConnection()) { using (WriteLock.Write()) { connection.RunInTransaction(db => { - SaveItemsInTranscation(db, items); + SaveItemsInTranscation(db, tuples); }); } } } - private void SaveItemsInTranscation(IDatabaseConnection db, List<BaseItem> items) + private void SaveItemsInTranscation(IDatabaseConnection db, List<Tuple<BaseItem, List<Guid>>> tuples) { - if (items == null) - { - throw new ArgumentNullException("items"); - } - var requiresReset = false; using (var saveItemStatement = db.PrepareStatement(GetSaveItemCommandText())) @@ -665,19 +670,21 @@ namespace Emby.Server.Implementations.Data { using (var updateAncestorsStatement = db.PrepareStatement("insert into AncestorIds (ItemId, AncestorId, AncestorIdText) values (@ItemId, @AncestorId, @AncestorIdText)")) { - foreach (var item in items) + foreach (var tuple in tuples) { if (requiresReset) { saveItemStatement.Reset(); } + var item = tuple.Item1; + SaveItem(item, saveItemStatement); //Logger.Debug(_saveItemCommand.CommandText); if (item.SupportsAncestors) { - UpdateAncestors(item.Id, item.GetAncestorIds().Distinct().ToList(), db, deleteAncestorsStatement, updateAncestorsStatement); + UpdateAncestors(item.Id, tuple.Item2, db, deleteAncestorsStatement, updateAncestorsStatement); } UpdateItemValues(item.Id, GetItemValuesToSave(item), db); @@ -802,7 +809,7 @@ namespace Emby.Server.Implementations.Data saveItemStatement.TryBind("@IsHD", item.IsHD); saveItemStatement.TryBind("@ExternalEtag", item.ExternalEtag); - if (item.DateLastRefreshed == default(DateTime)) + if (item.DateLastRefreshed != default(DateTime)) { saveItemStatement.TryBind("@DateLastRefreshed", item.DateLastRefreshed); } @@ -811,9 +818,9 @@ namespace Emby.Server.Implementations.Data saveItemStatement.TryBindNull("@DateLastRefreshed"); } - if (item.DateLastSaved == default(DateTime)) + if (item.DateLastSaved != default(DateTime)) { - saveItemStatement.TryBind("@DateLastSaved", item.DateLastRefreshed); + saveItemStatement.TryBind("@DateLastSaved", item.DateLastSaved); } else { @@ -948,7 +955,7 @@ namespace Emby.Server.Implementations.Data var hasSeries = item as IHasSeries; if (hasSeries != null) { - saveItemStatement.TryBind("@SeriesName", hasSeries.FindSeriesName()); + saveItemStatement.TryBind("@SeriesName", hasSeries.SeriesName); } else { @@ -960,8 +967,8 @@ namespace Emby.Server.Implementations.Data var episode = item as Episode; if (episode != null) { - saveItemStatement.TryBind("@SeasonName", episode.FindSeasonName()); - saveItemStatement.TryBind("@SeasonId", episode.FindSeasonId()); + saveItemStatement.TryBind("@SeasonName", episode.SeasonName); + saveItemStatement.TryBind("@SeasonId", episode.SeasonId); } else { @@ -971,8 +978,8 @@ namespace Emby.Server.Implementations.Data if (hasSeries != null) { - saveItemStatement.TryBind("@SeriesId", hasSeries.FindSeriesId()); - saveItemStatement.TryBind("@SeriesSortName", hasSeries.FindSeriesSortName()); + saveItemStatement.TryBind("@SeriesId", hasSeries.SeriesId); + saveItemStatement.TryBind("@SeriesSortName", hasSeries.SeriesSortName); } else { diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/MulticastStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/MulticastStream.cs index 360a2cee7..7b88be19c 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/MulticastStream.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/MulticastStream.cs @@ -25,10 +25,10 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts { _cancellationToken = cancellationToken; + byte[] buffer = new byte[BufferSize]; + while (!cancellationToken.IsCancellationRequested) { - byte[] buffer = new byte[BufferSize]; - var bytesRead = await source.ReadAsync(buffer, 0, buffer.Length, cancellationToken).ConfigureAwait(false); if (bytesRead > 0) diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/QueueStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/QueueStream.cs index 7605641b2..bd6f31906 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/QueueStream.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/QueueStream.cs @@ -19,6 +19,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts public Action<QueueStream> OnFinished { get; set; } private readonly ILogger _logger; + private bool _isActive; public QueueStream(Stream outputStream, ILogger logger) { @@ -29,7 +30,10 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts public void Queue(byte[] bytes) { - _queue.Enqueue(bytes); + if (_isActive) + { + _queue.Enqueue(bytes); + } } public void Start(CancellationToken cancellationToken) @@ -57,6 +61,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts { while (!cancellationToken.IsCancellationRequested) { + _isActive = true; + var bytes = Dequeue(); if (bytes != null) { @@ -83,6 +89,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts } finally { + _isActive = false; + if (OnFinished != null) { OnFinished(this); |
