2013-05-15, 03:43
If you have EPG data for the channel then the name is after the show, but if you have no EPG then the name comes after the channel. Since it is a manual recording then it appends the date and time to the title as well. I also just figured out that the way the EPG screen shows a red dot for currently recording shows doesn't work with instant recordings. I tracked this down to a file in the main xbmc code at src/xbmc/xbmc/pvr/timers/PVRTimers.cpp
I found the method named CPVRTimers::GetTimerForEpgTag and edited it to say the following...
I really only changed one line but I posted the entire method above since I didn't diff it yet.
Now I just got to figure out how to get this change in front of an xbmc dev to see if it can get committed. I have no idea where to start with getting something into the main xbmc code tree. But with the previous patch to the cmyth addon and the above fix to the main xbmc code instant recordings end on EPG correctly and the red dot shows up on the EPG grid view as it should for current recordings that were started after the beginning of the show.
I found the method named CPVRTimers::GetTimerForEpgTag and edited it to say the following...
Code:
CFileItemPtr CPVRTimers::GetTimerForEpgTag(const CFileItem *item) const
{
if (item && item->HasEPGInfoTag() && item->GetEPGInfoTag()->ChannelTag())
{
const CEpgInfoTag *epgTag = item->GetEPGInfoTag();
const CPVRChannelPtr channel = epgTag->ChannelTag();
CSingleLock lock(m_critSection);
for (map<CDateTime, vector<CPVRTimerInfoTagPtr>* >::const_iterator it = m_tags.begin(); it != m_tags.end(); it++)
{
for (vector<CPVRTimerInfoTagPtr>::const_iterator timerIt = it->second->begin(); timerIt != it->second->end(); timerIt++)
{
CPVRTimerInfoTagPtr timer = *timerIt;
if (timer->m_iClientChannelUid == channel->UniqueID() &&
timer->m_bIsRadio == channel->IsRadio() &&
timer->EndAsUTC() >= epgTag->EndAsUTC() &&
(timer->StartAsUTC() <= epgTag->StartAsUTC() || (timer->StartAsUTC() > epgTag->StartAsUTC() && timer->IsRecording())))
{
CFileItemPtr fileItem(new CFileItem(*timer));
return fileItem;
}
}
}
}
CFileItemPtr fileItem;
return fileItem;
}
I really only changed one line but I posted the entire method above since I didn't diff it yet.
Code:
(timer->StartAsUTC() <= epgTag->StartAsUTC() || (timer->StartAsUTC() > epgTag->StartAsUTC() && timer->IsRecording())))