Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/MediaPortal-1/MP1-4501-BUG-EPG_…
Browse files Browse the repository at this point in the history
…TV_proper_fix_reopened_update'
  • Loading branch information
HomeY committed Feb 2, 2015
2 parents e4d14fb + 309f39d commit 19db65c
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 48 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -288,15 +288,16 @@ private List<Schedule>[] AssignSchedulesToCards(IList<Schedule> Schedules)
{
// checks if any schedule assigned to this cards overlaps current parsed schedule
bool free = true;
foreach (Schedule assignedShedule in cardSchedules[cardno[card.IdCard]])
foreach (Schedule assignedSchedule in cardSchedules[cardno[card.IdCard]])
{
if (schedule.IsOverlapping(assignedShedule))
if (schedule.IsOverlapping(assignedSchedule))
{
if (!(schedule.isSameTransponder(assignedShedule) && card.supportSubChannels))
bool _isSameTransponder = (cmLayer.isSameTransponder(schedule, assignedSchedule) && card.supportSubChannels);
if (!_isSameTransponder)
{
free = false;
//_overlap = true;
lastOverlappingSchedule = assignedShedule;
lastOverlappingSchedule = assignedSchedule;
lastBusyCard = card.IdCard;
break;
}
Expand Down
23 changes: 0 additions & 23 deletions TvEngine3/TVLibrary/TVDatabase/Schedule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1373,29 +1373,6 @@ public bool IsOverlapping(Schedule schedule)
return false;
}

/// <summary>
/// checks if 2 schedules have a common Transponder
/// depending on tuningdetails of their respective channels
/// </summary>
/// <param name="schedule"></param>
/// <returns>True if a common transponder exists</returns>
public bool isSameTransponder(Schedule schedule)
{
IList<TuningDetail> tuningList1 = ReferencedChannel().ReferringTuningDetail();
IList<TuningDetail> tuningList2 = schedule.ReferencedChannel().ReferringTuningDetail();
foreach (TuningDetail tun1 in tuningList1)
{
foreach (TuningDetail tun2 in tuningList2)
{
if (tun1.Frequency == tun2.Frequency)
{
return true;
}
}
}
return false;
}

public QualityType QualityType
{
get { return (QualityType)(quality / 10); }
Expand Down
47 changes: 26 additions & 21 deletions TvEngine3/TVLibrary/TVDatabase/TvBusinessLayer/BusinessLayer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2938,7 +2938,6 @@ public void GetConflictingSchedules(Schedule rec, out List<Schedule> conflicting
List<Schedule> overlapping;
List<Schedule> notViewable;
AssignSchedulesToCard(episode, cardSchedules, out overlapping, out notViewable);
break;
}
}
}
Expand All @@ -2956,38 +2955,42 @@ public void GetConflictingSchedules(Schedule rec, out List<Schedule> conflicting
}
List<Schedule> overlapping;
List<Schedule> notViewable;
if (!AssignSchedulesToCardConflict(newEpisode, cardSchedules, out overlapping, out notViewable))
if (!AssignSchedulesToCard(newEpisode, cardSchedules, out overlapping, out notViewable))
{
Log.Info("GetConflictingSchedules: newEpisode can not be assigned to a card = " + newEpisode);
conflictingSchedules.AddRange(overlapping);
notViewableSchedules.AddRange(notViewable);
}
}
return;
}

private static bool AssignSchedulesToCard(Schedule schedule, List<Schedule>[] cardSchedules,
out List<Schedule> overlappingSchedules, out List<Schedule> notViewabledSchedules)
/// <summary>
/// checks if 2 schedules have a common Transponder
/// depending on tuningdetails of their respective channels
/// </summary>
/// <param name="schedule"></param>
/// <returns>True if a common transponder exists</returns>
public bool isSameTransponder(Schedule schedule1, Schedule schedule2)
{
overlappingSchedules = new List<Schedule>();
notViewabledSchedules = new List<Schedule>();
Log.Info("AssignSchedulesToCard: schedule = " + schedule);
IList<Card> cards = Card.ListAllEnabled();
int count = 0;
foreach (Card card in cards)
IList<TuningDetail> tuningDetailList1 = schedule1.ReferencedChannel().ReferringTuningDetail();
IList<TuningDetail> tuningDetailList2 = schedule2.ReferencedChannel().ReferringTuningDetail();
foreach (TuningDetail td1 in tuningDetailList1)
{
if (card.canViewTvChannel(schedule.IdChannel))
IChannel c1 = GetTuningChannel(td1);
foreach (TuningDetail td2 in tuningDetailList2)
{
Log.Info("AssignSchedulesToCard: free on card {0}, ID = {1}", count, card.IdCard);
cardSchedules[count].Add(schedule);
break;
if (!c1.IsDifferentTransponder(GetTuningChannel(td2)))
{
return true;
}
}
count++;
}
return true;
return false;
}

private static bool AssignSchedulesToCardConflict(Schedule schedule, List<Schedule>[] cardSchedules,
out List<Schedule> overlappingSchedules, out List<Schedule> notViewabledSchedules)
private bool AssignSchedulesToCard(Schedule schedule, List<Schedule>[] cardSchedules,
out List<Schedule> overlappingSchedules, out List<Schedule> notViewabledSchedules)
{
overlappingSchedules = new List<Schedule>();
notViewabledSchedules = new List<Schedule>();
Expand All @@ -3009,18 +3012,20 @@ private static bool AssignSchedulesToCardConflict(Schedule schedule, List<Schedu
bool hasOverlappingSchedule = schedule.IsOverlapping(assignedSchedule);
if (hasOverlappingSchedule)
{
bool isSameTransponder = (schedule.isSameTransponder(assignedSchedule) && card.supportSubChannels);
if (!isSameTransponder)
bool _isSameTransponder = (isSameTransponder(schedule, assignedSchedule) && card.supportSubChannels);
if (!_isSameTransponder)
{
overlappingSchedules.Add(assignedSchedule);
Log.Info("AssignSchedulesToCard: overlapping with " + assignedSchedule + " on card {0}, ID = {1}", count, card.IdCard);
Log.Info("AssignSchedulesToCard: overlapping with " + assignedSchedule + " on card {0}, ID = {1}", count,
card.IdCard);
free = false;
}
}
}
if (free)
{
Log.Info("AssignSchedulesToCard: free on card {0}, ID = {1}", count, card.IdCard);
cardSchedules[count].Add(schedule);
assigned = true;
break;
}
Expand Down

0 comments on commit 19db65c

Please sign in to comment.