Skip to content

Commit a1a59aa

Browse files
Merge pull request #3278 from MediaBrowser/dev
fix epg search + image generation
2 parents 58cbf7b + 4077390 commit a1a59aa

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+387
-326
lines changed

Emby.Server.Implementations/Data/SqliteItemRepository.cs

+76-113
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ public string Name
6868

6969
private readonly IFileSystem _fileSystem;
7070
private readonly IEnvironmentInfo _environmentInfo;
71-
private readonly ITimerFactory _timerFactory;
72-
private ITimer _shrinkMemoryTimer;
7371
private IServerApplicationHost _appHost;
7472

7573
/// <summary>
@@ -92,7 +90,6 @@ public SqliteItemRepository(IServerConfigurationManager config, IServerApplicati
9290
_jsonSerializer = jsonSerializer;
9391
_fileSystem = fileSystem;
9492
_environmentInfo = environmentInfo;
95-
_timerFactory = timerFactory;
9693
_typeMapper = new TypeMapper(assemblyInfo);
9794

9895
DbFilePath = Path.Combine(_config.ApplicationPaths.DataPath, "library.db");
@@ -116,17 +113,6 @@ protected override bool EnableTempStoreMemory
116113
}
117114
}
118115

119-
protected override void CloseConnection()
120-
{
121-
if (_shrinkMemoryTimer != null)
122-
{
123-
_shrinkMemoryTimer.Dispose();
124-
_shrinkMemoryTimer = null;
125-
}
126-
127-
base.CloseConnection();
128-
}
129-
130116
/// <summary>
131117
/// Opens the connection to the database
132118
/// </summary>
@@ -356,31 +342,6 @@ var createMediaStreamsTableCommand
356342
}
357343

358344
userDataRepo.Initialize(WriteLock, _connection);
359-
360-
_shrinkMemoryTimer = _timerFactory.Create(OnShrinkMemoryTimerCallback, null, TimeSpan.FromMinutes(1), TimeSpan.FromHours(6));
361-
}
362-
363-
private void OnShrinkMemoryTimerCallback(object state)
364-
{
365-
try
366-
{
367-
using (WriteLock.Write())
368-
{
369-
using (var connection = CreateConnection())
370-
{
371-
connection.RunQueries(new string[]
372-
{
373-
"pragma shrink_memory"
374-
});
375-
}
376-
}
377-
378-
GC.Collect();
379-
}
380-
catch (Exception ex)
381-
{
382-
Logger.ErrorException("Error running shrink memory", ex);
383-
}
384345
}
385346

386347
private readonly string[] _retriveItemColumns =
@@ -3468,92 +3429,94 @@ private List<string> GetWhereClauses(InternalItemsQuery query, IStatement statem
34683429
var tags = query.Tags.ToList();
34693430
var excludeTags = query.ExcludeTags.ToList();
34703431

3471-
if (!(query.IsMovie ?? true) || !(query.IsSeries ?? true))
3432+
//if (!(query.IsMovie ?? true) || !(query.IsSeries ?? true))
3433+
//{
3434+
// if (query.IsMovie.HasValue)
3435+
// {
3436+
// var alternateTypes = new List<string>();
3437+
// if (query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains(typeof(Movie).Name))
3438+
// {
3439+
// alternateTypes.Add(typeof(Movie).FullName);
3440+
// }
3441+
// if (query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains(typeof(Trailer).Name))
3442+
// {
3443+
// alternateTypes.Add(typeof(Trailer).FullName);
3444+
// }
3445+
3446+
// if (alternateTypes.Count == 0)
3447+
// {
3448+
// whereClauses.Add("IsMovie=@IsMovie");
3449+
// if (statement != null)
3450+
// {
3451+
// statement.TryBind("@IsMovie", query.IsMovie);
3452+
// }
3453+
// }
3454+
// else
3455+
// {
3456+
// whereClauses.Add("(IsMovie is null OR IsMovie=@IsMovie)");
3457+
// if (statement != null)
3458+
// {
3459+
// statement.TryBind("@IsMovie", query.IsMovie);
3460+
// }
3461+
// }
3462+
// }
3463+
//}
3464+
//else
3465+
//{
3466+
3467+
//}
3468+
3469+
if (query.IsMovie ?? false)
34723470
{
3473-
if (query.IsMovie.HasValue)
3474-
{
3475-
var alternateTypes = new List<string>();
3476-
if (query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains(typeof(Movie).Name))
3477-
{
3478-
alternateTypes.Add(typeof(Movie).FullName);
3479-
}
3480-
if (query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains(typeof(Trailer).Name))
3481-
{
3482-
alternateTypes.Add(typeof(Trailer).FullName);
3483-
}
3471+
var programAttribtues = new List<string>();
34843472

3485-
if (alternateTypes.Count == 0)
3486-
{
3487-
whereClauses.Add("IsMovie=@IsMovie");
3488-
if (statement != null)
3489-
{
3490-
statement.TryBind("@IsMovie", query.IsMovie);
3491-
}
3492-
}
3493-
else
3494-
{
3495-
whereClauses.Add("(IsMovie is null OR IsMovie=@IsMovie)");
3496-
if (statement != null)
3497-
{
3498-
statement.TryBind("@IsMovie", query.IsMovie);
3499-
}
3500-
}
3501-
}
3502-
if (query.IsSeries.HasValue)
3473+
var alternateTypes = new List<string>();
3474+
if (query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains(typeof(Movie).Name))
35033475
{
3504-
whereClauses.Add("IsSeries=@IsSeries");
3505-
if (statement != null)
3506-
{
3507-
statement.TryBind("@IsSeries", query.IsSeries);
3508-
}
3476+
alternateTypes.Add(typeof(Movie).FullName);
35093477
}
3510-
}
3511-
else
3512-
{
3513-
var programAttribtues = new List<string>();
3514-
if (query.IsMovie ?? false)
3478+
if (query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains(typeof(Trailer).Name))
35153479
{
3516-
var alternateTypes = new List<string>();
3517-
if (query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains(typeof(Movie).Name))
3518-
{
3519-
alternateTypes.Add(typeof(Movie).FullName);
3520-
}
3521-
if (query.IncludeItemTypes.Length == 0 || query.IncludeItemTypes.Contains(typeof(Trailer).Name))
3522-
{
3523-
alternateTypes.Add(typeof(Trailer).FullName);
3524-
}
3480+
alternateTypes.Add(typeof(Trailer).FullName);
3481+
}
35253482

3526-
if (alternateTypes.Count == 0)
3527-
{
3528-
programAttribtues.Add("IsMovie=@IsMovie");
3529-
}
3530-
else
3531-
{
3532-
programAttribtues.Add("(IsMovie is null OR IsMovie=@IsMovie)");
3533-
}
3483+
if (alternateTypes.Count == 0)
3484+
{
3485+
programAttribtues.Add("IsMovie=@IsMovie");
3486+
}
3487+
else
3488+
{
3489+
programAttribtues.Add("(IsMovie is null OR IsMovie=@IsMovie)");
3490+
}
35343491

3535-
if (statement != null)
3536-
{
3537-
statement.TryBind("@IsMovie", true);
3538-
}
3492+
if (statement != null)
3493+
{
3494+
statement.TryBind("@IsMovie", true);
35393495
}
3540-
if (query.IsSeries ?? false)
3496+
3497+
whereClauses.Add("(" + string.Join(" OR ", programAttribtues.ToArray(programAttribtues.Count)) + ")");
3498+
}
3499+
else if (query.IsMovie.HasValue)
3500+
{
3501+
whereClauses.Add("IsMovie=@IsMovie");
3502+
if (statement != null)
35413503
{
3542-
programAttribtues.Add("IsSeries=@IsSeries");
3543-
if (statement != null)
3544-
{
3545-
statement.TryBind("@IsSeries", query.IsSeries);
3546-
}
3504+
statement.TryBind("@IsMovie", query.IsMovie);
35473505
}
3548-
if (programAttribtues.Count > 0)
3506+
}
3507+
3508+
if (query.IsSeries.HasValue)
3509+
{
3510+
whereClauses.Add("IsSeries=@IsSeries");
3511+
if (statement != null)
35493512
{
3550-
whereClauses.Add("(" + string.Join(" OR ", programAttribtues.ToArray(programAttribtues.Count)) + ")");
3513+
statement.TryBind("@IsSeries", query.IsSeries);
35513514
}
35523515
}
35533516

35543517
if (query.IsSports.HasValue)
35553518
{
3556-
if (query.IsSports.HasValue)
3519+
if (query.IsSports.Value)
35573520
{
35583521
tags.Add("Sports");
35593522
}
@@ -3565,7 +3528,7 @@ private List<string> GetWhereClauses(InternalItemsQuery query, IStatement statem
35653528

35663529
if (query.IsNews.HasValue)
35673530
{
3568-
if (query.IsNews.HasValue)
3531+
if (query.IsNews.Value)
35693532
{
35703533
tags.Add("News");
35713534
}
@@ -3577,7 +3540,7 @@ private List<string> GetWhereClauses(InternalItemsQuery query, IStatement statem
35773540

35783541
if (query.IsKids.HasValue)
35793542
{
3580-
if (query.IsKids.HasValue)
3543+
if (query.IsKids.Value)
35813544
{
35823545
tags.Add("Kids");
35833546
}
@@ -3656,8 +3619,8 @@ private List<string> GetWhereClauses(InternalItemsQuery query, IStatement statem
36563619

36573620
if (!string.IsNullOrWhiteSpace(query.Path))
36583621
{
3659-
//whereClauses.Add("(Path=@Path COLLATE NOCASE)");
3660-
whereClauses.Add("Path=@Path");
3622+
whereClauses.Add("(Path=@Path COLLATE NOCASE)");
3623+
//whereClauses.Add("Path=@Path");
36613624
if (statement != null)
36623625
{
36633626
statement.TryBind("@Path", GetPathToSave(query.Path));

Emby.Server.Implementations/Diagnostics/CommonProcess.cs

+9-1
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,18 @@ public Task<bool> WaitForExitAsync(int timeMs)
108108
return Task.FromResult(true);
109109
}
110110

111+
//if (_process.WaitForExit(100))
112+
//{
113+
// return Task.FromResult(true);
114+
//}
115+
116+
//timeMs -= 100;
117+
timeMs = Math.Max(0, timeMs);
118+
111119
var tcs = new TaskCompletionSource<bool>();
112120

113121
var cancellationToken = new CancellationTokenSource(timeMs).Token;
114-
_process.Exited += (sender, args) => tcs.TrySetResult(HasExited);
122+
_process.Exited += (sender, args) => tcs.TrySetResult(true);
115123

116124
cancellationToken.Register(() => tcs.TrySetResult(HasExited));
117125

Emby.Server.Implementations/EntryPoints/ExternalPortForwarding.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ private async void _deviceDiscovery_DeviceDiscovered(object sender, GenericEvent
184184
var natManager = _natManager;
185185
if (natManager != null)
186186
{
187-
natManager.Handle(localAddress, info, endpoint, NatProtocol.Upnp);
187+
await natManager.Handle(localAddress, info, endpoint, NatProtocol.Upnp).ConfigureAwait(false);
188188
}
189189
}
190190
}

Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ private async void SendMessageToUserSession<T>(User user, string name, T data)
167167
{
168168

169169
}
170-
catch (Exception ex)
170+
catch (Exception)
171171
{
172172
//Logger.ErrorException("Error sending message", ex);
173173
}

Emby.Server.Implementations/HttpServer/HttpListenerHost.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -648,34 +648,34 @@ await Write(httpRes,
648648
}
649649
else
650650
{
651-
ErrorHandler(new FileNotFoundException(), httpReq, false, false);
651+
await ErrorHandler(new FileNotFoundException(), httpReq, false, false).ConfigureAwait(false);
652652
}
653653
}
654654
catch (OperationCanceledException ex)
655655
{
656-
ErrorHandler(ex, httpReq, false, false);
656+
await ErrorHandler(ex, httpReq, false, false).ConfigureAwait(false);
657657
}
658658

659659
catch (IOException ex)
660660
{
661-
ErrorHandler(ex, httpReq, false, false);
661+
await ErrorHandler(ex, httpReq, false, false).ConfigureAwait(false);
662662
}
663663

664664
catch (SocketException ex)
665665
{
666-
ErrorHandler(ex, httpReq, false, false);
666+
await ErrorHandler(ex, httpReq, false, false).ConfigureAwait(false);
667667
}
668668

669669
catch (SecurityException ex)
670670
{
671-
ErrorHandler(ex, httpReq, false, true);
671+
await ErrorHandler(ex, httpReq, false, true).ConfigureAwait(false);
672672
}
673673

674674
catch (Exception ex)
675675
{
676676
var logException = !string.Equals(ex.GetType().Name, "SocketException", StringComparison.OrdinalIgnoreCase);
677677

678-
ErrorHandler(ex, httpReq, logException, false);
678+
await ErrorHandler(ex, httpReq, logException, false).ConfigureAwait(false);
679679
}
680680
finally
681681
{

Emby.Server.Implementations/HttpServer/StreamWriter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public async Task WriteToAsync(Stream responseStream, CancellationToken cancella
106106
}
107107
}
108108
}
109-
catch (Exception ex)
109+
catch
110110
{
111111
if (OnError != null)
112112
{

Emby.Server.Implementations/Library/MediaSourceManager.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,8 @@ private void SetDefaultAudioStreamIndex(MediaSourceInfo source, UserItemData use
373373

374374
public void SetDefaultAudioAndSubtitleStreamIndexes(BaseItem item, MediaSourceInfo source, User user)
375375
{
376-
var mediaType = item.MediaType;
376+
// Item would only be null if the app didn't supply ItemId as part of the live stream open request
377+
var mediaType = item == null ? MediaType.Video : item.MediaType;
377378

378379
if (string.Equals(mediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase))
379380
{

0 commit comments

Comments
 (0)