|
|
@ -133,7 +133,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
|
|
|
|
|
|
|
|
|
void service_DataSourceChanged(object sender, EventArgs e)
|
|
|
|
void service_DataSourceChanged(object sender, EventArgs e)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_taskManager.CancelIfRunningAndQueue<RefreshChannelsScheduledTask>();
|
|
|
|
if (!_isDisposed)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
_taskManager.CancelIfRunningAndQueue<RefreshChannelsScheduledTask>();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<QueryResult<LiveTvChannel>> GetInternalChannels(LiveTvChannelQuery query, CancellationToken cancellationToken)
|
|
|
|
public async Task<QueryResult<LiveTvChannel>> GetInternalChannels(LiveTvChannelQuery query, CancellationToken cancellationToken)
|
|
|
@ -1238,7 +1241,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
|
var programs = new List<Guid>();
|
|
|
|
var programs = new List<Guid>();
|
|
|
|
var channels = new List<Guid>();
|
|
|
|
var channels = new List<Guid>();
|
|
|
|
|
|
|
|
|
|
|
|
var guideDays = GetGuideDays(list.Count);
|
|
|
|
var guideDays = GetGuideDays();
|
|
|
|
|
|
|
|
|
|
|
|
_logger.Info("Refreshing guide with {0} days of guide data", guideDays);
|
|
|
|
_logger.Info("Refreshing guide with {0} days of guide data", guideDays);
|
|
|
|
|
|
|
|
|
|
|
@ -1326,7 +1329,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private const int MaxGuideDays = 14;
|
|
|
|
private const int MaxGuideDays = 14;
|
|
|
|
private double GetGuideDays(int channelCount)
|
|
|
|
private double GetGuideDays()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var config = GetConfiguration();
|
|
|
|
var config = GetConfiguration();
|
|
|
|
|
|
|
|
|
|
|
@ -1335,13 +1338,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
|
return Math.Max(1, Math.Min(config.GuideDays.Value, MaxGuideDays));
|
|
|
|
return Math.Max(1, Math.Min(config.GuideDays.Value, MaxGuideDays));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var programsPerDay = channelCount * 48;
|
|
|
|
return 7;
|
|
|
|
|
|
|
|
|
|
|
|
const int maxPrograms = 24000;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var days = Math.Round((double)maxPrograms / programsPerDay);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return Math.Max(3, Math.Min(days, MaxGuideDays));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private async Task<IEnumerable<Tuple<string, ChannelInfo>>> GetChannels(ILiveTvService service, CancellationToken cancellationToken)
|
|
|
|
private async Task<IEnumerable<Tuple<string, ChannelInfo>>> GetChannels(ILiveTvService service, CancellationToken cancellationToken)
|
|
|
@ -2309,6 +2306,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private readonly object _disposeLock = new object();
|
|
|
|
private readonly object _disposeLock = new object();
|
|
|
|
|
|
|
|
private bool _isDisposed = false;
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// Releases unmanaged and - optionally - managed resources.
|
|
|
|
/// Releases unmanaged and - optionally - managed resources.
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
@ -2317,6 +2315,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (dispose)
|
|
|
|
if (dispose)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
_isDisposed = true;
|
|
|
|
|
|
|
|
|
|
|
|
lock (_disposeLock)
|
|
|
|
lock (_disposeLock)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
foreach (var stream in _openStreams.Values.ToList())
|
|
|
|
foreach (var stream in _openStreams.Values.ToList())
|
|
|
|