summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <kls (at) cadsoft (dot) de>2004-11-21 18:00:00 +0100
committerKlaus Schmidinger <kls (at) cadsoft (dot) de>2004-11-21 18:00:00 +0100
commit630ba21dc198e3fbf8c15c59f7ea852f7174c476 (patch)
treee22596d33f241fb414204c962c004c605a838a1b
parent23ed5a5ed3824b01cbf66699ff0b34f72ddb9826 (diff)
downloadvdr-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--CONTRIBUTORS20
-rw-r--r--HISTORY21
-rw-r--r--Makefile8
-rw-r--r--channels.conf15
-rw-r--r--config.h6
-rw-r--r--dvbdevice.c4
-rw-r--r--dvbosd.c15
-rw-r--r--fontosd-iso8859-2.c112
-rw-r--r--i18n.c8
-rw-r--r--menu.c10
-rw-r--r--menuitems.c9
-rw-r--r--menuitems.h6
-rw-r--r--player.c5
-rw-r--r--remux.c4
-rwxr-xr-xrunvdr2
-rw-r--r--thread.c13
-rw-r--r--timers.c14
-rw-r--r--timers.h3
-rw-r--r--tools.c5
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
diff --git a/HISTORY b/HISTORY
index 07534fb..e7a5cfc 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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).
diff --git a/Makefile b/Makefile
index d0a0533..1327681 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/config.h b/config.h
index 955eb9f..212f878 100644
--- a/config.h
+++ b/config.h
@@ -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;
}
diff --git a/dvbosd.c b/dvbosd.c
index 973298d..fbf6f61 100644
--- a/dvbosd.c
+++ b/dvbosd.c
@@ -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,
diff --git a/i18n.c b/i18n.c
index 7575604..8121d2b 100644
--- a/i18n.c
+++ b/i18n.c
@@ -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",
},
diff --git a/menu.c b/menu.c
index f5c3c61..f482ad1 100644
--- a/menu.c
+++ b/menu.c
@@ -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);
diff --git a/player.c b/player.c
index c08e423..2b306c0 100644
--- a/player.c
+++ b/player.c
@@ -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;
}
diff --git a/remux.c b/remux.c
index e096f9c..b9c04af 100644
--- a/remux.c
+++ b/remux.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;
diff --git a/runvdr b/runvdr
index 883e16b..76fd5f0 100755
--- a/runvdr
+++ b/runvdr
@@ -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"
diff --git a/thread.c b/thread.c
index 080be0e..7045e5a 100644
--- a/thread.c
+++ b/thread.c
@@ -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();
}
}
diff --git a/timers.c b/timers.c
index 501396e..62f59d8 100644
--- a/timers.c
+++ b/timers.c
@@ -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;
diff --git a/timers.h b/timers.h
index bdf1b0d..eceb078 100644
--- a/timers.h
+++ b/timers.h
@@ -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);
diff --git a/tools.c b/tools.c
index ecb57c3..41d0c72 100644
--- a/tools.c
+++ b/tools.c
@@ -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;
}