mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Version 1.3.34
- Fixed a leftover 'summary.vdr' in vdr.5 (thanks to Peter Bieringer for reporting this one). - Fixed opening recording folders in case the last replayed recording no longer exists (reported by Udo Richter). - Fixed an unjustified "Error while accessing recording!" after deleting a recording from a subfolder. - Fixed handling the '.update' file in case the video directory is not at the default location (reported by Jon Burgess). - Fixed a crash in cConfig::Load() when compiling on the PPC (thanks to Sascha Volkenandt). - Fixed the FATALERRNO macro to check for a non-zero errno value (reported by Marco Schlüßler). - Added a check against MAXOSDAREAS in cOsd::CanHandleAreas() (reported by Udo Richter). - Fixed setting current menu item if the first one is non-selectable. - cOsdItem::cOsdItem() now has a 'Selectable' parameter. - Improved displaying 'sub-title' and 'bottom text' in the CAM menu. - Added status message "Resetting CAM..." for an immediate feedback when the CAM reset has been triggered. - The CAM menu now automatically updates itself in case of a progress display (as used, for instance, when updating the firmware via satellite). - Now skipping some funny characters sent by some CAMs at the beginning of strings. - The CAM menu is now completely closed when pressing the Menu key while inside a sub menu. - Reduced MAX_CONNECT_RETRIES in ci.c to 2 (waiting too long made the whole thing appear hanging). - Added status message "Opening CAM menu..." for an immediate feedback when the CAM menu has been requested. - Speeded up initial opening of the CAM menu. - Fixed handling of menus with no selectable items. - The character 0x8A in CAM menu strings is now mapped to a real newline. - The 'sub-title' and 'bottom text' in the CAM menu can now consist of several lines. - Improved the CAM enquiry menu.
This commit is contained in:
parent
c16bbf7422
commit
88d8d63408
@ -791,6 +791,7 @@ Sascha Volkenandt <sascha@akv-soft.de>
|
|||||||
for reporting a bug in timeout handling in cRwLock::Lock()
|
for reporting a bug in timeout handling in cRwLock::Lock()
|
||||||
for pointing out that the SVDRP command DELR deleted recordings that are currently
|
for pointing out that the SVDRP command DELR deleted recordings that are currently
|
||||||
being written to by a timer
|
being written to by a timer
|
||||||
|
for fixing a crash in cConfig::Load() when compiling on the PPC
|
||||||
|
|
||||||
Malcolm Caldwell <malcolm.caldwell@ntu.edu.au>
|
Malcolm Caldwell <malcolm.caldwell@ntu.edu.au>
|
||||||
for modifying LOF handling to allow for C-band reception
|
for modifying LOF handling to allow for C-band reception
|
||||||
@ -918,6 +919,7 @@ Hermann Gausterer <mrq1@gmx.net>
|
|||||||
Peter Bieringer <pb@bieringer.de>
|
Peter Bieringer <pb@bieringer.de>
|
||||||
for reporting a problem with duplicate recordings with the same file name
|
for reporting a problem with duplicate recordings with the same file name
|
||||||
for suggesting to implement the command line option '--vfat'
|
for suggesting to implement the command line option '--vfat'
|
||||||
|
for reporting a leftover 'summary.vdr' in vdr.5
|
||||||
|
|
||||||
Alexander Damhuis <ad@phonedation.de>
|
Alexander Damhuis <ad@phonedation.de>
|
||||||
for reporting problems when deleting a timer that is currently recording
|
for reporting problems when deleting a timer that is currently recording
|
||||||
@ -933,6 +935,8 @@ Jon Burgess <mplayer@jburgess.uklinux.net>
|
|||||||
for pointing out a problem with NPTL ("Native Posix Thread Library")
|
for pointing out a problem with NPTL ("Native Posix Thread Library")
|
||||||
for changing thread handling to make it work with NPTL ("Native Posix Thread Library")
|
for changing thread handling to make it work with NPTL ("Native Posix Thread Library")
|
||||||
for fixing a memory leak in thread handling when using NPTL
|
for fixing a memory leak in thread handling when using NPTL
|
||||||
|
for reporting a bug in handling the '.update' file in case the video directory is
|
||||||
|
not at the default location
|
||||||
|
|
||||||
Thomas Schmidt <thomas.schmidt@in.stud.tu-ilmenau.de>
|
Thomas Schmidt <thomas.schmidt@in.stud.tu-ilmenau.de>
|
||||||
for reporting a crash when canceling a newly created timer
|
for reporting a crash when canceling a newly created timer
|
||||||
@ -1229,6 +1233,7 @@ Marco Schl
|
|||||||
for improving resetting CAM connections
|
for improving resetting CAM connections
|
||||||
for fixing handling EPG data for time shifted events
|
for fixing handling EPG data for time shifted events
|
||||||
for fixing detecting short channel names for "Kabel Deutschland"
|
for fixing detecting short channel names for "Kabel Deutschland"
|
||||||
|
for reporting that the FATALERRNO macro needs to check for a non-zero errno value
|
||||||
|
|
||||||
Jürgen Schmitz <j.schmitz@web.de>
|
Jürgen Schmitz <j.schmitz@web.de>
|
||||||
for reporting a bug in displaying the current channel when switching via the SVDRP
|
for reporting a bug in displaying the current channel when switching via the SVDRP
|
||||||
@ -1281,6 +1286,9 @@ Udo Richter <udo_richter@gmx.de>
|
|||||||
for reporting a problem with cRemux in a single thread
|
for reporting a problem with cRemux in a single thread
|
||||||
for adding 'Service' functions to the plugin interface
|
for adding 'Service' functions to the plugin interface
|
||||||
for reporting an unused MAINMENUENTRY in svdrpdemo.c
|
for reporting an unused MAINMENUENTRY in svdrpdemo.c
|
||||||
|
for reporting a bug in opening recording folders in case the last replayed recording
|
||||||
|
no longer exists
|
||||||
|
for reporting a missing check against MAXOSDAREAS in cOsd::CanHandleAreas()
|
||||||
|
|
||||||
Sven Kreiensen <svenk@kammer.uni-hannover.de>
|
Sven Kreiensen <svenk@kammer.uni-hannover.de>
|
||||||
for his help in keeping 'channels.conf.terr' up to date
|
for his help in keeping 'channels.conf.terr' up to date
|
||||||
|
38
HISTORY
38
HISTORY
@ -45,7 +45,7 @@ Video Disk Recorder Revision History
|
|||||||
a prepended '@' character.
|
a prepended '@' character.
|
||||||
- If an instant recording is currently active, the "Main" menu now contains
|
- If an instant recording is currently active, the "Main" menu now contains
|
||||||
an option to stop that recording.
|
an option to stop that recording.
|
||||||
- Timers are now only processed when the Menu is not active. So after editing
|
- Timers are now only processed when the menu is not active. So after editing
|
||||||
a timer the effect will take place only after the menu has been closed.
|
a timer the effect will take place only after the menu has been closed.
|
||||||
In order to avoid missing a timer event by inadvertently leaving the menu
|
In order to avoid missing a timer event by inadvertently leaving the menu
|
||||||
open, the menu will be closed automatically after about two minutes of
|
open, the menu will be closed automatically after about two minutes of
|
||||||
@ -3849,3 +3849,39 @@ Video Disk Recorder Revision History
|
|||||||
added or deleted, so that other VDR instances can update their lists (thanks to
|
added or deleted, so that other VDR instances can update their lists (thanks to
|
||||||
Alexander Rieger).
|
Alexander Rieger).
|
||||||
- Made the function ExchangeChars() public (suggested by Lucian Muresan).
|
- Made the function ExchangeChars() public (suggested by Lucian Muresan).
|
||||||
|
|
||||||
|
2005-10-03: Version 1.3.34
|
||||||
|
|
||||||
|
- Fixed a leftover 'summary.vdr' in vdr.5 (thanks to Peter Bieringer for reporting
|
||||||
|
this one).
|
||||||
|
- Fixed opening recording folders in case the last replayed recording no longer
|
||||||
|
exists (reported by Udo Richter).
|
||||||
|
- Fixed an unjustified "Error while accessing recording!" after deleting a recording
|
||||||
|
from a subfolder.
|
||||||
|
- Fixed handling the '.update' file in case the video directory is not at the default
|
||||||
|
location (reported by Jon Burgess).
|
||||||
|
- Fixed a crash in cConfig::Load() when compiling on the PPC (thanks to Sascha
|
||||||
|
Volkenandt).
|
||||||
|
- Fixed the FATALERRNO macro to check for a non-zero errno value (reported by Marco
|
||||||
|
Schlüßler).
|
||||||
|
- Added a check against MAXOSDAREAS in cOsd::CanHandleAreas() (reported by Udo
|
||||||
|
Richter).
|
||||||
|
- Fixed setting current menu item if the first one is non-selectable.
|
||||||
|
- cOsdItem::cOsdItem() now has a 'Selectable' parameter.
|
||||||
|
- Improved displaying 'sub-title' and 'bottom text' in the CAM menu.
|
||||||
|
- Added status message "Resetting CAM..." for an immediate feedback when the CAM
|
||||||
|
reset has been triggered.
|
||||||
|
- The CAM menu now automatically updates itself in case of a progress display (as
|
||||||
|
used, for instance, when updating the firmware via satellite).
|
||||||
|
- Now skipping some funny characters sent by some CAMs at the beginning of strings.
|
||||||
|
- The CAM menu is now completely closed when pressing the Menu key while inside
|
||||||
|
a sub menu.
|
||||||
|
- Reduced MAX_CONNECT_RETRIES in ci.c to 2 (waiting too long made the whole thing
|
||||||
|
appear hanging).
|
||||||
|
- Added status message "Opening CAM menu..." for an immediate feedback when the CAM
|
||||||
|
menu has been requested.
|
||||||
|
- Speeded up initial opening of the CAM menu.
|
||||||
|
- Fixed handling of menus with no selectable items.
|
||||||
|
- The character 0x8A in CAM menu strings is now mapped to a real newline.
|
||||||
|
- The 'sub-title' and 'bottom text' in the CAM menu can now consist of several lines.
|
||||||
|
- Improved the CAM enquiry menu.
|
||||||
|
@ -17,3 +17,7 @@ VDR Plugin 'skincurses' Revision History
|
|||||||
2005-05-16: Version 0.0.4
|
2005-05-16: Version 0.0.4
|
||||||
|
|
||||||
- New "recording info" display.
|
- New "recording info" display.
|
||||||
|
|
||||||
|
2005-10-01:
|
||||||
|
|
||||||
|
- Added a note about using this skin to the README file.
|
||||||
|
@ -14,3 +14,11 @@ The 'skincurses' plugin implements a VDR skin that works in a
|
|||||||
shell window, using only plain text output. It re-implements
|
shell window, using only plain text output. It re-implements
|
||||||
what used to be available by compiling VDR versions before 1.3.7
|
what used to be available by compiling VDR versions before 1.3.7
|
||||||
with the DEBUG_OSD macro set.
|
with the DEBUG_OSD macro set.
|
||||||
|
|
||||||
|
To activate this skin you can either select it in the Setup/OSD
|
||||||
|
menu, or put the line
|
||||||
|
|
||||||
|
OSDSkin = curses
|
||||||
|
|
||||||
|
into your 'setup.conf' file before starting VDR. Make sure this
|
||||||
|
is the only OSDSkin line in that file.
|
||||||
|
@ -8,26 +8,27 @@ hr-fernsehen;ARD:11836:hC34:S19.2E:27500:301:302=deu:304:0:28108:1:1101:0
|
|||||||
NDR FS MV;ARD:12109:hC34:S19.2E:27500:2401:2402=deu:2404:0:28224:1:1073:0
|
NDR FS MV;ARD:12109:hC34:S19.2E:27500:2401:2402=deu:2404:0:28224:1:1073:0
|
||||||
SR SÜDWEST Fernsehen;ARD:12265:hC34:S19.2E:27500:1301:1302=deu:1304:0:28486:1:1093:0
|
SR SÜDWEST Fernsehen;ARD:12265:hC34:S19.2E:27500:1301:1302=deu:1304:0:28486:1:1093:0
|
||||||
WDR Köln;ARD:11836:hC34:S19.2E:27500:601:602=deu:604:0:28111:1:1101:0
|
WDR Köln;ARD:11836:hC34:S19.2E:27500:601:602=deu:604:0:28111:1:1101:0
|
||||||
BR-alpha;ARD:11836:hC34:S19.2E:27500:701:702=deu:704:0:28112:1:1101:0
|
BR-alpha;ARD:11836:hC34:S19.2E:27500:701:702=deu;703:704:0:28112:1:1101:0
|
||||||
SÜDWEST Ferns. BW;ARD:11836:hC34:S19.2E:27500:801:802=deu:804:0:28113:1:1101:0
|
SÜDWEST Ferns. BW;ARD:11836:hC34:S19.2E:27500:801:802=deu:804:0:28113:1:1101:0
|
||||||
Phoenix;ARD:11836:hC34:S19.2E:27500:901:902=deu:904:0:28114:1:1101:0
|
Phoenix;ARD:11836:hC34:S19.2E:27500:901:902=deu:904:0:28114:1:1101:0
|
||||||
ZDF;ZDFvision:11953:hC34:S19.2E:27500:110:120=deu,121=2ch;125=dd:130:0:28006:1:1079:0
|
ZDF;ZDFvision:11953:hC34:S19.2E:27500:110:120=deu,121=2ch;125=dd:130:0:28006:1:1079:0
|
||||||
3sat;ZDFvision:11953:hC34:S19.2E:27500:210:220=deu,221=2ch;225=dd:230:0:28007:1:1079:0
|
3sat;ZDFvision:11953:hC34:S19.2E:27500:210:220=deu,221=2ch;225=dd:230:0:28007:1:1079:0
|
||||||
KiKa;ZDFvision:11953:hC34:S19.2E:27500:310:320=deu:330:0:28008:1:1079:0
|
KiKa;ZDFvision:11953:hC34:S19.2E:27500:310:320:330:0:28008:1:1079:0
|
||||||
arte;ARD:11836:hC34:S19.2E:27500:401:402=deu,403=fra:404:0:28109:1:1101:0
|
arte;ARD:11836:hC34:S19.2E:27500:401:402=deu,403=fra:404:0:28109:1:1101:0
|
||||||
ORF1;ORF:12692:hC56:S19.2E:22000:160:161=deu;163=deu:165:1762,D05,1702,1801:13001:1:1117:0
|
ORF1;ORF:12692:hC56:S19.2E:22000:160:161=deu;163=deu:165:1762,D05,1702,1801:13001:1:1117:0
|
||||||
ORF2;ORF:12692:hC56:S19.2E:22000:500:501=deu;503=deu:505:3:13002:1:1117:0
|
ORF2;ORF:12692:hC56:S19.2E:22000:500:501=deu;503=deu:505:1762,D05,1702,1801:13002:1:1117:0
|
||||||
ZDFinfokanal;ZDFvision:11953:hC34:S19.2E:27500:610:620=deu:130:0:28011:1:1079:0
|
ZDFinfokanal;ZDFvision:11953:hC34:S19.2E:27500:610:620=deu:130:0:28011:1:1079:0
|
||||||
CNN Int.;CNN:11778:vC34:S19.2E:27500:165:100=eng:47:0:28522:1:1068:0
|
CNN Int.;CNN:11778:vC34:S19.2E:27500:165:100=eng:47:0:28522:1:1068:0
|
||||||
Super RTL,S RTL;RTL World:12187:hC34:S19.2E:27500:165:120=deu:65:0:12040:1:1089:0
|
Super RTL,S RTL;RTL World:12187:hC34:S19.2E:27500:165:120=deu:65:0:12040:1:1089:0
|
||||||
VOX;RTL World:12187:hC34:S19.2E:27500:167:136=deu:71:0:12060:1:1089:0
|
VOX;RTL World:12187:hC34:S19.2E:27500:167:136=deu:71:0:12060:1:1089:0
|
||||||
KABEL1;ProSiebenSat.1:12480:vC34:S19.2E:27500:511:512=deu:33:0:899:133:33:0
|
KABEL1;ProSiebenSat.1:12480:vC34:S19.2E:27500:511:512=deu:33:0:899:133:33:0
|
||||||
|
DAS VIERTE,D VIERTE;BetaDigital:12460:hC34:S19.2E:27500:2047:2048=deu:36:0:1793:133:5:0
|
||||||
NEUN LIVE Television,NEUN LIVE;BetaDigital:12480:vC34:S19.2E:27500:767:768=deu:35:0:897:133:33:0
|
NEUN LIVE Television,NEUN LIVE;BetaDigital:12480:vC34:S19.2E:27500:767:768=deu:35:0:897:133:33:0
|
||||||
DSF;BetaDigital:12480:vC34:S19.2E:27500:1023:1024=deu:39:0:900:133:33:0
|
DSF;BetaDigital:12480:vC34:S19.2E:27500:1023:1024=deu:39:0:900:133:33:0
|
||||||
HSE24,HSE24;BetaDigital:12480:vC34:S19.2E:27500:1279:1280=deu:37:0:40:133:33:0
|
HSE24,HSE24;BetaDigital:12480:vC34:S19.2E:27500:1279:1280=deu:37:0:40:133:33:0
|
||||||
Bloomberg TV Germany;Bloomberg:12551:vC56:S19.2E:22000:162:99=deu:0:0:12160:1:1108:0
|
Bloomberg TV Germany;Bloomberg:12551:vC56:S19.2E:22000:162:99=deu:0:0:12160:1:1108:0
|
||||||
EURONEWS;CSAT:11817:vC34:S19.2E:27500:163:92=fra,93=eng,94=ita,95=esl,91=rus,98=por,99=deu:0:0:8004:1:1070:0
|
EURONEWS;CSAT:11817:vC34:S19.2E:27500:163:92=fra,93=eng,94=ita,95=esl,98=por,99=deu,91=rus:0:0:8004:1:1070:0
|
||||||
rbb Brandenburg;ARD:12109:hC34:S19.2E:27500:601:602=deu:604:0:28205:1:1073:0
|
rbb Brandenburg;ARD:12109:hC34:S19.2E:27500:501:502=deu:504:0:28205:1:1073:0
|
||||||
Sky News:11597:vC56:S19.2E:22000:305+131:306=eng:0:0:28707:1:1026:0
|
Sky News:11597:vC56:S19.2E:22000:305+131:306=eng:0:0:28707:1:1026:0
|
||||||
Veronica/JETIX;CANALDIGITAAL:12574:hC56:S19.2E:22000:518+8190:92=dut:38:622,100:5020:53:1109:0
|
Veronica/JETIX;CANALDIGITAAL:12574:hC56:S19.2E:22000:518+8190:92=dut:38:622,100:5020:53:1109:0
|
||||||
BVN;CANALDIGITAAL:12574:hC56:S19.2E:22000:515+8190:96=dut:36:0:5025:53:1109:0
|
BVN;CANALDIGITAAL:12574:hC56:S19.2E:22000:515+8190:96=dut:36:0:5025:53:1109:0
|
||||||
@ -44,22 +45,22 @@ MDR FERNSEHEN;ARD:12109:hC34:S19.2E:27500:401:402=deu:404:0:28204:1:1073:0
|
|||||||
rbb Berlin;ARD:12109:hC34:S19.2E:27500:601:602=deu:604:0:28206:1:1073:0
|
rbb Berlin;ARD:12109:hC34:S19.2E:27500:601:602=deu:604:0:28206:1:1073:0
|
||||||
:Premiere World
|
:Premiere World
|
||||||
PREMIERE START,START;PREMIERE:11797:hC34:S19.2E:27500:255:256=deu:32:1:8:133:2:0
|
PREMIERE START,START;PREMIERE:11797:hC34:S19.2E:27500:255:256=deu:32:1:8:133:2:0
|
||||||
PREMIERE 1,PREM 1;PREMIERE:11797:hC34:S19.2E:27500:511:512=deu,513=deu;515=deu:32:1:10:133:2:0
|
PREMIERE 1,PREM 1;PREMIERE:11797:hC34:S19.2E:27500:511:512=deu;515=deu:32:1:10:133:2:0
|
||||||
PREMIERE 2,PREM 2;PREMIERE:11797:hC34:S19.2E:27500:1791:1792=deu,1793=deu;1795=deu:32:1:11:133:2:0
|
PREMIERE 2,PREM 2;PREMIERE:11797:hC34:S19.2E:27500:1791:1792=deu;1795=deu:32:1:11:133:2:0
|
||||||
PREMIERE 3,PREM 3;PREMIERE:11797:hC34:S19.2E:27500:2303:2304=deu,2305=deu:32:1:43:133:2:0
|
PREMIERE 3,PREM 3;PREMIERE:11797:hC34:S19.2E:27500:2303:2304=deu,2305=deu:32:1:43:133:2:0
|
||||||
PREMIERE 4,PREM 4;PREMIERE:11797:hC34:S19.2E:27500:767:768=deu,769=deu:32:1801,1722,1702:9:133:2:0
|
PREMIERE 4,PREM 4;PREMIERE:11797:hC34:S19.2E:27500:767:768=deu,769=deu:32:1801,1722,1702:9:133:2:0
|
||||||
PREMIERE 5,PREM 5;PREMIERE:11797:hC34:S19.2E:27500:1279:1280=deu:32:1702,1801,1722:29:133:2:0
|
PREMIERE 5,PREM 5;PREMIERE:11797:hC34:S19.2E:27500:1279:1280=deu,1281=deu:32:1722,1702,1801:29:133:2:0
|
||||||
PREMIERE 6,PREM 6;PREMIERE:11797:hC34:S19.2E:27500:1535:1536=deu:32:1:41:133:2:0
|
PREMIERE 6,PREM 6;PREMIERE:11797:hC34:S19.2E:27500:1535:1536=deu:32:1:41:133:2:0
|
||||||
PREMIERE 7,PREM 7;PREMIERE:11797:hC34:S19.2E:27500:1023:1024=deu:32:1702,1801,1722:20:133:2:0
|
PREMIERE 7,PREM 7;PREMIERE:11797:hC34:S19.2E:27500:1023:1024=deu:32:1801,1722,1702:20:133:2:0
|
||||||
DISNEY CHANNEL,DISNEY;PREMIERE:11758:hC34:S19.2E:27500:2559:2560=deu:32:1722,1801,1702:34:133:17:0
|
DISNEY CHANNEL,DISNEY;PREMIERE:11758:hC34:S19.2E:27500:2559:2560=deu:32:1722,1801,1702:34:133:17:0
|
||||||
:Premiere Direkt
|
:Premiere Direkt
|
||||||
PREMIERE DIREKT,DIREKT;PREMIERE:12031:hC34:S19.2E:27500:2815:2816=deu,2817=deu;2819=deu:0:0:18:133:4:0
|
PREMIERE DIREKT,DIREKT;PREMIERE:12031:hC34:S19.2E:27500:2815:2816=deu,2817=deu;2819=deu:0:0:18:133:4:0
|
||||||
:PW Erotic
|
:PW Erotic
|
||||||
BEATE-UHSE.TV,B-UHSE;PREMIERE:11758:hC34:S19.2E:27500:1791:1792=deu:32:1801,1722,1702:21:133:17:0
|
BEATE-UHSE.TV,B-UHSE;PREMIERE:11758:hC34:S19.2E:27500:1791:1792=deu:32:1722,1702,1801:21:133:17:0
|
||||||
DIREKT EROTIK,EROTIK;PREMIERE:12031:hC34:S19.2E:27500:1279:1280=deu:0:1722,1801,1702:513:133:4:0
|
DIREKT EROTIK,EROTIK;PREMIERE:12031:hC34:S19.2E:27500:1279:1280=deu:0:1801,1722,1702:513:133:4:0
|
||||||
:Sportsworld
|
:Sportsworld
|
||||||
PREMIERE SPORT PORTAL,SPORT PORTAL;PREMIERE:11719:hC34:S19.2E:27500:255:256=deu,257=deu:32:1702,1801,1722:17:133:3:0
|
PREMIERE SPORT PORTAL,SPORT PORTAL;PREMIERE:11719:hC34:S19.2E:27500:255:256=deu,257=deu:32:1722,1702,1801:17:133:3:0
|
||||||
PREMIERE WIN,WIN;PREMIERE:12031:hC34:S19.2E:27500:3839:3840=deu:32:1722,1801,1702:27:133:4:0
|
PREMIERE WIN,WIN;PREMIERE:12031:hC34:S19.2E:27500:3839:3840=deu:32:1801,1702,1722:27:133:4:0
|
||||||
:Beta Digital
|
:Beta Digital
|
||||||
N24;ProSiebenSat.1:12480:vC34:S19.2E:27500:2047:2048=deu:36:0:47:133:33:0
|
N24;ProSiebenSat.1:12480:vC34:S19.2E:27500:2047:2048=deu:36:0:47:133:33:0
|
||||||
LibertyTV FR;LibertyTV.com:12610:vC56:S19.2E:22000:941:943=deu:0:0:12199:1:1112:0
|
LibertyTV FR;LibertyTV.com:12610:vC56:S19.2E:22000:941:943=deu:0:0:12199:1:1112:0
|
||||||
@ -89,9 +90,9 @@ TELE 5;BetaDigital:12480:vC34:S19.2E:27500:1535:1536=deu:38:0:51:133:33:0
|
|||||||
:@201 Sky
|
:@201 Sky
|
||||||
Sky One;BSkyB:12226:hC23:S28.2E:27500:515+8190:643=eng:579:960,961:4705:2:2027:0
|
Sky One;BSkyB:12226:hC23:S28.2E:27500:515+8190:643=eng:579:960,961:4705:2:2027:0
|
||||||
Sky Mix;BSkyB:12226:hC23:S28.2E:27500:514+8190:642=eng,662=NAR:578:960,961:5104:2:2027:0
|
Sky Mix;BSkyB:12226:hC23:S28.2E:27500:514+8190:642=eng,662=NAR:578:960,961:5104:2:2027:0
|
||||||
ITV2;BSkyB:10758:vC56:S28.2E:22000:2314:2315=eng:2317:960,961:10070:2:2044:0
|
ITV2;BSkyB:10758:vC56:S28.2E:22000:2314:2315=eng,2363=NAR:2317:960,961:10070:2:2044:0
|
||||||
Sci-Fi;BSkyB:12148:hC23:S28.2E:27500:512+8190:640=eng:576:960,961:4905:2:2023:0
|
Sci-Fi;BSkyB:12148:hC23:S28.2E:27500:512+8190:640=eng:576:960,961:4905:2:2023:0
|
||||||
Paramount;BSkyB:12187:hC23:S28.2E:27500:2313+2304:2317=eng,2318=NAR:2315:960,961:5904:2:2025:0
|
Paramount;BSkyB:12187:hC23:S28.2E:27500:2313+2304:2326=eng,2327=NAR:2315:960,961:5904:2:2025:0
|
||||||
Paramount;BSkyB:11526:vC23:S28.2E:27500:2317+2306:2318=eng:2319:960,961:50305:2:2404:0
|
Paramount;BSkyB:11526:vC23:S28.2E:27500:2317+2306:2318=eng:2319:960,961:50305:2:2404:0
|
||||||
Paramount 2;BSkyB:11914:hC23:S28.2E:27500:514+8190:642=eng,662=NAR:578:960,961:4504:2:2011:0
|
Paramount 2;BSkyB:11914:hC23:S28.2E:27500:514+8190:642=eng,662=NAR:578:960,961:4504:2:2011:0
|
||||||
Discovery;BSkyB:11875:hC23:S28.2E:27500:2304:2306=eng,2307=NAR:2305:960,961:6201:2:2009:0
|
Discovery;BSkyB:11875:hC23:S28.2E:27500:2304:2306=eng,2307=NAR:2305:960,961:6201:2:2009:0
|
||||||
@ -108,7 +109,7 @@ Sky Cinema 1;BSkyB:12285:vC23:S28.2E:27500:519+8190:647=eng,667=NAR:583:960,961:
|
|||||||
Sky Cinema 2;BSkyB:12285:vC23:S28.2E:27500:517+8190:645=eng,665=NAR:581:960,961:4802:2:2030:0
|
Sky Cinema 2;BSkyB:12285:vC23:S28.2E:27500:517+8190:645=eng,665=NAR:581:960,961:4802:2:2030:0
|
||||||
:@900 Some 'seed' channels
|
:@900 Some 'seed' channels
|
||||||
Chelsea TV;BskyB:11778:vC23:S28.2E:27500:2308+2304:2309=eng:0:960,961:9307:2:2004:0
|
Chelsea TV;BskyB:11778:vC23:S28.2E:27500:2308+2304:2309=eng:0:960,961:9307:2:2004:0
|
||||||
WDR Münster;ARD:12421:hC34:S19.2E:27500:701:702=deu:104:0:28310:1:1201:0
|
WDR Münster;ARD:12421:hC34:S19.2E:27500:101:102=deu:104:0:28310:1:1201:0
|
||||||
Animal Plnt+;BSkyB:12070:hC23:S28.2E:27500:2314+2307:2315=eng:0:960,961:50002:2:2019:0
|
Animal Plnt+;BSkyB:12070:hC23:S28.2E:27500:2314+2307:2315=eng:0:960,961:50002:2:2019:0
|
||||||
S1T;BSkyB:12285:vC23:S28.2E:27500:513+8190:641=eng,661=NAR:577:960,961:4409:2:2030:0
|
S1T;BSkyB:12285:vC23:S28.2E:27500:513+8190:641=eng,661=NAR:577:960,961:4409:2:2030:0
|
||||||
CNN;BSkyB:12051:vC23:S28.2E:27500:2313:2315=eng:2314:0:7140:2:2018:0
|
CNN;BSkyB:12051:vC23:S28.2E:27500:2313:2315=eng:2314:0:7140:2:2018:0
|
||||||
@ -117,4 +118,5 @@ IGLESIA MME;T-Systems/MTI:11200:vC56:S13.0E:27500:4097:4098:0:0:4733:318:13400:0
|
|||||||
Euro1080;EURO1080:12168:vC34:S19.2E:27500:308:256:0:FF:21100:1:1088:0
|
Euro1080;EURO1080:12168:vC34:S19.2E:27500:308:256:0:FF:21100:1:1088:0
|
||||||
Astra HD:12441:vC34:S19.2E:27500:133+80:134=eng:0:FF:29700:0:0:0
|
Astra HD:12441:vC34:S19.2E:27500:133+80:134=eng:0:FF:29700:0:0:0
|
||||||
eng-WRN-multi;WRN:12597:vC34:S13.0E:27500:0:2132:0:0:8230:318:9400:0
|
eng-WRN-multi;WRN:12597:vC34:S13.0E:27500:0:2132:0:0:8230:318:9400:0
|
||||||
|
TVS Teleport Bonn;DMV:11535:vC34:S1.0W:5632:308+8190:256=eng,257=eng:0:2:1:65535:1:0
|
||||||
:@1000 New channels
|
:@1000 New channels
|
||||||
|
37
ci.c
37
ci.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: ci.c 1.28 2005/09/17 11:43:08 kls Exp $
|
* $Id: ci.c 1.36 2005/10/03 12:58:22 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ci.h"
|
#include "ci.h"
|
||||||
@ -92,9 +92,17 @@ static char *CopyString(int Length, const uint8_t *Data)
|
|||||||
///< Copies the string at Data.
|
///< Copies the string at Data.
|
||||||
///< \return Returns a pointer to a newly allocated string.
|
///< \return Returns a pointer to a newly allocated string.
|
||||||
{
|
{
|
||||||
|
// Some CAMs send funny characters at the beginning of strings.
|
||||||
|
// Let's just skip them:
|
||||||
|
while (Length > 0 && (*Data == ' ' || *Data == 0x05 || *Data == 0x96 || *Data == 0x97)) {
|
||||||
|
Length--;
|
||||||
|
Data++;
|
||||||
|
}
|
||||||
char *s = MALLOC(char, Length + 1);
|
char *s = MALLOC(char, Length + 1);
|
||||||
strncpy(s, (char *)Data, Length);
|
strncpy(s, (char *)Data, Length);
|
||||||
s[Length] = 0;
|
s[Length] = 0;
|
||||||
|
// The character 0x8A is used as newline, so let's put a real '\n' in there:
|
||||||
|
strreplace(s, 0x8A, '\n');
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -394,7 +402,7 @@ const uint8_t *cCiTransportConnection::Data(int &Length)
|
|||||||
return tpdu->Data(Length);
|
return tpdu->Data(Length);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MAX_CONNECT_RETRIES 20
|
#define MAX_CONNECT_RETRIES 2
|
||||||
|
|
||||||
int cCiTransportConnection::CreateConnection(void)
|
int cCiTransportConnection::CreateConnection(void)
|
||||||
{
|
{
|
||||||
@ -1026,6 +1034,7 @@ public:
|
|||||||
cCiEnquiry *Enquiry(bool Clear = false);
|
cCiEnquiry *Enquiry(bool Clear = false);
|
||||||
bool SendMenuAnswer(uint8_t Selection);
|
bool SendMenuAnswer(uint8_t Selection);
|
||||||
bool SendAnswer(const char *Text);
|
bool SendAnswer(const char *Text);
|
||||||
|
bool SendCloseMMI(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
cCiMMI::cCiMMI(int SessionId, cCiTransportConnection *Tc)
|
cCiMMI::cCiMMI(int SessionId, cCiTransportConnection *Tc)
|
||||||
@ -1198,6 +1207,14 @@ bool cCiMMI::SendAnswer(const char *Text)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cCiMMI::SendCloseMMI(void)
|
||||||
|
{
|
||||||
|
dbgprotocol("%d: ==> Close MMI\n", SessionId());
|
||||||
|
SendData(AOT_CLOSE_MMI, 0);
|
||||||
|
//XXX return value of all SendData() calls???
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// --- cCiMenu ---------------------------------------------------------------
|
// --- cCiMenu ---------------------------------------------------------------
|
||||||
|
|
||||||
cCiMenu::cCiMenu(cCiMMI *MMI, bool Selectable)
|
cCiMenu::cCiMenu(cCiMMI *MMI, bool Selectable)
|
||||||
@ -1229,6 +1246,12 @@ bool cCiMenu::AddEntry(char *s)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cCiMenu::HasUpdate(void)
|
||||||
|
{
|
||||||
|
// If the mmi is gone, the menu shall be closed, which also qualifies as 'update'.
|
||||||
|
return !mmi || mmi->HasUserIO();
|
||||||
|
}
|
||||||
|
|
||||||
bool cCiMenu::Select(int Index)
|
bool cCiMenu::Select(int Index)
|
||||||
{
|
{
|
||||||
cMutexLock MutexLock(&mutex);
|
cMutexLock MutexLock(&mutex);
|
||||||
@ -1242,6 +1265,11 @@ bool cCiMenu::Cancel(void)
|
|||||||
return Select(-1);
|
return Select(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cCiMenu::Abort(void)
|
||||||
|
{
|
||||||
|
return mmi && mmi->SendCloseMMI();
|
||||||
|
}
|
||||||
|
|
||||||
// --- cCiEnquiry ------------------------------------------------------------
|
// --- cCiEnquiry ------------------------------------------------------------
|
||||||
|
|
||||||
cCiEnquiry::cCiEnquiry(cCiMMI *MMI)
|
cCiEnquiry::cCiEnquiry(cCiMMI *MMI)
|
||||||
@ -1271,6 +1299,11 @@ bool cCiEnquiry::Cancel(void)
|
|||||||
return Reply(NULL);
|
return Reply(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cCiEnquiry::Abort(void)
|
||||||
|
{
|
||||||
|
return mmi && mmi->SendCloseMMI();
|
||||||
|
}
|
||||||
|
|
||||||
// --- cCiCaPmt --------------------------------------------------------------
|
// --- cCiCaPmt --------------------------------------------------------------
|
||||||
|
|
||||||
// Ca Pmt List Management:
|
// Ca Pmt List Management:
|
||||||
|
5
ci.h
5
ci.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: ci.h 1.14 2005/08/20 14:56:11 kls Exp $
|
* $Id: ci.h 1.17 2005/10/03 12:49:52 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __CI_H
|
#ifndef __CI_H
|
||||||
@ -40,6 +40,8 @@ public:
|
|||||||
bool Selectable(void) { return selectable; }
|
bool Selectable(void) { return selectable; }
|
||||||
bool Select(int Index);
|
bool Select(int Index);
|
||||||
bool Cancel(void);
|
bool Cancel(void);
|
||||||
|
bool Abort(void);
|
||||||
|
bool HasUpdate(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
class cCiEnquiry {
|
class cCiEnquiry {
|
||||||
@ -58,6 +60,7 @@ public:
|
|||||||
int ExpectedLength(void) { return expectedLength; }
|
int ExpectedLength(void) { return expectedLength; }
|
||||||
bool Reply(const char *s);
|
bool Reply(const char *s);
|
||||||
bool Cancel(void);
|
bool Cancel(void);
|
||||||
|
bool Abort(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
class cCiCaPmt {
|
class cCiCaPmt {
|
||||||
|
8
config.h
8
config.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.h 1.228 2005/09/14 16:04:09 kls Exp $
|
* $Id: config.h 1.230 2005/10/01 10:41:33 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __CONFIG_H
|
#ifndef __CONFIG_H
|
||||||
@ -19,8 +19,8 @@
|
|||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
#define VDRVERSION "1.3.33"
|
#define VDRVERSION "1.3.34"
|
||||||
#define VDRVERSNUM 10333 // Version * 10000 + Major * 100 + Minor
|
#define VDRVERSNUM 10334 // Version * 10000 + Major * 100 + Minor
|
||||||
|
|
||||||
#define MAXPRIORITY 99
|
#define MAXPRIORITY 99
|
||||||
#define MAXLIFETIME 99
|
#define MAXLIFETIME 99
|
||||||
@ -91,7 +91,7 @@ public:
|
|||||||
const char *FileName(void) { return fileName; }
|
const char *FileName(void) { return fileName; }
|
||||||
bool Load(const char *FileName = NULL, bool AllowComments = false, bool MustExist = false)
|
bool Load(const char *FileName = NULL, bool AllowComments = false, bool MustExist = false)
|
||||||
{
|
{
|
||||||
Clear();
|
cConfig<T>::Clear();
|
||||||
if (FileName) {
|
if (FileName) {
|
||||||
free(fileName);
|
free(fileName);
|
||||||
fileName = strdup(FileName);
|
fileName = strdup(FileName);
|
||||||
|
79
i18n.c
79
i18n.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: i18n.c 1.210 2005/09/25 11:57:04 kls Exp $
|
* $Id: i18n.c 1.213 2005/10/03 12:27:15 kls Exp $
|
||||||
*
|
*
|
||||||
* Translations provided by:
|
* Translations provided by:
|
||||||
*
|
*
|
||||||
@ -2273,6 +2273,27 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Kõvaketas peaaegu täis!",
|
"Kõvaketas peaaegu täis!",
|
||||||
"Kun lidt diskplads tilbage!",
|
"Kun lidt diskplads tilbage!",
|
||||||
},
|
},
|
||||||
|
{ "Opening CAM menu...",
|
||||||
|
"CAM-Menü wird geöffnet...",
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
},
|
||||||
{ "Can't open CAM menu!",
|
{ "Can't open CAM menu!",
|
||||||
"CAM-Menü kann nicht geöffnet werden!",
|
"CAM-Menü kann nicht geöffnet werden!",
|
||||||
"Ne morem odpreti CAM menija!",
|
"Ne morem odpreti CAM menija!",
|
||||||
@ -2294,6 +2315,27 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Ei saa avada CAM menüüd!",
|
"Ei saa avada CAM menüüd!",
|
||||||
"Kan ikke åbne CAM menuen!",
|
"Kan ikke åbne CAM menuen!",
|
||||||
},
|
},
|
||||||
|
{ "Resetting CAM...",
|
||||||
|
"CAM wird zurückgesetzt...",
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
},
|
||||||
{ "Can't reset CAM!",
|
{ "Can't reset CAM!",
|
||||||
"CAM-Reset fehlgeschlagen!",
|
"CAM-Reset fehlgeschlagen!",
|
||||||
"Ne morem resetirati CAM-a",
|
"Ne morem resetirati CAM-a",
|
||||||
@ -2316,26 +2358,47 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Kan ikke nulstille CAM!",
|
"Kan ikke nulstille CAM!",
|
||||||
},
|
},
|
||||||
{ "CAM has been reset",
|
{ "CAM has been reset",
|
||||||
"CAM wurde zurückgesetzt!",
|
"CAM wurde zurückgesetzt",
|
||||||
"CAM je resetiran!",
|
"CAM je resetiran",
|
||||||
"Modulo CAM reimpostato!",
|
"Modulo CAM reimpostato",
|
||||||
"CAM is herstart!",
|
"CAM is herstart",
|
||||||
"",//TODO
|
"",//TODO
|
||||||
"La CAM a été réinitialisée",
|
"La CAM a été réinitialisée",
|
||||||
"",//TODO
|
"",//TODO
|
||||||
"Salausmoduuli alustettu",
|
"Salausmoduuli alustettu",
|
||||||
"CAM-Reset wykonany!",
|
"CAM-Reset wykonany",
|
||||||
"CAM reiniciada",
|
"CAM reiniciada",
|
||||||
"Óôï CAM Ýãéíå åðáíáöïñÜ",
|
"Óôï CAM Ýãéíå åðáíáöïñÜ",
|
||||||
"CA modulen har återställts",
|
"CA modulen har återställts",
|
||||||
"CAM-ul a fost resetat",
|
"CAM-ul a fost resetat",
|
||||||
"A CAM vissza lett állítva",
|
"A CAM vissza lett állítva",
|
||||||
"CAM reiniciada",
|
"CAM reiniciada",
|
||||||
"CAM-ÜÞÔãÛì ßÕàÕ×ÐßãéÕÝ!",
|
"CAM-ÜÞÔãÛì ßÕàÕ×ÐßãéÕÝ",
|
||||||
"CAM je resetiran!",
|
"CAM je resetiran",
|
||||||
"CAM mooduli taaskäivitus tehtud",
|
"CAM mooduli taaskäivitus tehtud",
|
||||||
"CAM er blevet nulstillet",
|
"CAM er blevet nulstillet",
|
||||||
},
|
},
|
||||||
|
{ "Please enter %d digits!",
|
||||||
|
"Bitte geben Sie %d Ziffern ein!",
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
"",//TODO
|
||||||
|
},
|
||||||
{ "No audio available!",
|
{ "No audio available!",
|
||||||
"Kein Audio verfügbar!",
|
"Kein Audio verfügbar!",
|
||||||
"Zvok ni dosegljiv",
|
"Zvok ni dosegljiv",
|
||||||
|
95
menu.c
95
menu.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menu.c 1.362 2005/09/25 13:37:21 kls Exp $
|
* $Id: menu.c 1.374 2005/10/03 12:53:51 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
#define MAXRECORDCONTROLS (MAXDEVICES * MAXRECEIVERS)
|
#define MAXRECORDCONTROLS (MAXDEVICES * MAXRECEIVERS)
|
||||||
#define MAXINSTANTRECTIME (24 * 60 - 1) // 23:59 hours
|
#define MAXINSTANTRECTIME (24 * 60 - 1) // 23:59 hours
|
||||||
|
#define MAXWAITFORCAMMENU 4 // seconds to wait for the CAM menu to open
|
||||||
|
|
||||||
#define CHNUMWIDTH (numdigits(Channels.MaxNumber()) + 1)
|
#define CHNUMWIDTH (numdigits(Channels.MaxNumber()) + 1)
|
||||||
|
|
||||||
@ -1287,33 +1288,59 @@ eOSState cMenuCommands::ProcessKey(eKeys Key)
|
|||||||
cMenuCam::cMenuCam(cCiMenu *CiMenu)
|
cMenuCam::cMenuCam(cCiMenu *CiMenu)
|
||||||
:cOsdMenu("")
|
:cOsdMenu("")
|
||||||
{
|
{
|
||||||
|
dsyslog("CAM: Menu ------------------");
|
||||||
ciMenu = CiMenu;
|
ciMenu = CiMenu;
|
||||||
selected = false;
|
selected = false;
|
||||||
|
offset = 0;
|
||||||
if (ciMenu->Selectable())
|
if (ciMenu->Selectable())
|
||||||
SetHasHotkeys();
|
SetHasHotkeys();
|
||||||
SetTitle(ciMenu->TitleText() ? ciMenu->TitleText() : "CAM");
|
SetTitle(*ciMenu->TitleText() ? ciMenu->TitleText() : "CAM");
|
||||||
for (int i = 0; i < ciMenu->NumEntries(); i++)
|
dsyslog("CAM: '%s'", ciMenu->TitleText());
|
||||||
Add(new cOsdItem(hk(ciMenu->Entry(i))));
|
if (*ciMenu->SubTitleText()) {
|
||||||
//XXX implement a clean way of displaying this:
|
dsyslog("CAM: '%s'", ciMenu->SubTitleText());
|
||||||
Add(new cOsdItem(ciMenu->SubTitleText()));
|
AddMultiLineItem(ciMenu->SubTitleText());
|
||||||
Add(new cOsdItem(ciMenu->BottomText()));
|
offset = Count();
|
||||||
|
}
|
||||||
|
for (int i = 0; i < ciMenu->NumEntries(); i++) {
|
||||||
|
Add(new cOsdItem(hk(ciMenu->Entry(i)), osUnknown, ciMenu->Selectable()));
|
||||||
|
dsyslog("CAM: '%s'", ciMenu->Entry(i));
|
||||||
|
}
|
||||||
|
if (*ciMenu->BottomText()) {
|
||||||
|
AddMultiLineItem(ciMenu->BottomText());
|
||||||
|
dsyslog("CAM: '%s'", ciMenu->BottomText());
|
||||||
|
}
|
||||||
Display();
|
Display();
|
||||||
dsyslog("CAM: Menu - %s", ciMenu->TitleText());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cMenuCam::~cMenuCam()
|
cMenuCam::~cMenuCam()
|
||||||
{
|
{
|
||||||
if (!selected)
|
if (!selected)
|
||||||
ciMenu->Cancel();
|
ciMenu->Abort();
|
||||||
delete ciMenu;
|
delete ciMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cMenuCam::AddMultiLineItem(const char *s)
|
||||||
|
{
|
||||||
|
while (s && *s) {
|
||||||
|
const char *p = strchr(s, '\n');
|
||||||
|
int l = p ? p - s : strlen(s);
|
||||||
|
cOsdItem *item = new cOsdItem;
|
||||||
|
item->SetSelectable(false);
|
||||||
|
item->SetText(strndup(s, l), false);
|
||||||
|
Add(item);
|
||||||
|
s = p ? p + 1 : p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
eOSState cMenuCam::Select(void)
|
eOSState cMenuCam::Select(void)
|
||||||
{
|
{
|
||||||
if (ciMenu->Selectable()) {
|
if (ciMenu->Selectable()) {
|
||||||
ciMenu->Select(Current());
|
ciMenu->Select(Current() - offset);
|
||||||
selected = true;
|
dsyslog("CAM: select %d", Current() - offset);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
ciMenu->Cancel();
|
||||||
|
selected = true;
|
||||||
return osEnd;
|
return osEnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1327,36 +1354,51 @@ eOSState cMenuCam::ProcessKey(eKeys Key)
|
|||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (state == osBack) {
|
||||||
|
ciMenu->Cancel();
|
||||||
|
selected = true;
|
||||||
|
return osEnd;
|
||||||
|
}
|
||||||
|
if (ciMenu->HasUpdate()) {
|
||||||
|
selected = true;
|
||||||
|
return osEnd;
|
||||||
|
}
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- cMenuCamEnquiry -------------------------------------------------------
|
// --- cMenuCamEnquiry -------------------------------------------------------
|
||||||
|
|
||||||
//XXX this is just quick and dirty - make this a separate display object
|
|
||||||
cMenuCamEnquiry::cMenuCamEnquiry(cCiEnquiry *CiEnquiry)
|
cMenuCamEnquiry::cMenuCamEnquiry(cCiEnquiry *CiEnquiry)
|
||||||
:cOsdMenu("", 10)
|
:cOsdMenu("", 1)
|
||||||
{
|
{
|
||||||
ciEnquiry = CiEnquiry;
|
ciEnquiry = CiEnquiry;
|
||||||
int Length = ciEnquiry->ExpectedLength();
|
int Length = ciEnquiry->ExpectedLength();
|
||||||
input = MALLOC(char, Length + 1);
|
input = MALLOC(char, Length + 1);
|
||||||
*input = 0;
|
*input = 0;
|
||||||
replied = false;
|
replied = false;
|
||||||
SetTitle(ciEnquiry->Text() ? ciEnquiry->Text() : "CAM");
|
SetTitle("CAM");
|
||||||
Add(new cMenuEditNumItem("Input", input, Length, ciEnquiry->Blind()));
|
Add(new cOsdItem(ciEnquiry->Text(), osUnknown, false));
|
||||||
|
Add(new cOsdItem("", osUnknown, false));
|
||||||
|
Add(new cMenuEditNumItem("", input, Length, ciEnquiry->Blind()));
|
||||||
Display();
|
Display();
|
||||||
}
|
}
|
||||||
|
|
||||||
cMenuCamEnquiry::~cMenuCamEnquiry()
|
cMenuCamEnquiry::~cMenuCamEnquiry()
|
||||||
{
|
{
|
||||||
if (!replied)
|
if (!replied)
|
||||||
ciEnquiry->Cancel();
|
ciEnquiry->Abort();
|
||||||
free(input);
|
free(input);
|
||||||
delete ciEnquiry;
|
delete ciEnquiry;
|
||||||
}
|
}
|
||||||
|
|
||||||
eOSState cMenuCamEnquiry::Reply(void)
|
eOSState cMenuCamEnquiry::Reply(void)
|
||||||
{
|
{
|
||||||
//XXX check length???
|
if (ciEnquiry->ExpectedLength() < 0xFF && int(strlen(input)) != ciEnquiry->ExpectedLength()) {
|
||||||
|
char buffer[64];
|
||||||
|
snprintf(buffer, sizeof(buffer), tr("Please enter %d digits!"), ciEnquiry->ExpectedLength());
|
||||||
|
Skins.Message(mtError, buffer);
|
||||||
|
return osContinue;
|
||||||
|
}
|
||||||
ciEnquiry->Reply(input);
|
ciEnquiry->Reply(input);
|
||||||
replied = true;
|
replied = true;
|
||||||
return osEnd;
|
return osEnd;
|
||||||
@ -1372,6 +1414,11 @@ eOSState cMenuCamEnquiry::ProcessKey(eKeys Key)
|
|||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (state == osBack) {
|
||||||
|
ciEnquiry->Cancel();
|
||||||
|
replied = true;
|
||||||
|
return osEnd;
|
||||||
|
}
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1513,6 +1560,7 @@ cMenuRecordings::cMenuRecordings(const char *Base, int Level, bool OpenSubMenus)
|
|||||||
SetCurrent(First());
|
SetCurrent(First());
|
||||||
else if (OpenSubMenus && cReplayControl::LastReplayed() && Open(true))
|
else if (OpenSubMenus && cReplayControl::LastReplayed() && Open(true))
|
||||||
return;
|
return;
|
||||||
|
Display();
|
||||||
SetHelpKeys();
|
SetHelpKeys();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1556,7 +1604,7 @@ void cMenuRecordings::Set(bool Refresh)
|
|||||||
if (Refresh) {
|
if (Refresh) {
|
||||||
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current());
|
||||||
if (ri) {
|
if (ri) {
|
||||||
cRecording *Recording = GetRecording(ri);
|
cRecording *Recording = Recordings.GetByName(ri->FileName());
|
||||||
if (Recording)
|
if (Recording)
|
||||||
CurrentRecording = Recording->FileName();
|
CurrentRecording = Recording->FileName();
|
||||||
}
|
}
|
||||||
@ -1583,7 +1631,8 @@ void cMenuRecordings::Set(bool Refresh)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(LastItemText);
|
free(LastItemText);
|
||||||
Display();
|
if (Refresh)
|
||||||
|
Display();
|
||||||
}
|
}
|
||||||
|
|
||||||
cRecording *cMenuRecordings::GetRecording(cMenuRecordingItem *Item)
|
cRecording *cMenuRecordings::GetRecording(cMenuRecordingItem *Item)
|
||||||
@ -2155,8 +2204,13 @@ eOSState cMenuSetupCICAM::Menu(void)
|
|||||||
{
|
{
|
||||||
cMenuSetupCICAMItem *item = (cMenuSetupCICAMItem *)Get(Current());
|
cMenuSetupCICAMItem *item = (cMenuSetupCICAMItem *)Get(Current());
|
||||||
if (item) {
|
if (item) {
|
||||||
if (item->CiHandler()->EnterMenu(item->Slot()))
|
if (item->CiHandler()->EnterMenu(item->Slot())) {
|
||||||
|
Skins.Message(mtWarning, tr("Opening CAM menu..."));
|
||||||
|
time_t t = time(NULL);
|
||||||
|
while (time(NULL) - t < MAXWAITFORCAMMENU && !item->CiHandler()->HasUserIO())
|
||||||
|
item->CiHandler()->Process();
|
||||||
return osEnd; // the CAM menu will be executed explicitly from the main loop
|
return osEnd; // the CAM menu will be executed explicitly from the main loop
|
||||||
|
}
|
||||||
else
|
else
|
||||||
Skins.Message(mtError, tr("Can't open CAM menu!"));
|
Skins.Message(mtError, tr("Can't open CAM menu!"));
|
||||||
}
|
}
|
||||||
@ -2167,6 +2221,7 @@ eOSState cMenuSetupCICAM::Reset(void)
|
|||||||
{
|
{
|
||||||
cMenuSetupCICAMItem *item = (cMenuSetupCICAMItem *)Get(Current());
|
cMenuSetupCICAMItem *item = (cMenuSetupCICAMItem *)Get(Current());
|
||||||
if (item) {
|
if (item) {
|
||||||
|
Skins.Message(mtWarning, tr("Resetting CAM..."));
|
||||||
if (item->CiHandler()->Reset(item->Slot())) {
|
if (item->CiHandler()->Reset(item->Slot())) {
|
||||||
Skins.Message(mtInfo, tr("CAM has been reset"));
|
Skins.Message(mtInfo, tr("CAM has been reset"));
|
||||||
return osEnd;
|
return osEnd;
|
||||||
|
4
menu.h
4
menu.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menu.h 1.74 2005/09/25 09:03:32 kls Exp $
|
* $Id: menu.h 1.76 2005/10/03 10:39:08 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __MENU_H
|
#ifndef __MENU_H
|
||||||
@ -120,6 +120,8 @@ class cMenuCam : public cOsdMenu {
|
|||||||
private:
|
private:
|
||||||
cCiMenu *ciMenu;
|
cCiMenu *ciMenu;
|
||||||
bool selected;
|
bool selected;
|
||||||
|
int offset;
|
||||||
|
void AddMultiLineItem(const char *s);
|
||||||
eOSState Select(void);
|
eOSState Select(void);
|
||||||
public:
|
public:
|
||||||
cMenuCam(cCiMenu *CiMenu);
|
cMenuCam(cCiMenu *CiMenu);
|
||||||
|
4
osd.c
4
osd.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osd.c 1.62 2005/06/19 10:43:04 kls Exp $
|
* $Id: osd.c 1.63 2005/10/02 08:47:13 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "osd.h"
|
#include "osd.h"
|
||||||
@ -618,6 +618,8 @@ cBitmap *cOsd::GetBitmap(int Area)
|
|||||||
|
|
||||||
eOsdError cOsd::CanHandleAreas(const tArea *Areas, int NumAreas)
|
eOsdError cOsd::CanHandleAreas(const tArea *Areas, int NumAreas)
|
||||||
{
|
{
|
||||||
|
if (NumAreas > MAXOSDAREAS)
|
||||||
|
return oeTooManyAreas;
|
||||||
eOsdError Result = oeOk;
|
eOsdError Result = oeOk;
|
||||||
for (int i = 0; i < NumAreas; i++) {
|
for (int i = 0; i < NumAreas; i++) {
|
||||||
if (Areas[i].x1 > Areas[i].x2 || Areas[i].y1 > Areas[i].y2 || Areas[i].x1 < 0 || Areas[i].y1 < 0)
|
if (Areas[i].x1 > Areas[i].x2 || Areas[i].y1 > Areas[i].y2 || Areas[i].x1 < 0 || Areas[i].y1 < 0)
|
||||||
|
16
osdbase.c
16
osdbase.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osdbase.c 1.20 2005/06/18 10:30:51 kls Exp $
|
* $Id: osdbase.c 1.22 2005/10/02 15:00:40 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "osdbase.h"
|
#include "osdbase.h"
|
||||||
@ -25,12 +25,12 @@ cOsdItem::cOsdItem(eOSState State)
|
|||||||
fresh = true;
|
fresh = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
cOsdItem::cOsdItem(const char *Text, eOSState State)
|
cOsdItem::cOsdItem(const char *Text, eOSState State, bool Selectable)
|
||||||
{
|
{
|
||||||
text = NULL;
|
text = NULL;
|
||||||
offset = -1;
|
offset = -1;
|
||||||
state = State;
|
state = State;
|
||||||
selectable = true;
|
selectable = Selectable;
|
||||||
fresh = true;
|
fresh = true;
|
||||||
SetText(Text);
|
SetText(Text);
|
||||||
}
|
}
|
||||||
@ -196,8 +196,11 @@ void cOsdMenu::Display(void)
|
|||||||
int count = Count();
|
int count = Count();
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
int ni = 0;
|
int ni = 0;
|
||||||
for (cOsdItem *item = First(); item; item = Next(item))
|
for (cOsdItem *item = First(); item; item = Next(item)) {
|
||||||
cStatus::MsgOsdItem(item->Text(), ni++);
|
cStatus::MsgOsdItem(item->Text(), ni++);
|
||||||
|
if (current < 0 && item->Selectable())
|
||||||
|
current = item->Index();
|
||||||
|
}
|
||||||
if (current < 0)
|
if (current < 0)
|
||||||
current = 0; // just for safety - there HAS to be a current item!
|
current = 0; // just for safety - there HAS to be a current item!
|
||||||
if (current - first >= displayMenuItems || current < first) {
|
if (current - first >= displayMenuItems || current < first) {
|
||||||
@ -210,8 +213,9 @@ void cOsdMenu::Display(void)
|
|||||||
int i = first;
|
int i = first;
|
||||||
int n = 0;
|
int n = 0;
|
||||||
for (cOsdItem *item = Get(first); item; item = Next(item)) {
|
for (cOsdItem *item = Get(first); item; item = Next(item)) {
|
||||||
displayMenu->SetItem(item->Text(), i - first, i == current, item->Selectable());
|
bool CurrentSelectable = (i == current) && item->Selectable();
|
||||||
if (i == current)
|
displayMenu->SetItem(item->Text(), i - first, CurrentSelectable, item->Selectable());
|
||||||
|
if (CurrentSelectable)
|
||||||
cStatus::MsgOsdCurrentItem(item->Text());
|
cStatus::MsgOsdCurrentItem(item->Text());
|
||||||
if (++n == displayMenuItems)
|
if (++n == displayMenuItems)
|
||||||
break;
|
break;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osdbase.h 1.11 2005/06/12 10:46:34 kls Exp $
|
* $Id: osdbase.h 1.12 2005/10/02 09:18:20 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __OSDBASE_H
|
#ifndef __OSDBASE_H
|
||||||
@ -56,7 +56,7 @@ protected:
|
|||||||
bool fresh;
|
bool fresh;
|
||||||
public:
|
public:
|
||||||
cOsdItem(eOSState State = osUnknown);
|
cOsdItem(eOSState State = osUnknown);
|
||||||
cOsdItem(const char *Text, eOSState State = osUnknown);
|
cOsdItem(const char *Text, eOSState State = osUnknown, bool Selectable = true);
|
||||||
virtual ~cOsdItem();
|
virtual ~cOsdItem();
|
||||||
bool Selectable(void) { return selectable; }
|
bool Selectable(void) { return selectable; }
|
||||||
void SetText(const char *Text, bool Copy = true);
|
void SetText(const char *Text, bool Copy = true);
|
||||||
|
17
recording.c
17
recording.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: recording.c 1.119 2005/09/25 14:29:49 kls Exp $
|
* $Id: recording.c 1.120 2005/10/01 10:29:02 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "recording.h"
|
#include "recording.h"
|
||||||
@ -743,10 +743,11 @@ void cRecording::ResetResume(void) const
|
|||||||
|
|
||||||
cRecordings Recordings;
|
cRecordings Recordings;
|
||||||
|
|
||||||
|
char *cRecordings::updateFileName = NULL;
|
||||||
|
|
||||||
cRecordings::cRecordings(bool Deleted)
|
cRecordings::cRecordings(bool Deleted)
|
||||||
:cThread("video directory scanner")
|
:cThread("video directory scanner")
|
||||||
{
|
{
|
||||||
updateFileName = strdup(AddDirectory(VideoDirectory, ".update"));
|
|
||||||
deleted = Deleted;
|
deleted = Deleted;
|
||||||
lastUpdate = 0;
|
lastUpdate = 0;
|
||||||
state = 0;
|
state = 0;
|
||||||
@ -755,7 +756,6 @@ cRecordings::cRecordings(bool Deleted)
|
|||||||
cRecordings::~cRecordings()
|
cRecordings::~cRecordings()
|
||||||
{
|
{
|
||||||
Cancel(3);
|
Cancel(3);
|
||||||
free(updateFileName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cRecordings::Action(void)
|
void cRecordings::Action(void)
|
||||||
@ -763,6 +763,13 @@ void cRecordings::Action(void)
|
|||||||
Refresh();
|
Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *cRecordings::UpdateFileName(void)
|
||||||
|
{
|
||||||
|
if (!updateFileName)
|
||||||
|
updateFileName = strdup(AddDirectory(VideoDirectory, ".update"));
|
||||||
|
return updateFileName;
|
||||||
|
}
|
||||||
|
|
||||||
void cRecordings::Refresh(bool Foreground)
|
void cRecordings::Refresh(bool Foreground)
|
||||||
{
|
{
|
||||||
lastUpdate = time(NULL); // doing this first to make sure we don't miss anything
|
lastUpdate = time(NULL); // doing this first to make sure we don't miss anything
|
||||||
@ -825,13 +832,13 @@ bool cRecordings::StateChanged(int &State)
|
|||||||
|
|
||||||
void cRecordings::TouchUpdate(void)
|
void cRecordings::TouchUpdate(void)
|
||||||
{
|
{
|
||||||
TouchFile(updateFileName);
|
TouchFile(UpdateFileName());
|
||||||
lastUpdate = time(NULL); // make sure we don't tigger ourselves
|
lastUpdate = time(NULL); // make sure we don't tigger ourselves
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cRecordings::NeedsUpdate(void)
|
bool cRecordings::NeedsUpdate(void)
|
||||||
{
|
{
|
||||||
return lastUpdate < LastModifiedTime(updateFileName);
|
return lastUpdate < LastModifiedTime(UpdateFileName());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cRecordings::Update(bool Wait)
|
bool cRecordings::Update(bool Wait)
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: recording.h 1.44 2005/09/25 14:30:13 kls Exp $
|
* $Id: recording.h 1.45 2005/10/01 10:24:41 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __RECORDING_H
|
#ifndef __RECORDING_H
|
||||||
@ -93,10 +93,11 @@ public:
|
|||||||
|
|
||||||
class cRecordings : public cList<cRecording>, public cThread {
|
class cRecordings : public cList<cRecording>, public cThread {
|
||||||
private:
|
private:
|
||||||
char *updateFileName;
|
static char *updateFileName;
|
||||||
bool deleted;
|
bool deleted;
|
||||||
time_t lastUpdate;
|
time_t lastUpdate;
|
||||||
int state;
|
int state;
|
||||||
|
const char *UpdateFileName(void);
|
||||||
void Refresh(bool Foreground = false);
|
void Refresh(bool Foreground = false);
|
||||||
void ScanVideoDir(const char *DirName, bool Foreground = false);
|
void ScanVideoDir(const char *DirName, bool Foreground = false);
|
||||||
protected:
|
protected:
|
||||||
|
7
skins.c
7
skins.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: skins.c 1.4 2005/01/14 13:07:19 kls Exp $
|
* $Id: skins.c 1.5 2005/10/02 10:12:10 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "skins.h"
|
#include "skins.h"
|
||||||
@ -169,8 +169,9 @@ bool cSkins::SetCurrent(const char *Name)
|
|||||||
eKeys cSkins::Message(eMessageType Type, const char *s, int Seconds)
|
eKeys cSkins::Message(eMessageType Type, const char *s, int Seconds)
|
||||||
{
|
{
|
||||||
switch (Type) {
|
switch (Type) {
|
||||||
case mtInfo: isyslog("info: %s", s); break;
|
case mtInfo: isyslog("info: %s", s); break;
|
||||||
case mtError: esyslog("ERROR: %s", s); break;
|
case mtWarning: isyslog("warning: %s", s); break;
|
||||||
|
case mtError: esyslog("ERROR: %s", s); break;
|
||||||
default: ;
|
default: ;
|
||||||
}
|
}
|
||||||
if (!Current())
|
if (!Current())
|
||||||
|
4
tools.h
4
tools.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: tools.h 1.78 2005/09/25 12:54:58 kls Exp $
|
* $Id: tools.h 1.79 2005/10/01 12:43:31 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TOOLS_H
|
#ifndef __TOOLS_H
|
||||||
@ -45,7 +45,7 @@ extern int SysLogLevel;
|
|||||||
#define DELETENULL(p) (delete (p), p = NULL)
|
#define DELETENULL(p) (delete (p), p = NULL)
|
||||||
|
|
||||||
#define CHECK(s) { if ((s) < 0) LOG_ERROR; } // used for 'ioctl()' calls
|
#define CHECK(s) { if ((s) < 0) LOG_ERROR; } // used for 'ioctl()' calls
|
||||||
#define FATALERRNO (errno != EAGAIN && errno != EINTR)
|
#define FATALERRNO (errno && errno != EAGAIN && errno != EINTR)
|
||||||
|
|
||||||
#ifndef __STL_CONFIG_H // in case some plugin needs to use the STL
|
#ifndef __STL_CONFIG_H // in case some plugin needs to use the STL
|
||||||
template<class T> inline T min(T a, T b) { return a <= b ? a : b; }
|
template<class T> inline T min(T a, T b) { return a <= b ? a : b; }
|
||||||
|
4
vdr.5
4
vdr.5
@ -8,7 +8,7 @@
|
|||||||
.\" License as specified in the file COPYING that comes with the
|
.\" License as specified in the file COPYING that comes with the
|
||||||
.\" vdr distribution.
|
.\" vdr distribution.
|
||||||
.\"
|
.\"
|
||||||
.\" $Id: vdr.5 1.38 2005/09/04 14:43:42 kls Exp $
|
.\" $Id: vdr.5 1.39 2005/09/26 21:38:44 kls Exp $
|
||||||
.\"
|
.\"
|
||||||
.TH vdr 5 "19 Mar 2005" "1.3.23" "Video Disk Recorder Files"
|
.TH vdr 5 "19 Mar 2005" "1.3.23" "Video Disk Recorder Files"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
@ -325,7 +325,7 @@ of these cannot be determined, \fBTITLE\fR will default to the channel name, and
|
|||||||
Arbitrary text that describes the recording made by this timer.
|
Arbitrary text that describes the recording made by this timer.
|
||||||
Any newline characters in the summary have to be replaced by '|', and
|
Any newline characters in the summary have to be replaced by '|', and
|
||||||
the summary may contain ':' characters. If this field is not empty, its
|
the summary may contain ':' characters. If this field is not empty, its
|
||||||
contents will be written into the \fIsummary.vdr\fR file of the recording.
|
contents will be written into the \fIinfo.vdr\fR file of the recording.
|
||||||
.SS SOURCES
|
.SS SOURCES
|
||||||
The file \fIsources.conf\fR defines the codes to be used in the \fBSource\fR field
|
The file \fIsources.conf\fR defines the codes to be used in the \fBSource\fR field
|
||||||
of channels in \fIchannels.conf\fR and assigns descriptive texts to them.
|
of channels in \fIchannels.conf\fR and assigns descriptive texts to them.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user