diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2004-11-21 18:00:00 +0100 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2004-11-21 18:00:00 +0100 |
commit | 630ba21dc198e3fbf8c15c59f7ea852f7174c476 (patch) | |
tree | e22596d33f241fb414204c962c004c605a838a1b | |
parent | 23ed5a5ed3824b01cbf66699ff0b34f72ddb9826 (diff) | |
download | vdr-patch-lnbsharing-630ba21dc198e3fbf8c15c59f7ea852f7174c476.tar.gz vdr-patch-lnbsharing-630ba21dc198e3fbf8c15c59f7ea852f7174c476.tar.bz2 |
Version 1.3.17vdr-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).
-rw-r--r-- | CONTRIBUTORS | 20 | ||||
-rw-r--r-- | HISTORY | 21 | ||||
-rw-r--r-- | Makefile | 8 | ||||
-rw-r--r-- | channels.conf | 15 | ||||
-rw-r--r-- | config.h | 6 | ||||
-rw-r--r-- | dvbdevice.c | 4 | ||||
-rw-r--r-- | dvbosd.c | 15 | ||||
-rw-r--r-- | fontosd-iso8859-2.c | 112 | ||||
-rw-r--r-- | i18n.c | 8 | ||||
-rw-r--r-- | menu.c | 10 | ||||
-rw-r--r-- | menuitems.c | 9 | ||||
-rw-r--r-- | menuitems.h | 6 | ||||
-rw-r--r-- | player.c | 5 | ||||
-rw-r--r-- | remux.c | 4 | ||||
-rwxr-xr-x | runvdr | 2 | ||||
-rw-r--r-- | thread.c | 13 | ||||
-rw-r--r-- | timers.c | 14 | ||||
-rw-r--r-- | timers.h | 3 | ||||
-rw-r--r-- | tools.c | 5 |
19 files changed, 180 insertions, 100 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 000ed46..0ee0562 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -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" skin in case a shorter title is set after a longer one for fixing handling of pmAudioOnlyBlack + for pointing out possible race conditions in handling childTid in cThread Ulrich Röder <roeder@efr-net.de> 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 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 setting the VPID before the APID in live mode to avoid unnecessary + overhead in the firmware Rolf Hakenes <hakenes@hippomi.de> 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 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 + for making cDvbOsd check available OSD memory at runtime Reinhard Walter Buchner <rw.buchner@freenet.de> 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 reporting a bug in cChannel::SetName() in case only the ShortName or Provider has changed + for fixing a possible recursion in cControl::Shutdown() Malcolm Caldwell <malcolm.caldwell@ntu.edu.au> for modifying LOF handling to allow for C-band reception @@ -1079,6 +1084,10 @@ Marco Schlüßler <marco@lordzodiac.de> for fixing the cDvbSpuDecoder for fixing a short glitch when starting a recording on the primary device while 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> 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> 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 @@ -3138,3 +3138,24 @@ Video Disk Recorder Revision History 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 '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). @@ -4,7 +4,7 @@ # See the main source file 'vdr.c' for copyright information and # 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: @@ -80,9 +80,9 @@ all: vdr font: genfontfile\ fontfix.c fontosd.c fontsml.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-7.c fontosd_iso8859-7.c fontsml_iso8859-7.c\ - fontfix_iso8859-15.c fontosd_iso8859-15.c fontsml_iso8859-15.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-15.c fontosd-iso8859-15.c fontsml-iso8859-15.c @echo "font files created." # Implicit rules: diff --git a/channels.conf b/channels.conf index 95ccdf1..f6db1a7 100644 --- a/channels.conf +++ b/channels.conf @@ -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 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 -ORF 1;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 +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:1762,D05,1702,1801:13002:1:1117: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 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 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 -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 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 @@ -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 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 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 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 @@ -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 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 -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 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 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 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 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 @@ -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 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 -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 :@1000 New channels @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * 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 @@ -20,8 +20,8 @@ #include "i18n.h" #include "tools.h" -#define VDRVERSION "1.3.16" -#define VDRVERSNUM 10316 // Version * 10000 + Major * 100 + Minor +#define VDRVERSION "1.3.17" +#define VDRVERSNUM 10317 // Version * 10000 + Major * 100 + Minor #define MAXPRIORITY 99 #define MAXLIFETIME 99 diff --git a/dvbdevice.c b/dvbdevice.c index 2702f95..8780ac5 100644 --- a/dvbdevice.c +++ b/dvbdevice.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * 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" @@ -800,7 +800,7 @@ bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView) if (TurnOnLivePIDs) { aPid1 = Channel->Apid1(); 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); return false; } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * 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" @@ -18,11 +18,12 @@ // --- cDvbOsd --------------------------------------------------------------- #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 { private: int osdDev; + int osdMem; 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); public: @@ -40,6 +41,14 @@ cDvbOsd::cDvbOsd(int Left, int Top, int OsdDev) if (osdDev < 0) esyslog("ERROR: illegal OSD device handle (%d)!", osdDev); 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 // in Flush() only for the windows that are actually used... for (int i = 0; i < MAXNUMWINDOWS; i++) { @@ -74,7 +83,7 @@ eOsdError cDvbOsd::CanHandleAreas(const tArea *Areas, int NumAreas) return oeWrongAlignment; TotalMemory += Areas[i].Width() * Areas[i].Height() / (8 / Areas[i].bpp); } - if (TotalMemory > MAXOSDMEMORY) + if (TotalMemory > osdMem) return oeOutOfMemory; } return Result; diff --git a/fontosd-iso8859-2.c b/fontosd-iso8859-2.c index bf9c0fb..4b68e4e 100644 --- a/fontosd-iso8859-2.c +++ b/fontosd-iso8859-2.c @@ -4992,34 +4992,34 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = { 0x00000000, // ............... }, { // 198 iso8859-2 - 12, 27, - 0x00000000, // ............ - 0x00000000, // ............ - 0x00000000, // ............ - 0x00000000, // ............ - 0x00000000, // ............ - 0x00000000, // ............ - 0x00000030, // .......**... - 0x00000060, // ......**.... - 0x000000C0, // .....**..... - 0x00000000, // ............ - 0x000001F0, // ....*****... - 0x000007F8, // ..********.. - 0x0000061C, // ..**....***. - 0x00000C0C, // .**......**. - 0x00000C00, // .**......... - 0x00000C00, // .**......... - 0x00000C00, // .**......... - 0x00000C00, // .**......... - 0x00000C0C, // .**......**. - 0x0000061C, // ..**....***. - 0x000007F8, // ..********.. - 0x000001F0, // ....*****... - 0x00000000, // ............ - 0x00000000, // ............ - 0x00000000, // ............ - 0x00000000, // ............ - 0x00000000, // ............ + 17, 27, + 0x000000E0, // ..........***.... + 0x000000C0, // ..........**..... + 0x00000180, // .........**...... + 0x00000300, // ........**....... + 0x00000000, // ................. + 0x00000FC0, // ......******..... + 0x00003FE0, // ....*********.... + 0x00007070, // ...***.....***... + 0x0000E038, // ..***.......***.. + 0x0000C018, // ..**.........**.. + 0x0000C000, // ..**............. + 0x00018000, // .**.............. + 0x00018000, // .**.............. + 0x00018000, // .**.............. + 0x00018000, // .**.............. + 0x00018000, // .**.............. + 0x00018018, // .**..........**.. + 0x0000C018, // ..**.........**.. + 0x0000E018, // ..***........**.. + 0x00007030, // ...***......**... + 0x00007FF0, // ...***********... + 0x00001FC0, // .....*******..... + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. }, { // 199 17, 27, @@ -5952,34 +5952,34 @@ cFont::tPixelData FontOsd_iso8859_2[][29] = { 0x00000000, // ............. }, { // 230 iso8859-2 - 17, 27, - 0x000000E0, // ..........***.... - 0x000000C0, // ..........**..... - 0x00000180, // .........**...... - 0x00000300, // ........**....... - 0x00000000, // ................. - 0x00000FC0, // ......******..... - 0x00003FE0, // ....*********.... - 0x00007070, // ...***.....***... - 0x0000E038, // ..***.......***.. - 0x0000C018, // ..**.........**.. - 0x0000C000, // ..**............. - 0x00018000, // .**.............. - 0x00018000, // .**.............. - 0x00018000, // .**.............. - 0x00018000, // .**.............. - 0x00018000, // .**.............. - 0x00018018, // .**..........**.. - 0x0000C018, // ..**.........**.. - 0x0000E018, // ..***........**.. - 0x00007030, // ...***......**... - 0x00007FF0, // ...***********... - 0x00001FC0, // .....*******..... - 0x00000000, // ................. - 0x00000000, // ................. - 0x00000000, // ................. - 0x00000000, // ................. - 0x00000000, // ................. + 12, 27, + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000030, // .......**... + 0x00000060, // ......**.... + 0x000000C0, // .....**..... + 0x00000000, // ............ + 0x000001F0, // ....*****... + 0x000007F8, // ..********.. + 0x0000061C, // ..**....***. + 0x00000C0C, // .**......**. + 0x00000C00, // .**......... + 0x00000C00, // .**......... + 0x00000C00, // .**......... + 0x00000C00, // .**......... + 0x00000C0C, // .**......**. + 0x0000061C, // ..**....***. + 0x000007F8, // ..********.. + 0x000001F0, // ....*****... + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ }, { // 231 12, 27, @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * 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: * @@ -23,7 +23,7 @@ * 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> * 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> * Danish Mogens Elneff <mogens@elneff.dk> * @@ -480,7 +480,7 @@ const tI18nPhrase Phrases[] = { "Beállítani", "Editar", "ÀÕÔÐÚâØàÞÒÐâì", - "Promjeni", + "Promijeni", "Muuda", "Rediger", }, @@ -5090,7 +5090,7 @@ const tI18nPhrase Phrases[] = { "",// TODO "",// TODO "ºÛÐááØçÕáÚØÙ", - "Klasiècni VDR", + "Klasièni VDR", "Klassikaline VDR", "Klassisk VDR", }, @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * 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" @@ -2833,10 +2833,16 @@ cRecordControl::cRecordControl(cDevice *Device, cTimer *Timer, bool Pause) if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo() cReplayControl::SetRecording(fileName, Recording.Name()); Recordings.AddByName(fileName); + return; } else DELETENULL(recorder); } + if (!Timer) { + Timers.Del(timer); + Timers.SetModified(); + timer = NULL; + } } cRecordControl::~cRecordControl() @@ -2928,7 +2934,7 @@ bool cRecordControls::Start(cTimer *Timer, bool Pause) for (int i = 0; i < MAXRECORDCONTROLS; i++) { if (!RecordControls[i]) { RecordControls[i] = new cRecordControl(device, Timer, Pause); - return true; + return RecordControls[i]->Process(time(NULL)); } } } diff --git a/menuitems.c b/menuitems.c index dea2029..9b86db4 100644 --- a/menuitems.c +++ b/menuitems.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * 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" @@ -554,6 +554,7 @@ cMenuEditDayItem::cMenuEditDayItem(const char *Name, int *Value) :cMenuEditIntItem(Name, Value, -INT_MAX, 31) { d = -1; + md = 0; if (*value < 0) { int n = 0; while (days[n]) { @@ -621,12 +622,14 @@ eOSState cMenuEditDayItem::ProcessKey(eKeys Key) eOSState result = cMenuEditIntItem::ProcessKey(Key); if (result == osContinue && Key == k0) { if (d >= 0) { - *value = cTimer::GetMDay(time(NULL)); + *value = md ? md : cTimer::GetMDay(time(NULL)); + md = 0; d = -1; Set(); } else if (*value == 0 || *value == v) { - d = cTimer::GetWDay(time(NULL)); + md = v; + d = cTimer::GetWDayFromMDay(v); *value = days[d]; Set(); } diff --git a/menuitems.h b/menuitems.h index 5a2912c..2890401 100644 --- a/menuitems.h +++ b/menuitems.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * 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 @@ -119,9 +119,11 @@ public: }; class cMenuEditDayItem : public cMenuEditIntItem { -protected: +private: static int days[]; int d; + int md; +protected: virtual void Set(void); public: cMenuEditDayItem(const char *Name, int *Value); @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * 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" @@ -88,6 +88,7 @@ void cControl::Attach(void) void cControl::Shutdown(void) { - delete control; + cControl *c = control; // avoids recursions control = NULL; + delete c; } @@ -8,7 +8,7 @@ * the Linux DVB driver's 'tuxplayer' example and were rewritten to suit * 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" @@ -451,7 +451,7 @@ int cRemux::ScanVideoPacket(const uchar *Data, int Count, int Offset, uchar &Pic if (Length >= 8) { int i = Offset + 8; // the minimum length of the video packet header 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) { switch (Data[i + 3]) { case SC_PICTURE: PictureType = (Data[i + 5] >> 3) & 0x07; @@ -18,7 +18,7 @@ # See the main source file 'vdr.c' for copyright information and # 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" VDRPRG="./vdr" @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * 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" @@ -233,12 +233,15 @@ void *cThread::StartThread(cThread *Thread) bool cThread::Start(void) { + Lock(); if (!childTid) { parentTid = pthread_self(); - pthread_create(&childTid, NULL, (void *(*) (void *))&StartThread, (void *)this); - pthread_detach(childTid); // auto-reap - pthread_setschedparam(childTid, SCHED_RR, 0); + pthread_t Tid; + pthread_create(&Tid, NULL, (void *(*) (void *))&StartThread, (void *)this); + pthread_detach(Tid); // auto-reap + pthread_setschedparam(Tid, SCHED_RR, 0); } + Unlock(); 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); } + Lock(); if (childTid) { pthread_cancel(childTid); childTid = 0; } + Unlock(); } } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * 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" @@ -269,6 +269,18 @@ int cTimer::GetWDay(time_t t) 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 { return IsSingleEvent() ? GetMDay(t) == day : (day & (1 << GetWDay(t))) != 0; @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * 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 @@ -66,6 +66,7 @@ public: bool IsSingleEvent(void) const; static int GetMDay(time_t t); static int GetWDay(time_t t); + static int GetWDayFromMDay(int MDay); bool DayMatches(time_t t) const; static time_t IncDay(time_t t, int Days); static time_t SetTime(time_t t, int SecondsFromMidnight); @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * 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" @@ -532,12 +532,13 @@ bool cPoller::Add(int FileHandle, bool Out) { if (FileHandle >= 0) { 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; } if (numFileHandles < MaxPollFiles) { pfd[numFileHandles].fd = FileHandle; pfd[numFileHandles].events = Out ? POLLOUT : POLLIN; + pfd[numFileHandles].revents = 0; numFileHandles++; return true; } |