diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2010-09-11 19:32:16 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2010-09-11 19:32:16 +0000 |
| commit | 81b22ed394e9e7445ccb6e762805f3f3fdb8b7be (patch) | |
| tree | 1ad7c01527e98bd0a3c0a0f6b499d42543547b43 /lib | |
| parent | 1fdbb8ab987f201721e91b978e71c5bb3347bd82 (diff) | |
| download | xxv-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.pm | 2 | ||||
| -rw-r--r-- | lib/XXV/MODULES/EPG.pm | 12 | ||||
| -rw-r--r-- | lib/XXV/MODULES/TIMERS.pm | 5 |
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; |
