Version 1.3.17

- Fixed cRemux::ScanVideoPacket() to make sure it doesn't access memory beyond
  the end of the given buffer, which has caused some unjustified "unknown
  picture type errors" (thanks to Marco Schlüßler).
- Fixed a possible crash when pausing live video and the recording was unable
  to start, maybe because there was no lock on the device (thanks to Andreas
  Brugger for reporting this one).
- Fixed some characters in the iso8859-2 font file (thanks to Dino Ravnic).
- Fixed some errors in the Croatian language texts (thanks to Dino Ravnic).
- Fixed a possible recursion in cControl::Shutdown() (thanks to Sascha Volkenandt).
- Now setting the VPID before the APID in live mode to avoid unnecessary
  overhead in the firmware (thanks to Werner Fink).
- Now checking available OSD memory at runtime (thanks to Oliver Endriss).
- Fixed some typos in the Makefile's 'font' target (thanks to Olaf Titz).
- Fixed handling childTid in cThread to avoid possible race conditions (thanks
  to Stefan Huelswitt for pointing this out).
- Fixed toggling the "Day" item in the "Timers" menu, so that it selects the
  right day of week for timers in the future.
- Some improvements to cPoller (thanks to Marco Schlüßler).
This commit is contained in:
Klaus Schmidinger 2004-11-21 18:00:00 +01:00
parent 23ed5a5ed3
commit 630ba21dc1
19 changed files with 180 additions and 100 deletions

View File

@ -188,6 +188,7 @@ Stefan Huelswitt <huels@iname.com>
for reporting a bug in setting the title in the replay display of the "Classic VDR" for reporting a bug in setting the title in the replay display of the "Classic VDR"
skin in case a shorter title is set after a longer one skin in case a shorter title is set after a longer one
for fixing handling of pmAudioOnlyBlack for fixing handling of pmAudioOnlyBlack
for pointing out possible race conditions in handling childTid in cThread
Ulrich Röder <roeder@efr-net.de> Ulrich Röder <roeder@efr-net.de>
for pointing out that there are channels that have a symbol rate higher than for pointing out that there are channels that have a symbol rate higher than
@ -260,6 +261,8 @@ Werner Fink <werner@suse.de>
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 suggesting to replace usleep() calls with a pthread_cond_timedwait() based wait for suggesting to replace usleep() calls with a pthread_cond_timedwait() based wait
for suggesting to add more checks and polling when getting frontend events for suggesting to add more checks and polling when getting frontend events
for setting the VPID before the APID in live mode to avoid unnecessary
overhead in the firmware
Rolf Hakenes <hakenes@hippomi.de> Rolf Hakenes <hakenes@hippomi.de>
for providing 'libdtv' and adapting the EIT mechanisms to it for providing 'libdtv' and adapting the EIT mechanisms to it
@ -537,6 +540,7 @@ Oliver Endriss <o.endriss@gmx.de>
for adding a sample setup for 'DisiCon-4 Single Cable Network' to 'diseqc.conf' for adding a sample setup for 'DisiCon-4 Single Cable Network' to 'diseqc.conf'
for reporting a problem with the name of the remote control for which the keys are for reporting a problem with the name of the remote control for which the keys are
being learned overwriting the date/time in the 'classic' skin being learned overwriting the date/time in the 'classic' skin
for making cDvbOsd check available OSD memory at runtime
Reinhard Walter Buchner <rw.buchner@freenet.de> Reinhard Walter Buchner <rw.buchner@freenet.de>
for adding some satellites to 'sources.conf' for adding some satellites to 'sources.conf'
@ -735,6 +739,7 @@ Sascha Volkenandt <sascha@akv-soft.de>
for pointing out a "near miss" condition in cCondVar for pointing out a "near miss" condition in cCondVar
for reporting a bug in cChannel::SetName() in case only the ShortName or Provider for reporting a bug in cChannel::SetName() in case only the ShortName or Provider
has changed has changed
for fixing a possible recursion in cControl::Shutdown()
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
@ -1079,6 +1084,10 @@ Marco Schl
for fixing the cDvbSpuDecoder for fixing the cDvbSpuDecoder
for fixing a short glitch when starting a recording on the primary device while for fixing a short glitch when starting a recording on the primary device while
in replay or transfer mode in replay or transfer mode
for fixing cRemux::ScanVideoPacket() to make sure it doesn't access memory beyond
the end of the given buffer, which has caused some unjustified "unknown picture
type errors"
for some improvements to cPoller
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
@ -1149,3 +1158,14 @@ Joachim Wilke <vdr@joachim-wilke.de>
Sascha Klek <sklek@gmx.de> Sascha Klek <sklek@gmx.de>
for reporting a problem with the '0' key in the "Day" item of the "Timers" menu for reporting a problem with the '0' key in the "Day" item of the "Timers" menu
Andreas Brugger <brougs78@gmx.net>
for reporting a possible crash when pausing live video and the recording was
unable to start, maybe because there was no lock on the device
Dino Ravnic <dino.ravnic@fer.hr>
for fixing some characters in the iso8859-2 font file
for fixing some errors in the Croatian language texts
Olaf Titz <olaf@bigred.inka.de>
for fixing some typos in the Makefile's 'font' target

21
HISTORY
View File

@ -3138,3 +3138,24 @@ Video Disk Recorder Revision History
shot" and "repeating". The keys '1'...'7' can be used to toggle the individual shot" and "repeating". The keys '1'...'7' can be used to toggle the individual
days ('1' is monday). Thanks to Sascha Klek for reporting a problem with the days ('1' is monday). Thanks to Sascha Klek for reporting a problem with the
'0' key in the "Day" item of the "Timers" menu. '0' key in the "Day" item of the "Timers" menu.
2004-11-21: Version 1.3.17
- Fixed cRemux::ScanVideoPacket() to make sure it doesn't access memory beyond
the end of the given buffer, which has caused some unjustified "unknown
picture type errors" (thanks to Marco Schlüßler).
- Fixed a possible crash when pausing live video and the recording was unable
to start, maybe because there was no lock on the device (thanks to Andreas
Brugger for reporting this one).
- Fixed some characters in the iso8859-2 font file (thanks to Dino Ravnic).
- Fixed some errors in the Croatian language texts (thanks to Dino Ravnic).
- Fixed a possible recursion in cControl::Shutdown() (thanks to Sascha Volkenandt).
- Now setting the VPID before the APID in live mode to avoid unnecessary
overhead in the firmware (thanks to Werner Fink).
- Now checking available OSD memory at runtime (thanks to Oliver Endriss).
- Fixed some typos in the Makefile's 'font' target (thanks to Olaf Titz).
- Fixed handling childTid in cThread to avoid possible race conditions (thanks
to Stefan Huelswitt for pointing this out).
- Fixed toggling the "Day" item in the "Timers" menu, so that it selects the
right day of week for timers in the future.
- Some improvements to cPoller (thanks to Marco Schlüßler).

View File

@ -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: Makefile 1.69 2004/10/30 11:51:09 kls Exp $ # $Id: Makefile 1.72 2004/11/21 11:28:55 kls Exp $
.DELETE_ON_ERROR: .DELETE_ON_ERROR:
@ -80,9 +80,9 @@ all: vdr
font: genfontfile\ font: genfontfile\
fontfix.c fontosd.c fontsml.c\ fontfix.c fontosd.c fontsml.c\
fontfix-iso8859-2.c fontosd-iso8859-2.c fontsml-iso8859-2.c\ fontfix-iso8859-2.c fontosd-iso8859-2.c fontsml-iso8859-2.c\
fontfix_iso8859-5.c fontosd_iso8859-5.c fontsml_iso8859-5.c\ fontfix-iso8859-5.c fontosd-iso8859-5.c fontsml-iso8859-5.c\
fontfix_iso8859-7.c fontosd_iso8859-7.c fontsml_iso8859-7.c\ fontfix-iso8859-7.c fontosd-iso8859-7.c fontsml-iso8859-7.c\
fontfix_iso8859-15.c fontosd_iso8859-15.c fontsml_iso8859-15.c fontfix-iso8859-15.c fontosd-iso8859-15.c fontsml-iso8859-15.c
@echo "font files created." @echo "font files created."
# Implicit rules: # Implicit rules:

View File

@ -15,8 +15,8 @@ ZDF;ZDFvision:11953:hC34:S19.2E:27500:110:120=deu,121=2ch;125=dd:130:0:28006:1:1
3sat;ZDFvision:11953:hC34:S19.2E:27500:210:220=deu,221=2ch:230:0:28007:1:1079:0 3sat;ZDFvision:11953:hC34:S19.2E:27500:210:220=deu,221=2ch: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=deu: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
ORF 1;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
ORF 2;ORF:12692:hC56:S19.2E:22000:500:501=deu;503=deu:505:1762,D05,1702,1801: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
@ -31,7 +31,6 @@ rbb Brandenburg;ARD:12109:hC34:S19.2E:27500:501:502=deu:504:0:28205:1:1073:0
Sky News;BSkyB:11597:vC56:S19.2E:22000:305+131:306=eng:0:0:28707:1:1026:0 Sky News;BSkyB:11597:vC56:S19.2E:22000:305+131:306=eng:0:0:28707:1:1026:0
Veronica/FoxKids;CANAL+:12574:hC56:S19.2E:22000:518+8190:92=dut:38:622,602,100:5020:53:1109:0 Veronica/FoxKids;CANAL+:12574:hC56:S19.2E:22000:518+8190:92=dut:38:622,602,100:5020:53:1109:0
BVN;CANAL+:12574:hC56:S19.2E:22000:515+8190:96=dut:36:0:5025:53:1109:0 BVN;CANAL+:12574:hC56:S19.2E:22000:515+8190:96=dut:36:0:5025:53:1109:0
CNBC Europe;CNBC:12610:vC56:S19.2E:22000:944:945=eng:946:0:12200:1:1112:0
n-tv;RTL World:12187:hC34:S19.2E:27500:169:73=deu:80:0:12090:1:1089:0 n-tv;RTL World:12187:hC34:S19.2E:27500:169:73=deu:80:0:12090:1:1089:0
Al Jazeera;CANALSATELLITE:11567:vC56:S19.2E:22000:55:56=ara:0:0:9021:1:1024:0 Al Jazeera;CANALSATELLITE:11567:vC56:S19.2E:22000:55:56=ara:0:0:9021:1:1024:0
TW1;ORF:12692:hC56:S19.2E:22000:166:167=deu:168:0:13013:1:1117:0 TW1;ORF:12692:hC56:S19.2E:22000:166:167=deu:168:0:13013:1:1117:0
@ -48,7 +47,7 @@ PREMIERE START,START;PREMIERE:11797:hC34:S19.2E:27500:255:256=deu:32:1702,1801,1
PREMIERE 1,PREM 1;PREMIERE:11797:hC34:S19.2E:27500:511:512=deu,513=deu;515=deu:32:1702,1801,1722:10:133:2:0 PREMIERE 1,PREM 1;PREMIERE:11797:hC34:S19.2E:27500:511:512=deu,513=deu;515=deu:32:1702,1801,1722:10:133:2:0
PREMIERE 2,PREM 2;PREMIERE:11797:hC34:S19.2E:27500:1791:1792=deu,1793=deu;1795=deu:32:1702,1722,1801:11:133:2:0 PREMIERE 2,PREM 2;PREMIERE:11797:hC34:S19.2E:27500:1791:1792=deu,1793=deu;1795=deu:32:1702,1722,1801:11:133:2:0
PREMIERE 3,PREM 3;PREMIERE:11797:hC34:S19.2E:27500:2303:2304=deu,2305=deu:32:1722,1801,1702:43:133:2:0 PREMIERE 3,PREM 3;PREMIERE:11797:hC34:S19.2E:27500:2303:2304=deu,2305=deu:32:1722,1801,1702:43:133:2:0
PREMIERE 4,PREM 4;PREMIERE:11797:hC34:S19.2E:27500:767:768=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:1722,1702,1801:29:133:2:0 PREMIERE 5,PREM 5;PREMIERE:11797:hC34:S19.2E:27500:1279:1280=deu:32:1722,1702,1801:29:133:2:0
PREMIERE 6,PREM 6;PREMIERE:11797:hC34:S19.2E:27500:1535:1536=deu:32:1702,1722,1801:41:133:2:0 PREMIERE 6,PREM 6;PREMIERE:11797:hC34:S19.2E:27500:1535:1536=deu:32:1702,1722,1801:41:133:2:0
PREMIERE 7,PREM 7;PREMIERE:11797:hC34:S19.2E:27500:1023:1024=deu:32:1722,1702,1801:20:133:2:0 PREMIERE 7,PREM 7;PREMIERE:11797:hC34:S19.2E:27500:1023:1024=deu:32:1722,1702,1801:20:133:2:0
@ -94,15 +93,15 @@ Sky Mix;BSkyB:12226:hC23:S28.2E:27500:2314+2304:2315=eng,2316=NAR:2317:960,961:5
ITV2;BSkyB:10906:vC56:S28.2E:22000:2350:2351=eng,2352=eng:2353:960,961:10240:2:2054:0 ITV2;BSkyB:10906:vC56:S28.2E:22000:2350:2351=eng,2352=eng:2353:960,961:10240:2:2054:0
Sci-Fi;BSkyB:12148:hC23:S28.2E:27500:2314+2304:2315=eng:2316:960,961:4905:2:2023:0 Sci-Fi;BSkyB:12148:hC23:S28.2E:27500:2314+2304:2315=eng:2316:960,961:4905:2:2023:0
Paramount;BSkyB:12187:hC23:S28.2E:27500:2313+2304:2314=eng:2315:960,961:5904:2:2025:0 Paramount;BSkyB:12187:hC23:S28.2E:27500:2313+2304:2314=eng:2315:960,961:5904:2:2025:0
Discovery;BSkyB:11875:hC23:S28.2E:27500:2304:2306=eng,2307: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
Sky Movies 1;BSkyB:11836:hC23:S28.2E:27500:2310+2304:2311=eng,2312=NAR;2314=eng:2313:960,961:4303:2:2007:0 Sky Movies 1;BSkyB:11836:hC23:S28.2E:27500:2310+2304:2311=eng,2312=NAR;2314=eng:2313:960,961:4303:2:2007:0
Sky Movies 2;BSkyB:11836:hC23:S28.2E:27500:2305+2304:2306=eng,2307=NAR;2309=eng:2308:960,961:4302:2:2007:0 Sky Movies 2;BSkyB:11836:hC23:S28.2E:27500:2305+2304:2306=eng,2307=NAR;2309=eng:2308:960,961:4302:2:2007:0
Sky Movies 3;BSkyB:11836:hC23:S28.2E:27500:2315+2304:2316=eng,2317=NAR;2319=eng:2318:960,961:4403:2:2007:0 Sky Movies 3;BSkyB:11836:hC23:S28.2E:27500:2321+2304:2322=eng,2323=NAR;2325=eng:2324:960,961:4403:2:2007:0
Sky Movies 4;BSkyB:11914:hC23:S28.2E:27500:2305+2304:2306=eng,2307=NAR:2308:960,961:4402:2:2011:0 Sky Movies 4;BSkyB:11914:hC23:S28.2E:27500:2305+2304:2306=eng,2307=NAR:2308:960,961:4402:2:2011:0
Sky Movies 5;BSkyB:11914:hC23:S28.2E:27500:2313+2304:2314=eng,2315=NAR:2316:960,961:4503:2:2011:0 Sky Movies 5;BSkyB:11914:hC23:S28.2E:27500:2313+2304:2314=eng,2315=NAR:2316:960,961:4503:2:2011:0
Sky Movies 6;BSkyB:11914:hC23:S28.2E:27500:2309+2304:2310=eng,2311=NAR:2312:960,961:4502:2:2011:0 Sky Movies 6;BSkyB:11914:hC23:S28.2E:27500:2309+2304:2310=eng,2311=NAR:2312:960,961:4502:2:2011:0
Sky Movies 7;BSkyB:12090:vC23:S28.2E:27500:2312+2304:2313=eng,2314=NAR:2315:960,961:4603:2:2020:0 Sky Movies 7;BSkyB:12090:vC23:S28.2E:27500:2312+2304:2313=eng,2314=NAR:2315:960,961:4603:2:2020:0
Sky Movies 8;BSkyB:11836:hC23:S28.2E:27500:2320+2304:2321=eng,2322=NAR:2323:960,961:5502:2:2007:0 Sky Movies 8;BSkyB:11836:hC23:S28.2E:27500:2326+2304:2327=eng,2328=NAR:2329:960,961:5502:2:2007:0
Sky Movies 9;BSkyB:12090:vC23:S28.2E:27500:2308+2304:2309=eng,2310=NAR:2311:960,961:4602:2:2020:0 Sky Movies 9;BSkyB:12090:vC23:S28.2E:27500:2308+2304:2309=eng,2310=NAR:2311:960,961:4602:2:2020:0
Sky Cinema 1;BSkyB:12090:vC23:S28.2E:27500:2305+2304:2306=eng:2307:960,961:4809:2:2020:0 Sky Cinema 1;BSkyB:12090:vC23:S28.2E:27500:2305+2304:2306=eng:2307:960,961:4809:2:2020:0
Sky Cinema 2;BSkyB:12090:vC23:S28.2E:27500:2316+2304:2317=eng:2318:960,961:4802:2:2020:0 Sky Cinema 2;BSkyB:12090:vC23:S28.2E:27500:2316+2304:2317=eng:2318:960,961:4802:2:2020:0
@ -115,6 +114,6 @@ S1T;BSkyB:12285:vC23:S28.2E:27500:2311+2304:2312=eng,2313=NAR:2307:960,961:4409:
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
BBC PARL'MNT:12129:vC23:S28.2E:27500:2304:2306=eng,2307=eng:2305:0:7300:2:2022:0 BBC PARL'MNT:12129:vC23:S28.2E:27500:2304:2306=eng,2307=eng:2305:0:7300:2:2022:0
Olisat / Telefe;T-Systems/MTI:11200:vC56:S13.0E:27500:413:414=ita:0:0:4733:318:13400:0 Olisat / Telefe;T-Systems/MTI:11200:vC56:S13.0E:27500:413:414=ita:0:0:4733:318:13400:0
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:0:FF:29700:0:0:0 Astra HD:12441:vC34:S19.2E:27500:133+80:134:0:FF:29700:0:0:0
:@1000 New channels :@1000 New channels

View File

@ -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.204 2004/11/02 17:20:27 kls Exp $ * $Id: config.h 1.205 2004/11/16 16:57:43 kls Exp $
*/ */
#ifndef __CONFIG_H #ifndef __CONFIG_H
@ -20,8 +20,8 @@
#include "i18n.h" #include "i18n.h"
#include "tools.h" #include "tools.h"
#define VDRVERSION "1.3.16" #define VDRVERSION "1.3.17"
#define VDRVERSNUM 10316 // Version * 10000 + Major * 100 + Minor #define VDRVERSNUM 10317 // Version * 10000 + Major * 100 + Minor
#define MAXPRIORITY 99 #define MAXPRIORITY 99
#define MAXLIFETIME 99 #define MAXLIFETIME 99

View File

@ -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: dvbdevice.c 1.104 2004/11/07 10:27:19 kls Exp $ * $Id: dvbdevice.c 1.105 2004/11/20 11:41:37 kls Exp $
*/ */
#include "dvbdevice.h" #include "dvbdevice.h"
@ -800,7 +800,7 @@ bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
if (TurnOnLivePIDs) { if (TurnOnLivePIDs) {
aPid1 = Channel->Apid1(); aPid1 = Channel->Apid1();
aPid2 = Channel->Apid2(); aPid2 = Channel->Apid2();
if (!(AddPid(Channel->Ppid(), ptPcr) && AddPid(Channel->Apid1(), ptAudio) && AddPid(Channel->Vpid(), ptVideo))) {//XXX+ dolby dpid1!!! (if audio plugins are attached) if (!(AddPid(Channel->Ppid(), ptPcr) && AddPid(Channel->Vpid(), ptVideo) && AddPid(Channel->Apid1(), ptAudio))) {//XXX+ dolby dpid1!!! (if audio plugins are attached)
esyslog("ERROR: failed to set PIDs for channel %d on device %d", Channel->Number(), CardIndex() + 1); esyslog("ERROR: failed to set PIDs for channel %d on device %d", Channel->Number(), CardIndex() + 1);
return false; return false;
} }

View File

@ -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: dvbosd.c 1.24 2004/07/18 13:51:42 kls Exp $ * $Id: dvbosd.c 1.25 2004/11/20 14:29:25 kls Exp $
*/ */
#include "dvbosd.h" #include "dvbosd.h"
@ -18,11 +18,12 @@
// --- cDvbOsd --------------------------------------------------------------- // --- cDvbOsd ---------------------------------------------------------------
#define MAXNUMWINDOWS 7 // OSD windows are counted 1...7 #define MAXNUMWINDOWS 7 // OSD windows are counted 1...7
#define MAXOSDMEMORY 92000 // number of bytes available to the OSD (depends on firmware version, but there is no way of determining the actual value) #define MAXOSDMEMORY 92000 // number of bytes available to the OSD (for unmodified DVB cards)
class cDvbOsd : public cOsd { class cDvbOsd : public cOsd {
private: private:
int osdDev; int osdDev;
int osdMem;
bool shown; bool shown;
void Cmd(OSD_Command cmd, int color = 0, int x0 = 0, int y0 = 0, int x1 = 0, int y1 = 0, const void *data = NULL); void Cmd(OSD_Command cmd, int color = 0, int x0 = 0, int y0 = 0, int x1 = 0, int y1 = 0, const void *data = NULL);
public: public:
@ -40,6 +41,14 @@ cDvbOsd::cDvbOsd(int Left, int Top, int OsdDev)
if (osdDev < 0) if (osdDev < 0)
esyslog("ERROR: illegal OSD device handle (%d)!", osdDev); esyslog("ERROR: illegal OSD device handle (%d)!", osdDev);
else { else {
osdMem = MAXOSDMEMORY;
#ifdef OSD_CAP_MEMSIZE
// modified DVB cards may have more OSD memory:
osd_cap_t cap;
cap.cmd = OSD_CAP_MEMSIZE;
if (ioctl(osdDev, OSD_GET_CAPABILITY, &cap) == 0)
osdMem = cap.val;
#endif
// must clear all windows here to avoid flashing effects - doesn't work if done // must clear all windows here to avoid flashing effects - doesn't work if done
// in Flush() only for the windows that are actually used... // in Flush() only for the windows that are actually used...
for (int i = 0; i < MAXNUMWINDOWS; i++) { for (int i = 0; i < MAXNUMWINDOWS; i++) {
@ -74,7 +83,7 @@ eOsdError cDvbOsd::CanHandleAreas(const tArea *Areas, int NumAreas)
return oeWrongAlignment; return oeWrongAlignment;
TotalMemory += Areas[i].Width() * Areas[i].Height() / (8 / Areas[i].bpp); TotalMemory += Areas[i].Width() * Areas[i].Height() / (8 / Areas[i].bpp);
} }
if (TotalMemory > MAXOSDMEMORY) if (TotalMemory > osdMem)
return oeOutOfMemory; return oeOutOfMemory;
} }
return Result; return Result;

View File

@ -4992,34 +4992,34 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x00000000, // ............... 0x00000000, // ...............
}, },
{ // 198 iso8859-2 { // 198 iso8859-2
12, 27, 17, 27,
0x00000000, // ............ 0x000000E0, // ..........***....
0x00000000, // ............ 0x000000C0, // ..........**.....
0x00000000, // ............ 0x00000180, // .........**......
0x00000000, // ............ 0x00000300, // ........**.......
0x00000000, // ............ 0x00000000, // .................
0x00000000, // ............ 0x00000FC0, // ......******.....
0x00000030, // .......**... 0x00003FE0, // ....*********....
0x00000060, // ......**.... 0x00007070, // ...***.....***...
0x000000C0, // .....**..... 0x0000E038, // ..***.......***..
0x00000000, // ............ 0x0000C018, // ..**.........**..
0x000001F0, // ....*****... 0x0000C000, // ..**.............
0x000007F8, // ..********.. 0x00018000, // .**..............
0x0000061C, // ..**....***. 0x00018000, // .**..............
0x00000C0C, // .**......**. 0x00018000, // .**..............
0x00000C00, // .**......... 0x00018000, // .**..............
0x00000C00, // .**......... 0x00018000, // .**..............
0x00000C00, // .**......... 0x00018018, // .**..........**..
0x00000C00, // .**......... 0x0000C018, // ..**.........**..
0x00000C0C, // .**......**. 0x0000E018, // ..***........**..
0x0000061C, // ..**....***. 0x00007030, // ...***......**...
0x000007F8, // ..********.. 0x00007FF0, // ...***********...
0x000001F0, // ....*****... 0x00001FC0, // .....*******.....
0x00000000, // ............ 0x00000000, // .................
0x00000000, // ............ 0x00000000, // .................
0x00000000, // ............ 0x00000000, // .................
0x00000000, // ............ 0x00000000, // .................
0x00000000, // ............ 0x00000000, // .................
}, },
{ // 199 { // 199
17, 27, 17, 27,
@ -5952,34 +5952,34 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = {
0x00000000, // ............. 0x00000000, // .............
}, },
{ // 230 iso8859-2 { // 230 iso8859-2
17, 27, 12, 27,
0x000000E0, // ..........***.... 0x00000000, // ............
0x000000C0, // ..........**..... 0x00000000, // ............
0x00000180, // .........**...... 0x00000000, // ............
0x00000300, // ........**....... 0x00000000, // ............
0x00000000, // ................. 0x00000000, // ............
0x00000FC0, // ......******..... 0x00000000, // ............
0x00003FE0, // ....*********.... 0x00000030, // .......**...
0x00007070, // ...***.....***... 0x00000060, // ......**....
0x0000E038, // ..***.......***.. 0x000000C0, // .....**.....
0x0000C018, // ..**.........**.. 0x00000000, // ............
0x0000C000, // ..**............. 0x000001F0, // ....*****...
0x00018000, // .**.............. 0x000007F8, // ..********..
0x00018000, // .**.............. 0x0000061C, // ..**....***.
0x00018000, // .**.............. 0x00000C0C, // .**......**.
0x00018000, // .**.............. 0x00000C00, // .**.........
0x00018000, // .**.............. 0x00000C00, // .**.........
0x00018018, // .**..........**.. 0x00000C00, // .**.........
0x0000C018, // ..**.........**.. 0x00000C00, // .**.........
0x0000E018, // ..***........**.. 0x00000C0C, // .**......**.
0x00007030, // ...***......**... 0x0000061C, // ..**....***.
0x00007FF0, // ...***********... 0x000007F8, // ..********..
0x00001FC0, // .....*******..... 0x000001F0, // ....*****...
0x00000000, // ................. 0x00000000, // ............
0x00000000, // ................. 0x00000000, // ............
0x00000000, // ................. 0x00000000, // ............
0x00000000, // ................. 0x00000000, // ............
0x00000000, // ................. 0x00000000, // ............
}, },
{ // 231 { // 231
12, 27, 12, 27,

8
i18n.c
View File

@ -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.163 2004/11/14 14:28:29 kls Exp $ * $Id: i18n.c 1.164 2004/11/20 11:23:58 kls Exp $
* *
* Translations provided by: * Translations provided by:
* *
@ -23,7 +23,7 @@
* Hungarian Istvan Koenigsberger <istvnko@hotmail.com> and Guido Josten <guido.josten@t-online.de> * Hungarian Istvan Koenigsberger <istvnko@hotmail.com> and Guido Josten <guido.josten@t-online.de>
* Catalanian Marc Rovira Vall <tm05462@salleURL.edu>, Ramon Roca <ramon.roca@xcombo.com> and Jordi Vilà <jvila@tinet.org> * Catalanian Marc Rovira Vall <tm05462@salleURL.edu>, Ramon Roca <ramon.roca@xcombo.com> and Jordi Vilà <jvila@tinet.org>
* Russian Vyacheslav Dikonov <sdiconov@mail.ru> * Russian Vyacheslav Dikonov <sdiconov@mail.ru>
* Croatian Drazen Dupor <drazen.dupor@dupor.com> * Croatian Drazen Dupor <drazen.dupor@dupor.com> and Dino Ravnic <dino.ravnic@fer.hr>
* Estonian Arthur Konovalov <kasjas@hot.ee> * Estonian Arthur Konovalov <kasjas@hot.ee>
* Danish Mogens Elneff <mogens@elneff.dk> * Danish Mogens Elneff <mogens@elneff.dk>
* *
@ -480,7 +480,7 @@ const tI18nPhrase Phrases[] = {
"Beállítani", "Beállítani",
"Editar", "Editar",
"ÀÕÔÐÚâØàÞÒÐâì", "ÀÕÔÐÚâØàÞÒÐâì",
"Promjeni", "Promijeni",
"Muuda", "Muuda",
"Rediger", "Rediger",
}, },
@ -5090,7 +5090,7 @@ const tI18nPhrase Phrases[] = {
"",// TODO "",// TODO
"",// TODO "",// TODO
"ºÛÐááØçÕáÚØÙ", "ºÛÐááØçÕáÚØÙ",
"Klasiècni VDR", "Klasièni VDR",
"Klassikaline VDR", "Klassikaline VDR",
"Klassisk VDR", "Klassisk VDR",
}, },

10
menu.c
View File

@ -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.319 2004/11/01 13:49:40 kls Exp $ * $Id: menu.c 1.320 2004/11/20 10:49:17 kls Exp $
*/ */
#include "menu.h" #include "menu.h"
@ -2833,10 +2833,16 @@ cRecordControl::cRecordControl(cDevice *Device, cTimer *Timer, bool Pause)
if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo() if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo()
cReplayControl::SetRecording(fileName, Recording.Name()); cReplayControl::SetRecording(fileName, Recording.Name());
Recordings.AddByName(fileName); Recordings.AddByName(fileName);
return;
} }
else else
DELETENULL(recorder); DELETENULL(recorder);
} }
if (!Timer) {
Timers.Del(timer);
Timers.SetModified();
timer = NULL;
}
} }
cRecordControl::~cRecordControl() cRecordControl::~cRecordControl()
@ -2928,7 +2934,7 @@ bool cRecordControls::Start(cTimer *Timer, bool Pause)
for (int i = 0; i < MAXRECORDCONTROLS; i++) { for (int i = 0; i < MAXRECORDCONTROLS; i++) {
if (!RecordControls[i]) { if (!RecordControls[i]) {
RecordControls[i] = new cRecordControl(device, Timer, Pause); RecordControls[i] = new cRecordControl(device, Timer, Pause);
return true; return RecordControls[i]->Process(time(NULL));
} }
} }
} }

View File

@ -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: menuitems.c 1.20 2004/11/14 16:16:21 kls Exp $ * $Id: menuitems.c 1.21 2004/11/21 13:24:10 kls Exp $
*/ */
#include "menuitems.h" #include "menuitems.h"
@ -554,6 +554,7 @@ cMenuEditDayItem::cMenuEditDayItem(const char *Name, int *Value)
:cMenuEditIntItem(Name, Value, -INT_MAX, 31) :cMenuEditIntItem(Name, Value, -INT_MAX, 31)
{ {
d = -1; d = -1;
md = 0;
if (*value < 0) { if (*value < 0) {
int n = 0; int n = 0;
while (days[n]) { while (days[n]) {
@ -621,12 +622,14 @@ eOSState cMenuEditDayItem::ProcessKey(eKeys Key)
eOSState result = cMenuEditIntItem::ProcessKey(Key); eOSState result = cMenuEditIntItem::ProcessKey(Key);
if (result == osContinue && Key == k0) { if (result == osContinue && Key == k0) {
if (d >= 0) { if (d >= 0) {
*value = cTimer::GetMDay(time(NULL)); *value = md ? md : cTimer::GetMDay(time(NULL));
md = 0;
d = -1; d = -1;
Set(); Set();
} }
else if (*value == 0 || *value == v) { else if (*value == 0 || *value == v) {
d = cTimer::GetWDay(time(NULL)); md = v;
d = cTimer::GetWDayFromMDay(v);
*value = days[d]; *value = days[d];
Set(); Set();
} }

View File

@ -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: menuitems.h 1.9 2004/05/16 12:45:14 kls Exp $ * $Id: menuitems.h 1.10 2004/11/21 13:23:00 kls Exp $
*/ */
#ifndef __MENUITEMS_H #ifndef __MENUITEMS_H
@ -119,9 +119,11 @@ public:
}; };
class cMenuEditDayItem : public cMenuEditIntItem { class cMenuEditDayItem : public cMenuEditIntItem {
protected: private:
static int days[]; static int days[];
int d; int d;
int md;
protected:
virtual void Set(void); virtual void Set(void);
public: public:
cMenuEditDayItem(const char *Name, int *Value); cMenuEditDayItem(const char *Name, int *Value);

View File

@ -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: player.c 1.7 2004/04/16 13:34:11 kls Exp $ * $Id: player.c 1.8 2004/11/20 11:33:08 kls Exp $
*/ */
#include "player.h" #include "player.h"
@ -88,6 +88,7 @@ void cControl::Attach(void)
void cControl::Shutdown(void) void cControl::Shutdown(void)
{ {
delete control; cControl *c = control; // avoids recursions
control = NULL; control = NULL;
delete c;
} }

View File

@ -8,7 +8,7 @@
* the Linux DVB driver's 'tuxplayer' example and were rewritten to suit * the Linux DVB driver's 'tuxplayer' example and were rewritten to suit
* VDR's needs. * VDR's needs.
* *
* $Id: remux.c 1.21 2004/10/24 09:25:33 kls Exp $ * $Id: remux.c 1.22 2004/11/16 16:49:03 kls Exp $
*/ */
#include "remux.h" #include "remux.h"
@ -451,7 +451,7 @@ int cRemux::ScanVideoPacket(const uchar *Data, int Count, int Offset, uchar &Pic
if (Length >= 8) { if (Length >= 8) {
int i = Offset + 8; // the minimum length of the video packet header int i = Offset + 8; // the minimum length of the video packet header
i += Data[i] + 1; // possible additional header bytes i += Data[i] + 1; // possible additional header bytes
for (; i < Offset + Length; i++) { for (; i < Offset + Length - 5; i++) {
if (Data[i] == 0 && Data[i + 1] == 0 && Data[i + 2] == 1) { if (Data[i] == 0 && Data[i + 1] == 0 && Data[i + 2] == 1) {
switch (Data[i + 3]) { switch (Data[i + 3]) {
case SC_PICTURE: PictureType = (Data[i + 5] >> 3) & 0x07; case SC_PICTURE: PictureType = (Data[i + 5] >> 3) & 0x07;

2
runvdr
View File

@ -18,7 +18,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: runvdr 1.12 2004/01/09 16:19:26 kls Exp $ # $Id: runvdr 1.14 2004/11/21 11:30:00 kls Exp $
DVBDIR="../DVB/driver" DVBDIR="../DVB/driver"
VDRPRG="./vdr" VDRPRG="./vdr"

View File

@ -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: thread.c 1.36 2004/10/31 09:54:02 kls Exp $ * $Id: thread.c 1.37 2004/11/20 16:21:14 kls Exp $
*/ */
#include "thread.h" #include "thread.h"
@ -233,12 +233,15 @@ void *cThread::StartThread(cThread *Thread)
bool cThread::Start(void) bool cThread::Start(void)
{ {
Lock();
if (!childTid) { if (!childTid) {
parentTid = pthread_self(); parentTid = pthread_self();
pthread_create(&childTid, NULL, (void *(*) (void *))&StartThread, (void *)this); pthread_t Tid;
pthread_detach(childTid); // auto-reap pthread_create(&Tid, NULL, (void *(*) (void *))&StartThread, (void *)this);
pthread_setschedparam(childTid, SCHED_RR, 0); pthread_detach(Tid); // auto-reap
pthread_setschedparam(Tid, SCHED_RR, 0);
} }
Unlock();
return true; //XXX return value of pthread_create()??? return true; //XXX return value of pthread_create()???
} }
@ -277,10 +280,12 @@ void cThread::Cancel(int WaitSeconds)
} }
esyslog("ERROR: thread %ld won't end (waited %d seconds) - cancelling it...", childTid, WaitSeconds); esyslog("ERROR: thread %ld won't end (waited %d seconds) - cancelling it...", childTid, WaitSeconds);
} }
Lock();
if (childTid) { if (childTid) {
pthread_cancel(childTid); pthread_cancel(childTid);
childTid = 0; childTid = 0;
} }
Unlock();
} }
} }

View File

@ -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: timers.c 1.17 2004/11/14 16:02:42 kls Exp $ * $Id: timers.c 1.18 2004/11/21 13:15:33 kls Exp $
*/ */
#include "timers.h" #include "timers.h"
@ -269,6 +269,18 @@ int cTimer::GetWDay(time_t t)
return weekday == 0 ? 6 : weekday - 1; // we start with monday==0! return weekday == 0 ? 6 : weekday - 1; // we start with monday==0!
} }
int cTimer::GetWDayFromMDay(int MDay)
{
time_t now = time(NULL);
int md = GetMDay(now);
for (int i = -1; i <= 28; i++) { // looking 4 weeks into the future should be enough
time_t t0 = IncDay(now, i);
if (GetMDay(t0) == MDay)
return GetWDay(t0);
}
return GetWDay(now); // just to return something
}
bool cTimer::DayMatches(time_t t) const bool cTimer::DayMatches(time_t t) const
{ {
return IsSingleEvent() ? GetMDay(t) == day : (day & (1 << GetWDay(t))) != 0; return IsSingleEvent() ? GetMDay(t) == day : (day & (1 << GetWDay(t))) != 0;

View File

@ -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: timers.h 1.11 2004/11/14 16:02:28 kls Exp $ * $Id: timers.h 1.12 2004/11/21 12:37:33 kls Exp $
*/ */
#ifndef __TIMERS_H #ifndef __TIMERS_H
@ -66,6 +66,7 @@ public:
bool IsSingleEvent(void) const; bool IsSingleEvent(void) const;
static int GetMDay(time_t t); static int GetMDay(time_t t);
static int GetWDay(time_t t); static int GetWDay(time_t t);
static int GetWDayFromMDay(int MDay);
bool DayMatches(time_t t) const; bool DayMatches(time_t t) const;
static time_t IncDay(time_t t, int Days); static time_t IncDay(time_t t, int Days);
static time_t SetTime(time_t t, int SecondsFromMidnight); static time_t SetTime(time_t t, int SecondsFromMidnight);

View File

@ -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.c 1.81 2004/10/31 16:42:36 kls Exp $ * $Id: tools.c 1.82 2004/11/21 14:36:34 kls Exp $
*/ */
#include "tools.h" #include "tools.h"
@ -532,12 +532,13 @@ bool cPoller::Add(int FileHandle, bool Out)
{ {
if (FileHandle >= 0) { if (FileHandle >= 0) {
for (int i = 0; i < numFileHandles; i++) { for (int i = 0; i < numFileHandles; i++) {
if (pfd[i].fd == FileHandle) if (pfd[i].fd == FileHandle && pfd[i].events == (Out ? POLLOUT : POLLIN))
return true; return true;
} }
if (numFileHandles < MaxPollFiles) { if (numFileHandles < MaxPollFiles) {
pfd[numFileHandles].fd = FileHandle; pfd[numFileHandles].fd = FileHandle;
pfd[numFileHandles].events = Out ? POLLOUT : POLLIN; pfd[numFileHandles].events = Out ? POLLOUT : POLLIN;
pfd[numFileHandles].revents = 0;
numFileHandles++; numFileHandles++;
return true; return true;
} }