CSingleLock lock(m_critSection);
for (map<CDateTime, CEpgInfoTagPtr>::const_iterator it = m_tags.begin(); it != m_tags.end(); it++)
{
- if ((it->second->StartAsUTC() <= time) && (it->second->EndAsUTC() >= time))
+ if ((it->second->StartAsUTC() < time) && (it->second->EndAsUTC() > time))
return it->second;
}
it->second->ClearTimer();
m_tags.erase(it++);
}
- else if (previousTag->EndAsUTC() > currentTag->StartAsUTC())
+ else if (previousTag->EndAsUTC() != currentTag->StartAsUTC())
{
- currentTag->SetStartFromUTC(previousTag->EndAsUTC());
+ previousTag->SetEndFromUTC(currentTag->StartAsUTC());
if (bUpdateDb)
- m_changedTags.insert(make_pair(currentTag->UniqueBroadcastID(), currentTag));
-
- previousTag = it->second;
- }
- else if (previousTag->EndAsUTC() < currentTag->StartAsUTC())
- {
- time_t start, end, middle;
- previousTag->EndAsUTC().GetAsTime(start);
- currentTag->StartAsUTC().GetAsTime(end);
- middle = start + ((end - start) / 2);
- CDateTime newTime(middle);
-
- currentTag->SetStartFromUTC(newTime);
- previousTag->SetEndFromUTC(newTime);
-
- if (m_nowActiveStart == it->first)
- m_nowActiveStart = currentTag->StartAsUTC();
-
- if (bUpdateDb)
- {
- m_changedTags.insert(make_pair(currentTag->UniqueBroadcastID(), currentTag));
m_changedTags.insert(make_pair(previousTag->UniqueBroadcastID(), previousTag));
- }
previousTag = it->second;
}