summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2010-09-11 19:32:16 +0000
committerAndreas Brachold <vdr07@deltab.de>2010-09-11 19:32:16 +0000
commit81b22ed394e9e7445ccb6e762805f3f3fdb8b7be (patch)
tree1ad7c01527e98bd0a3c0a0f6b499d42543547b43 /lib
parent1fdbb8ab987f201721e91b978e71c5bb3347bd82 (diff)
downloadxxv-81b22ed394e9e7445ccb6e762805f3f3fdb8b7be.tar.gz
xxv-81b22ed394e9e7445ccb6e762805f3f3fdb8b7be.tar.bz2
EPG/TIMER/CHANNELS: handle epg-events improve on multi recorder environment
Diffstat (limited to 'lib')
-rw-r--r--lib/XXV/MODULES/CHANNELS.pm2
-rw-r--r--lib/XXV/MODULES/EPG.pm12
-rw-r--r--lib/XXV/MODULES/TIMERS.pm5
3 files changed, 12 insertions, 7 deletions
diff --git a/lib/XXV/MODULES/CHANNELS.pm b/lib/XXV/MODULES/CHANNELS.pm
index 9b3ae67..0d5fb20 100644
--- a/lib/XXV/MODULES/CHANNELS.pm
+++ b/lib/XXV/MODULES/CHANNELS.pm
@@ -842,7 +842,7 @@ sub ChannelWithGroup {
my $sql = sprintf(q|
SELECT SQL_CACHE %s, ( SELECT g.name FROM CHANNELGROUPS as g WHERE c.grp = g.id AND c.vid = g.vid LIMIT 1) as grp
- from CHANNELS as c,CHANNELGROUPS as g %s GROUP BY c.id order by c.vid, c.pos
+ from CHANNELS as c,CHANNELGROUPS as g %s GROUP BY c.id order by c.pos,c.vid
|, $field, $where);
# my $sql = sprintf(q|SELECT SQL_CACHE %s, ( SELECT
diff --git a/lib/XXV/MODULES/EPG.pm b/lib/XXV/MODULES/EPG.pm
index 8dd2fa9..d9121c6 100644
--- a/lib/XXV/MODULES/EPG.pm
+++ b/lib/XXV/MODULES/EPG.pm
@@ -214,7 +214,7 @@ sub _init {
return 0;
}
- my $version = 30; # Must be increment if rows of table changed
+ my $version = 32; # Must be increment if rows of table changed
# this tables hasen't handmade user data,
# therefore old table could dropped if updated rows
@@ -239,11 +239,11 @@ sub _init {
tableid tinyint(4) default 0,
image text default '',
version tinyint default 0,
- video varchar(100) default '',
- audio varchar(255) default '',
+ video varchar(32) default '',
+ audio varchar(128) default '',
addtime datetime NOT NULL default '0000-00-00 00:00:00',
vpstime datetime default '0000-00-00 00:00:00',
- PRIMARY KEY (vid,eventid,channel_id),
+ PRIMARY KEY (vid,eventid),
INDEX (starttime),
INDEX (channel_id)
) COMMENT = '$version'
@@ -536,7 +536,7 @@ sub encodeEpgId {
my @id = split('-', $channel);
# Make a fix format 0xCCCCEEEE : C-Channelid (high-word), E-Eventid(low-word) => real-eventid = uniqueid & FFFF
- my $eventid = (($vid & 0xFF) << 24) | ((($id[-3] + $id[-2] + $id[-1]) & 0x3FFF) << 16) | ($epgid & 0xFFFF);
+ my $eventid = ((($id[-3] + $id[-2] + $id[-1]) & 0x3FFF) << 16) | ($epgid & 0xFFFF);
$eventid &= 0x6FFFFFFF; # Keep 0x70000000 .... free for recording events
return $eventid;
@@ -743,7 +743,7 @@ sub search {
AND ( $search->{query} )
AND ((UNIX_TIMESTAMP(e.starttime) + e.duration) > UNIX_TIMESTAMP())
group by
- c.id , e.eventid
+ c.id, e.eventid
order by
starttime
|;
diff --git a/lib/XXV/MODULES/TIMERS.pm b/lib/XXV/MODULES/TIMERS.pm
index 8b63d92..1bc2cde 100644
--- a/lib/XXV/MODULES/TIMERS.pm
+++ b/lib/XXV/MODULES/TIMERS.pm
@@ -1032,6 +1032,7 @@ sub _insert {
# Search for event at EPG
my $e = $self->_getNextEpgId( {
+ vid => $timer->{vid},
pos => $timer->{pos},
flags => $timer->{flags},
channel => $timer->{channel},
@@ -1829,6 +1830,7 @@ sub _getNextEpgId {
channel_id = ?
AND ((UNIX_TIMESTAMP(%s) + (duration/2)) between ? and ? )
AND (title like ? or title like ? )
+ AND vid = ?
ORDER BY ABS(( ? )-UNIX_TIMESTAMP(%s)) LIMIT 1
|,$timemode,$timemode,$timemode));
if(!$sth->execute($timer->{channel},
@@ -1836,6 +1838,7 @@ sub _getNextEpgId {
$timer->{stop},
'%'.$file[-2].'%',
'%'.$file[-1].'%',
+ $timer->{vid},
$timer->{start})) {
lg sprintf("Couldn't find epg event for timer with id %d - %s", $timer->{pos} , $timer->{file} );
return 0;
@@ -1849,12 +1852,14 @@ sub _getNextEpgId {
channel_id = ?
AND ((UNIX_TIMESTAMP(%s) + (duration/2)) between ? and ? )
AND (title like ? )
+ AND vid = ?
ORDER BY ABS(( ? )-UNIX_TIMESTAMP(%s)) LIMIT 1
|,$timemode,$timemode,$timemode));
if(!$sth->execute($timer->{channel},
$timer->{start},
$timer->{stop},
'%'.$timer->{file}.'%',
+ $timer->{vid},
$timer->{start})) {
lg sprintf("Couldn't find epg event for timer with id %d - %s", $timer->{pos} , $timer->{file} );
return 0;