diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2004-05-23 18:00:00 +0200 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2004-05-23 18:00:00 +0200 |
commit | 3c349510b5060ec05a684425b6b2e5b70d67f65c (patch) | |
tree | e2f3de32d241ae3dc62e72b0e7c5b810ed96253b | |
parent | c80a53ff6ea22aa14d1f9772b310b77ea0da7c42 (diff) | |
download | vdr-patch-lnbsharing-3c349510b5060ec05a684425b6b2e5b70d67f65c.tar.gz vdr-patch-lnbsharing-3c349510b5060ec05a684425b6b2e5b70d67f65c.tar.bz2 |
Version 1.3.8vdr-1.3.8
- Fixed a crash when switching the skin and having selected a non-default theme
that is not available for the newly selected skin (thanks to Sascha Volkenandt
for reporting this one).
- Fixed some issues with gcc 3.4 (thanks to Prakash K. Cheemplavam and Marcel
Wiesweg).
- Added a hint to PLUGINS.html about how to name a plugin that implements a skin.
- Completed the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Single shot timers and events now show the day of week (adopted with some changes
from the "elchi" patch, orginally introduced by Oskar Signell). Plugins that use
cEvent::GetDateString() should note that this function now returns a longer
string, including the day of week. The new function const char *WeekDayName(time_t t)
can be called with a time_t value to get the day of week for that time.
- When processing XPM data, the color name "None" is now mapped to #00000000, which
is "fully transparent" (suggested by Sascha Volkenandt).
- Fixed the OSD alignment in the SPU decoder (thanks to Miko Wohlgemuth for reporting
this one and helping to test the fix).
- Fixed freezing picture when a recording starts on a system that always uses
'Transfer Mode' (thanks to Michal Dobrzynski for reporting this one).
- Fixed a memory leak in NIT processing (thanks to Marcel Wiesweg).
- Added a few missing initializations (thanks to Marcel Wiesweg).
- Moved the declaration of cMenuText to VDR/menu.h to make it available to plugins.
It now also has a SetText() function that can be used to dynamically set the text
in an already existing cMenuText (both suggested by Stefan Huelswitt).
- Added play mode pmVideoOnly (thanks to Marcel Wiesweg).
- Added a missing cStatus::MsgOsdClear() to cDisplayChannel::~cDisplayChannel()
(thanks to Oliver Endriss).
- No longer displaying unused color buttons in the "Classic VDR" skin (thanks to
Oliver Endriss for reporting this one).
- Added some missing cStatus::MsgOsdTextItem() calls (thanks to Oliver Endriss for
reporting this one).
-rw-r--r-- | CONTRIBUTORS | 23 | ||||
-rw-r--r-- | HISTORY | 33 | ||||
-rw-r--r-- | PLUGINS.html | 35 | ||||
-rw-r--r-- | channels.conf | 10 | ||||
-rw-r--r-- | config.h | 8 | ||||
-rw-r--r-- | device.h | 3 | ||||
-rw-r--r-- | dvbdevice.c | 14 | ||||
-rw-r--r-- | dvbspu.c | 9 | ||||
-rw-r--r-- | epg.c | 9 | ||||
-rw-r--r-- | i18n.c | 22 | ||||
-rw-r--r-- | menu.c | 41 | ||||
-rw-r--r-- | menu.h | 13 | ||||
-rw-r--r-- | nit.c | 3 | ||||
-rw-r--r-- | osd.c | 4 | ||||
-rw-r--r-- | pat.c | 8 | ||||
-rw-r--r-- | plugin.c | 4 | ||||
-rw-r--r-- | skinclassic.c | 12 | ||||
-rw-r--r-- | skins.h | 4 | ||||
-rw-r--r-- | skinsttng.c | 4 | ||||
-rw-r--r-- | themes.c | 4 | ||||
-rw-r--r-- | tools.c | 8 | ||||
-rw-r--r-- | tools.h | 3 |
22 files changed, 198 insertions, 76 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 7036bfd..48e7831 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -183,6 +183,8 @@ Stefan Huelswitt <huels@iname.com> for changing thread handling to make it work with NPTL ("Native Posix Thread Library") for creating mutexes with PTHREAD_MUTEX_ERRORCHECK_NP, which made the 'lockingTid' stuff obsolete + for suggesting to move the declaration of cMenuText to VDR/menu.h to make it + available to plugins, and to add a SetText() function Ulrich Röder <roeder@efr-net.de> for pointing out that there are channels that have a symbol rate higher than @@ -518,6 +520,9 @@ Oliver Endriss <o.endriss@gmx.de> for suggesting to change the default "Lifetime" to 99 for pointing out that the LNB power needs to be explicitly turned on at startup, because newer drivers don't do this any more + for adding a missing cStatus::MsgOsdClear() to cDisplayChannel::~cDisplayChannel() + for reporting that the "Classic VDR" skin wrongly displayed unused color buttons + for reporting some missing cStatus::MsgOsdTextItem() calls Reinhard Walter Buchner <rw.buchner@freenet.de> for adding some satellites to 'sources.conf' @@ -670,6 +675,10 @@ Marcel Wiesweg <marcel.wiesweg@gmx.de> for fixing testing for matching section filters in case they are turned off for adding 'libsi' include files to the 'include' directory, so that plugins can use them + for his help in fixing some issues with gcc 3.4 + for fixing a memory leak in NIT processing + for adding a few missing initializations + for adding play mode pmVideoOnly Torsten Herz <torsten.herz@web.de> for fixing a possible deadlock when using the "Blue" button in the "Schedules" menu @@ -695,6 +704,9 @@ Sascha Volkenandt <sascha@akv-soft.de> return from their Receive() function if the buffer runs full for reporting a crash in case there is no DVB hardware present for his support in debugging the the "Unknown picture type error" + for reporting a crash when switching the skin and having selected a non-default + theme that is not available for the newly selected skin + for suggesting to map the color name "None" to #00000000 when processing XPM data Malcolm Caldwell <malcolm.caldwell@ntu.edu.au> for modifying LOF handling to allow for C-band reception @@ -860,6 +872,7 @@ Christoph Hermanns <christoph.hermanns@gmx.de> Oskar Signell <oskar@signell.net> for pointing out a problem with setting an editing mark while in "Pause" mode, where replay was not immediately positioned to the marked frame + for making single shot timers and events show the day of week Dirk Essl <de@floydworld.de> for reporting a wrong URL to the 'Doxygen' tool in INSTALL @@ -972,3 +985,13 @@ John Kennedy <rkennedy@ix.netcom.com> Drazen Dupor <drazen.dupor@dupor.com> for translating OSD texts to the Croatian language + +Prakash K. Cheemplavam <PrakashKC@gmx.de> + for fixing some issues with gcc 3.4 + +Miko Wohlgemuth <weak@chello.at> + for reporting a problem with the OSD alignment in the SPU decoder + +Michal Dobrzynski <michal_dobrzynski@mac.com> + for reporting a freezing picture when a recording starts on a system that always + uses 'Transfer Mode' @@ -2804,3 +2804,36 @@ Video Disk Recorder Revision History actual source (sat, cable etc.) into account. Please go into "Setup/EPG" and set the "Set system time" and "Use time from transponder" parameters accordingly (this is necessary even if you have already set them before!). + +2004-05-23: Version 1.3.8 + +- Fixed a crash when switching the skin and having selected a non-default theme + that is not available for the newly selected skin (thanks to Sascha Volkenandt + for reporting this one). +- Fixed some issues with gcc 3.4 (thanks to Prakash K. Cheemplavam and Marcel + Wiesweg). +- Added a hint to PLUGINS.html about how to name a plugin that implements a skin. +- Completed the Finnish OSD texts (thanks to Rolf Ahrenberg). +- Single shot timers and events now show the day of week (adopted with some changes + from the "elchi" patch, orginally introduced by Oskar Signell). Plugins that use + cEvent::GetDateString() should note that this function now returns a longer + string, including the day of week. The new function const char *WeekDayName(time_t t) + can be called with a time_t value to get the day of week for that time. +- When processing XPM data, the color name "None" is no mapped to #00000000, which + is "fully transparent" (suggested by Sascha Volkenandt). +- Fixed the OSD alignment in the SPU decoder (thanks to Miko Wohlgemuth for reporting + this one and helping to test the fix). +- Fixed freezing picture when a recording starts on a system that always uses + 'Transfer Mode' (thanks to Michal Dobrzynski for reporting this one). +- Fixed a memory leak in NIT processing (thanks to Marcel Wiesweg). +- Added a few missing initializations (thanks to Marcel Wiesweg). +- Moved the declaration of cMenuText to VDR/menu.h to make it available to plugins. + It now also has a SetText() function that can be used to dynamically set the text + in an already existing cMenuText (both suggested by Stefan Huelswitt). +- Added play mode pmVideoOnly (thanks to Marcel Wiesweg). +- Added a missing cStatus::MsgOsdClear() to cDisplayChannel::~cDisplayChannel() + (thanks to Oliver Endriss). +- No longer displaying unused color buttons in the "Classic VDR" skin (thanks to + Oliver Endriss for reporting this one). +- Added some missing cStatus::MsgOsdTextItem() calls (thanks to Oliver Endriss for + reporting this one). diff --git a/PLUGINS.html b/PLUGINS.html index a2cfe9b..cfd28d1 100644 --- a/PLUGINS.html +++ b/PLUGINS.html @@ -14,15 +14,18 @@ Copyright © 2004 Klaus Schmidinger<br> <a href="http://www.cadsoft.de/vdr">www.cadsoft.de/vdr</a> </center> <p> -<!--X1.2.6--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%> +<!--X1.2.6--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%> Important modifications introduced in version 1.2.6 are marked like this. <!--X1.2.6--></td></tr></table> -<!--X1.3.0--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%> +<!--X1.3.0--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%> Important modifications introduced in version 1.3.0 are marked like this. <!--X1.3.0--></td></tr></table> -<!--X1.3.7--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%> +<!--X1.3.7--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%> Important modifications introduced in version 1.3.7 are marked like this. <!--X1.3.7--></td></tr></table> +<!--X1.3.8--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%> +Important modifications introduced in version 1.3.8 are marked like this. +<!--X1.3.8--></td></tr></table> <p> VDR provides an easy to use plugin interface that allows additional functionality to be added to the program by implementing a dynamically loadable library file. @@ -70,11 +73,11 @@ structures and allows it to hook itself into specific areas to perform special a <li><a href="#Status monitor">Status monitor</a> <li><a href="#Players">Players</a> <li><a href="#Receivers">Receivers</a> -<!--X1.3.0--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%> +<!--X1.3.0--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%> <li><a href="#Filters">Filters</a> <!--X1.3.0--></td></tr></table> <li><a href="#The On Screen Display">The On Screen Display</a> -<!--X1.3.7--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%> +<!--X1.3.7--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%> <li><a href="#Skins">Skins</a> <li><a href="#Themes">Themes</a> <!--X1.3.7--></td></tr></table> @@ -1214,7 +1217,7 @@ Mode</i>). If the <tt>cReceiver</tt> isn't needed any more, it may simply be <i>deleted</i> and will automatically detach itself from the <tt>cDevice</tt>. -<!--X1.3.0--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%> +<!--X1.3.0--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%> <a name="Filters"><hr><h2>Filters</h2> <center><i><b>A Fistful of Datas</b></i></center><p> @@ -1260,7 +1263,7 @@ and will automatically detach itself from the <tt>cDevice</tt>. See VDR/eit.c or VDR/pat.c to learn how to process filter data. <!--X1.3.0--></td></tr></table> -<!--X1.3.7--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%> +<!--X1.3.7--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%> <a name="The On Screen Display"><hr><h2>The On Screen Display</h2> <center><i><b>Window to the world</b></i></center><p> @@ -1371,6 +1374,18 @@ new cMySkin; in the <a href="#Getting started"><tt>Start()</tt></a> function of your plugin. Do not delete this object, it will be automatically deleted when the program ends. +<p> +<!--X1.3.8--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%> +In order to be able to easily identify plugins that implement a skin it is recommended +that the name of such a plugin should be + +<p><table><tr><td bgcolor=#F0F0F0><pre> +skinxyz +</pre></td></tr></table><p> + +where <tt>xyz</tt> is the actual name of the skin. + +<!--X1.3.8--></td></tr></table> <a name="Themes"><hr><h2>Themes</h2> @@ -1512,7 +1527,7 @@ The functions to implement replaying capabilites are virtual bool HasDecoder(void) const; virtual bool CanReplay(void) const; virtual bool SetPlayMode(ePlayMode PlayMode); -<!--X1.2.6--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%> +<!--X1.2.6--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%> virtual int64_t GetSTC(void); <!--X1.2.6--></td></tr></table> virtual void TrickSpeed(int Speed); @@ -1534,7 +1549,7 @@ virtual void SetVideoFormat(bool VideoFormat16_9); virtual void SetVolumeDevice(int Volume); </pre></td></tr></table><p> -<!--X1.3.0--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%> +<!--X1.3.0--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%> <p> <b>Section Filtering</b> <p> @@ -1564,7 +1579,7 @@ handle section data. <p> <b>On Screen Display</b> <p> -<!--X1.3.7--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%> +<!--X1.3.7--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%> If your device provides On Screen Display (OSD) capabilities (which every device that is supposed to be used as a primary device should do), it shall implement an "OSD provider" class, derived from <tt>cOsdProvider</tt>, which, when its <tt>CreateOsd()</tt> diff --git a/channels.conf b/channels.conf index d1d205b..c803336 100644 --- a/channels.conf +++ b/channels.conf @@ -47,20 +47,20 @@ rbb Berlin:12109:hC34:S19.2E:27500:601:602=deu:604:0:28206:1:1073:0 START,PREMIERE START:11797:hC34:S19.2E:27500:255:256=deu:32:1702,1801,1722:8:133:2:0 PREM 1,PREMIERE 1:11797:hC34:S19.2E:27500:511:512=deu;515=deu:32:1801,1702,1722:10:133:2:0 PREM 2,PREMIERE 2:11797:hC34:S19.2E:27500:1791:1792=deu;1795=deu:32:1702,1722,1801:11:133:2:0 -PREM 3,PREMIERE 3:11797:hC34:S19.2E:27500:2303:2304=deu:32:1722,1801,1702:43:133:2:0 +PREM 3,PREMIERE 3:11797:hC34:S19.2E:27500:2303:2304=deu,2305=deu:32:1722,1801,1702:43:133:2:0 PREM 4,PREMIERE 4:11797:hC34:S19.2E:27500:767:768=deu,769=deu:32:1801,1722,1702:9:133:2:0 -PREM 5,PREMIERE 5:11797:hC34:S19.2E:27500:1279:1280=deu:32:1722,1702,1801:29:133:2:0 +PREM 5,PREMIERE 5:11797:hC34:S19.2E:27500:1279:1280=deu,1281=deu:32:1722,1702,1801:29:133:2:0 PREM 6,PREMIERE 6:11797:hC34:S19.2E:27500:1535:1536=deu:32:1702,1801,1722:41:133:2:0 PREM 7,PREMIERE 7:11797:hC34:S19.2E:27500:1023:1024=deu:32:1801,1722,1702:20:133:2:0 -DISNEY,DISNEY CHANNEL:11758:hC34:S19.2E:27500:2559:2560=deu:0:1702,1722,1801:34:133:17:0 +DISNEY,DISNEY CHANNEL:11758:hC34:S19.2E:27500:2559:2560=deu:0:1722,1801,1702:34:133:17:0 :Premiere Direkt DIREKT,PREMIERE DIREKT:12031:hC34:S19.2E:27500:2815:2816=deu,2817=deu;2819=deu:0:0:18:133:4:0 :PW Erotic B-UHSE,BEATE-UHSE.TV:12070:hC34:S19.2E:27500:1023:1024=deu:32:1702,1801,1722:21:133:1:0 EROTIK,PREMIERE EROTIK:12031:hC34:S19.2E:27500:1279:0:0:1722,1801,1702:513:133:4:0 :Sportsworld -SPORT 1,PREMIERE SPORT 1:11719:hC34:S19.2E:27500:255:256=deu,257=deu:0:1702,1722,1801:17:133:3:0 -SPORT 2,PREMIERE SPORT 2:12031:hC34:S19.2E:27500:3839:3840=deu,3841=deu:0:1702,1722,1801:27:133:4:0 +Formel 1:11719:hC34:S19.2E:27500:255:256=deu,257=deu:32:1702,1722,1801:17:133:3:0 +SPORT 2,PREMIERE SPORT 2:12031:hC34:S19.2E:27500:3839:3840=deu,3841=deu:32:1702,1722,1801:27:133:4:0 :Beta Digital N24:12480:vC34:S19.2E:27500:2047:2048:36:0:47:133:33:0 Liberty TV.com:12610:vC56:S19.2E:22000:941:943=deu:0:0:12199:1:1112:0 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.h 1.193 2004/05/16 12:41:43 kls Exp $ + * $Id: config.h 1.195 2004/05/22 11:29:52 kls Exp $ */ #ifndef __CONFIG_H @@ -20,8 +20,8 @@ #include "i18n.h" #include "tools.h" -#define VDRVERSION "1.3.7" -#define VDRVERSNUM 10307 // Version * 10000 + Major * 100 + Minor +#define VDRVERSION "1.3.8" +#define VDRVERSNUM 10308 // Version * 10000 + Major * 100 + Minor #define MAXPRIORITY 99 #define MAXLIFETIME 99 @@ -140,7 +140,7 @@ public: bool Save(void) { bool result = true; - T *l = (T *)First(); + T *l = (T *)this->First(); cSafeFile f(fileName); if (f.Open()) { while (l) { @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: device.h 1.42 2004/04/17 10:15:25 kls Exp $ + * $Id: device.h 1.43 2004/05/23 10:10:08 kls Exp $ */ #ifndef __DEVICE_H @@ -36,6 +36,7 @@ enum ePlayMode { pmNone, // audio/video from decoder pmAudioVideo, // audio/video from player pmAudioOnly, // audio only from player, video from decoder pmAudioOnlyBlack, // audio only from player, no video (black screen) + pmVideoOnly, // video only from player, audio from decoder pmExtern_THIS_SHOULD_BE_AVOIDED // external player (e.g. MPlayer), release the device // WARNING: USE THIS MODE ONLY AS A LAST RESORT, IF YOU diff --git a/dvbdevice.c b/dvbdevice.c index afeb973..cb143a6 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.84 2004/05/01 13:15:46 kls Exp $ + * $Id: dvbdevice.c 1.86 2004/05/23 10:11:42 kls Exp $ */ #include "dvbdevice.h" @@ -679,7 +679,7 @@ bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Ne if (ProvidesSource(Channel->Source()) && ProvidesCa(Channel)) { result = hasPriority; - if (Priority >= 0 && Receiving()) { + if (Priority >= 0 && Receiving(true)) { if (dvbTuner->IsTunedTo(Channel)) { if (!HasPid(Channel->Vpid())) { #ifdef DO_MULTIPLE_RECORDINGS @@ -873,6 +873,16 @@ bool cDvbDevice::SetPlayMode(ePlayMode PlayMode) CHECK(ioctl(fd_audio, AUDIO_PLAY)); CHECK(ioctl(fd_video, VIDEO_SET_BLANK, false)); break; + case pmVideoOnly: + CHECK(ioctl(fd_video, VIDEO_SET_BLANK, true)); + CHECK(ioctl(fd_video, VIDEO_STOP, true)); + CHECK(ioctl(fd_audio, AUDIO_SELECT_SOURCE, AUDIO_SOURCE_DEMUX)); + CHECK(ioctl(fd_audio, AUDIO_SET_AV_SYNC, false)); + CHECK(ioctl(fd_audio, AUDIO_PLAY)); + CHECK(ioctl(fd_video, VIDEO_CLEAR_BUFFER)); + CHECK(ioctl(fd_video, VIDEO_SELECT_SOURCE, VIDEO_SOURCE_MEMORY)); + CHECK(ioctl(fd_video, VIDEO_PLAY)); + break; case pmExtern_THIS_SHOULD_BE_AVOIDED: close(fd_video); close(fd_audio); @@ -8,7 +8,7 @@ * * parts of this file are derived from the OMS program. * - * $Id: dvbspu.c 1.6 2004/04/30 13:45:02 kls Exp $ + * $Id: dvbspu.c 1.7 2004/05/22 14:02:32 kls Exp $ */ #include <assert.h> @@ -321,8 +321,13 @@ int cDvbSpuDecoder::ScaleYres(int value) void cDvbSpuDecoder::DrawBmp(sDvbSpuRect & size, cBitmap * bmp) { - tArea Area = { size.x1, size.y1, size.x2, size.y2, 2 }; + int x2 = size.x2; + while ((x2 - size.x1 + 1) & 0x03) + x2++; + tArea Area = { size.x1, size.y1, x2, size.y2, 2 }; osd->SetAreas(&Area, 1); + if (x2 > size.x2) + osd->DrawRectangle(size.x2 + 1, size.y1, x2, size.y2, clrTransparent); osd->DrawBitmap(size.x1, size.y1, *bmp); delete bmp; } @@ -7,7 +7,7 @@ * Original version (as used in VDR before 1.3.0) written by * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * - * $Id: epg.c 1.18 2004/03/13 15:01:05 kls Exp $ + * $Id: epg.c 1.19 2004/05/22 12:37:07 kls Exp $ */ #include "epg.h" @@ -115,9 +115,12 @@ bool cEvent::IsRunning(bool OrAboutToStart) const const char *cEvent::GetDateString(void) const { - static char buf[25]; + static char buf[32]; struct tm tm_r; - strftime(buf, sizeof(buf), "%d.%m.%Y", localtime_r(&startTime, &tm_r)); + tm *tm = localtime_r(&startTime, &tm_r); + char *p = stpcpy(buf, WeekDayName(tm->tm_wday)); + *p++ = ' '; + strftime(p, sizeof(buf) - (p - buf), "%d.%m.%Y", tm); return buf; } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: i18n.c 1.155 2004/05/16 11:53:45 kls Exp $ + * $Id: i18n.c 1.156 2004/05/22 11:46:35 kls Exp $ * * Translations provided by: * @@ -2319,7 +2319,7 @@ const tI18nPhrase Phrases[] = { "",// TODO "",// TODO "",// TODO - "",// TODO + "Ulkoasu", "",// TODO "",// TODO "",// TODO @@ -2338,7 +2338,7 @@ const tI18nPhrase Phrases[] = { "",// TODO "",// TODO "",// TODO - "",// TODO + "Teema", "",// TODO "",// TODO "",// TODO @@ -2357,7 +2357,7 @@ const tI18nPhrase Phrases[] = { "",// TODO "",// TODO "",// TODO - "",// TODO + "Vaakakeskitys", "",// TODO "",// TODO "",// TODO @@ -2376,7 +2376,7 @@ const tI18nPhrase Phrases[] = { "",// TODO "",// TODO "",// TODO - "",// TODO + "Pystykeskitys", "",// TODO "",// TODO "",// TODO @@ -2452,7 +2452,7 @@ const tI18nPhrase Phrases[] = { "",// TODO "",// TODO "",// TODO - "",// TODO + "Käytä pieniä kirjasimia", "",// TODO "",// TODO "",// TODO @@ -2471,7 +2471,7 @@ const tI18nPhrase Phrases[] = { "",// TODO "",// TODO "",// TODO - "",// TODO + "ei koskaan", "",// TODO "",// TODO "",// TODO @@ -2490,7 +2490,7 @@ const tI18nPhrase Phrases[] = { "",// TODO "",// TODO "",// TODO - "",// TODO + "ulkoasun mukaan", "",// TODO "",// TODO "",// TODO @@ -2509,7 +2509,7 @@ const tI18nPhrase Phrases[] = { "",// TODO "",// TODO "",// TODO - "",// TODO + "aina", "",// TODO "",// TODO "",// TODO @@ -4604,7 +4604,7 @@ const tI18nPhrase Phrases[] = { "",// TODO "",// TODO "",// TODO - "",// TODO + "Klassinen VDR", "",// TODO "",// TODO "",// TODO @@ -4623,7 +4623,7 @@ const tI18nPhrase Phrases[] = { "",// TODO "",// TODO "",// TODO - "",// TODO + "ST:TNG konsoli", "",// TODO "",// TODO "",// TODO @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 1.300 2004/05/16 12:47:22 kls Exp $ + * $Id: menu.c 1.306 2004/05/23 11:21:06 kls Exp $ */ #include "menu.h" @@ -499,25 +499,29 @@ eOSState cMenuChannels::ProcessKey(eKeys Key) // --- cMenuText ------------------------------------------------------------- -class cMenuText : public cOsdMenu { -private: - const char *text; -public: - cMenuText(const char *Title, const char *Text, eDvbFont Font = fontOsd); - virtual void Display(void); - virtual eOSState ProcessKey(eKeys Key); - }; - cMenuText::cMenuText(const char *Title, const char *Text, eDvbFont Font) :cOsdMenu(Title) { - text = Text; + text = NULL; + SetText(Text); +} + +cMenuText::~cMenuText() +{ + free(text); +} + +void cMenuText::SetText(const char *Text) +{ + free(text); + text = strdup(Text); } void cMenuText::Display(void) { cOsdMenu::Display(); DisplayMenu()->SetText(text, true);//XXX define control character in text to choose the font??? + cStatus::MsgOsdTextItem(text); } eOSState cMenuText::ProcessKey(eKeys Key) @@ -532,6 +536,7 @@ eOSState cMenuText::ProcessKey(eKeys Key) case kRight|k_Repeat: case kRight: DisplayMenu()->Scroll(NORMALKEY(Key) == kUp || NORMALKEY(Key) == kLeft, NORMALKEY(Key) == kLeft || NORMALKEY(Key) == kRight); + cStatus::MsgOsdTextItem(NULL, NORMALKEY(Key) == kUp); return osContinue; default: break; } @@ -633,6 +638,7 @@ eOSState cMenuEditTimer::ProcessKey(eKeys Key) } if (addIfConfirmed) Timers.Add(timer); + timer->Matches(); Timers.Save(); isyslog("timer %d %s (%s)", timer->Index() + 1, addIfConfirmed ? "added" : "modified", timer->HasFlags(tfActive) ? "active" : "inactive"); addIfConfirmed = false; @@ -677,9 +683,11 @@ bool cMenuTimerItem::operator< (const cListObject &ListObject) void cMenuTimerItem::Set(void) { char *buffer = NULL; - asprintf(&buffer, "%c\t%d\t%s\t%02d:%02d\t%02d:%02d\t%s", + asprintf(&buffer, "%c\t%d\t%s%s%s\t%02d:%02d\t%02d:%02d\t%s", !(timer->HasFlags(tfActive)) ? ' ' : timer->FirstDay() ? '!' : timer->Recording() ? '#' : '>', timer->Channel()->Number(), + timer->IsSingleEvent() ? WeekDayName(timer->StartTime()) : "", + timer->IsSingleEvent() ? " " : "", timer->PrintDay(timer->Day()), timer->Start() / 100, timer->Start() % 100, @@ -859,6 +867,7 @@ void cMenuEvent::Display(void) { cOsdMenu::Display(); DisplayMenu()->SetEvent(event); + cStatus::MsgOsdTextItem(event->Description()); } eOSState cMenuEvent::ProcessKey(eKeys Key) @@ -873,6 +882,7 @@ eOSState cMenuEvent::ProcessKey(eKeys Key) case kRight|k_Repeat: case kRight: DisplayMenu()->Scroll(NORMALKEY(Key) == kUp || NORMALKEY(Key) == kLeft, NORMALKEY(Key) == kLeft || NORMALKEY(Key) == kRight); + cStatus::MsgOsdTextItem(NULL, NORMALKEY(Key) == kUp); return osContinue; default: break; } @@ -908,7 +918,7 @@ cMenuWhatsOnItem::cMenuWhatsOnItem(const cEvent *Event, cChannel *Channel) char t = Timers.GetMatch(Event, &TimerMatch) ? (TimerMatch == tmFull) ? 'T' : 't' : ' '; char v = event->Vps() && (event->Vps() - event->StartTime()) ? 'V' : ' '; char r = event->IsRunning() ? '*' : ' '; - asprintf(&buffer, "%d\t%.*s\t%.*s\t%c%c%c\t%s", channel->Number(), 6, channel->Name(), 5, event->GetTimeString(), t, v, r, event->Title()); + asprintf(&buffer, "%d\t%.*s\t%s\t%c%c%c\t%s", channel->Number(), 6, channel->Name(), event->GetTimeString(), t, v, r, event->Title()); SetText(buffer, false); } @@ -1026,7 +1036,7 @@ cMenuScheduleItem::cMenuScheduleItem(const cEvent *Event) char t = Timers.GetMatch(Event, &TimerMatch) ? (TimerMatch == tmFull) ? 'T' : 't' : ' '; char v = event->Vps() && (event->Vps() - event->StartTime()) ? 'V' : ' '; char r = event->IsRunning() ? '*' : ' '; - asprintf(&buffer, "%.*s\t%.*s\t%c%c%c\t%s", 5, event->GetDateString(), 5, event->GetTimeString(), t, v, r, event->Title()); + asprintf(&buffer, "%.*s\t%s\t%c%c%c\t%s", 6, event->GetDateString(), event->GetTimeString(), t, v, r, event->Title()); SetText(buffer, false); } @@ -1048,7 +1058,7 @@ public: }; cMenuSchedule::cMenuSchedule(void) -:cOsdMenu("", 6, 6, 4) +:cOsdMenu("", 7, 6, 4) { now = next = false; otherChannel = 0; @@ -2485,6 +2495,7 @@ cDisplayChannel::cDisplayChannel(eKeys FirstKey) cDisplayChannel::~cDisplayChannel() { delete displayChannel; + cStatus::MsgOsdClear(); } void cDisplayChannel::DisplayChannel(void) @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.h 1.61 2004/04/30 13:45:19 kls Exp $ + * $Id: menu.h 1.63 2004/05/23 09:47:26 kls Exp $ */ #ifndef __MENU_H @@ -19,6 +19,17 @@ #include "recording.h" #include "skins.h" +class cMenuText : public cOsdMenu { +private: + char *text; +public: + cMenuText(const char *Title, const char *Text, eDvbFont Font = fontOsd); + virtual ~cMenuText(); + void SetText(const char *Text); + virtual void Display(void); + virtual eOSState ProcessKey(eKeys Key); + }; + class cMenuMain : public cOsdMenu { private: time_t lastActivity; @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: nit.c 1.6 2004/02/13 14:41:36 kls Exp $ + * $Id: nit.c 1.7 2004/05/22 15:46:21 kls Exp $ */ #include "nit.h" @@ -76,6 +76,7 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length break; default: ; } + delete d; } nits[numNits].networkId = nit.getNetworkId(); nits[numNits].hasTransponder = false; @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osd.c 1.46 2004/05/16 09:25:06 kls Exp $ + * $Id: osd.c 1.47 2004/05/22 13:47:39 kls Exp $ */ #include "osd.h" @@ -264,6 +264,8 @@ bool cBitmap::SetXpm(char *Xpm[]) return false; } s = skipspace(s + 1); + if (strcasecmp(s, "none") == 0) + s = "#00000000"; if (*s != '#') { esyslog("ERROR: unknown color code in XPM: '%c'", *s); return false; @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: pat.c 1.8 2004/03/07 16:59:00 kls Exp $ + * $Id: pat.c 1.9 2004/05/23 09:29:04 kls Exp $ */ #include "pat.h" @@ -211,6 +211,7 @@ int cCaDescriptorHandler::AddCaDescriptors(cCaDescriptors *CaDescriptors) int cCaDescriptorHandler::GetCaDescriptors(int Source, int Transponder, int ServiceId, const unsigned short *CaSystemIds, int BufSize, uchar *Data, bool &StreamFlag) { cMutexLock MutexLock(&mutex); + StreamFlag = false; for (cCaDescriptors *ca = First(); ca; ca = Next(ca)) { if (ca->Is(Source, Transponder, ServiceId)) return ca->GetCaDescriptors(CaSystemIds, BufSize, Data, StreamFlag); @@ -326,8 +327,8 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length int Ppid = pmt.getPCRPid(); int Apids[MAXAPIDS] = { 0 }; int Dpids[MAXAPIDS] = { 0 }; - char ALangs[MAXAPIDS][4]; - char DLangs[MAXAPIDS][4]; + char ALangs[MAXAPIDS][4] = { "" }; + char DLangs[MAXAPIDS][4] = { "" }; int Tpid = 0; int NumApids = 0; int NumDpids = 0; @@ -343,7 +344,6 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length { if (NumApids < MAXAPIDS) { Apids[NumApids] = stream.getPid(); - *ALangs[NumApids] = 0; SI::Descriptor *d; for (SI::Loop::Iterator it; (d = stream.streamDescriptors.getNext(it)); ) { switch (d->getDescriptorTag()) { @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: plugin.c 1.10 2003/08/30 14:52:58 kls Exp $ + * $Id: plugin.c 1.11 2004/05/22 11:25:22 kls Exp $ */ #include "plugin.h" @@ -162,7 +162,7 @@ bool cDll::Load(bool Log) const char *error = dlerror(); if (!error) { void *(*creator)(void); - (void *)creator = dlsym(handle, "VDRPluginCreator"); + creator = (void *(*)(void))dlsym(handle, "VDRPluginCreator"); if (!(error = dlerror())) plugin = (cPlugin *)creator(); } diff --git a/skinclassic.c b/skinclassic.c index 2c4b563..3f0de1c 100644 --- a/skinclassic.c +++ b/skinclassic.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skinclassic.c 1.1 2004/05/15 14:51:18 kls Exp $ + * $Id: skinclassic.c 1.3 2004/05/23 10:40:02 kls Exp $ */ #include "skinclassic.h" @@ -231,10 +231,10 @@ void cSkinClassicDisplayMenu::SetButtons(const char *Red, const char *Green, con int t2 = x0 + w / 2; int t3 = x1 - w / 4; int t4 = x1; - osd->DrawText(t0, y4, Red, Theme.Color(clrButtonRedFg), Theme.Color(clrButtonRedBg), font, t1 - t0, 0, taCenter); - osd->DrawText(t1, y4, Green, Theme.Color(clrButtonGreenFg), Theme.Color(clrButtonGreenBg), font, t2 - t1, 0, taCenter); - osd->DrawText(t2, y4, Yellow, Theme.Color(clrButtonYellowFg), Theme.Color(clrButtonYellowBg), font, t3 - t2, 0, taCenter); - osd->DrawText(t3, y4, Blue, Theme.Color(clrButtonBlueFg), Theme.Color(clrButtonBlueBg), font, t4 - t3, 0, taCenter); + osd->DrawText(t0, y4, Red, Theme.Color(clrButtonRedFg), Red ? Theme.Color(clrButtonRedBg) : Theme.Color(clrBackground), font, t1 - t0, 0, taCenter); + osd->DrawText(t1, y4, Green, Theme.Color(clrButtonGreenFg), Green ? Theme.Color(clrButtonGreenBg) : Theme.Color(clrBackground), font, t2 - t1, 0, taCenter); + osd->DrawText(t2, y4, Yellow, Theme.Color(clrButtonYellowFg), Yellow ? Theme.Color(clrButtonYellowBg) : Theme.Color(clrBackground), font, t3 - t2, 0, taCenter); + osd->DrawText(t3, y4, Blue, Theme.Color(clrButtonBlueFg), Blue ? Theme.Color(clrButtonBlueBg) : Theme.Color(clrBackground), font, t4 - t3, 0, taCenter); } void cSkinClassicDisplayMenu::SetMessage(eMessageType Type, const char *Text) @@ -280,7 +280,7 @@ void cSkinClassicDisplayMenu::SetEvent(const cEvent *Event) int y = y2; cTextScroller ts; char t[32]; - snprintf(t, sizeof(t), "%s %s - %s", Event->GetDateString(), Event->GetTimeString(), Event->GetEndTimeString());//TODO dayname, no year + snprintf(t, sizeof(t), "%s %s - %s", Event->GetDateString(), Event->GetTimeString(), Event->GetEndTimeString()); ts.Set(osd, xl, y, x1 - xl, y3 - y, t, font, Theme.Color(clrMenuEventTime), Theme.Color(clrBackground)); if (Event->Vps() && Event->Vps() != Event->StartTime()) { char *buffer; @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skins.h 1.1 2004/05/16 09:40:18 kls Exp $ + * $Id: skins.h 1.2 2004/05/16 20:16:57 kls Exp $ */ #ifndef __SKINS_H @@ -184,7 +184,7 @@ public: ///< indicator, showing the user whether we are currently in normal ///< play mode, fast forward etc. virtual void SetProgress(int Current, int Total) = 0; - ///< This function will be called whenever the position in of the total + ///< This function will be called whenever the position in or the total ///< length of the recording has changed. A cProgressBar shall then be ///< used to display a progress indicator. virtual void SetCurrent(const char *Current) = 0; diff --git a/skinsttng.c b/skinsttng.c index cb44a3e..a268978 100644 --- a/skinsttng.c +++ b/skinsttng.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skinsttng.c 1.1 2004/05/16 09:27:35 kls Exp $ + * $Id: skinsttng.c 1.2 2004/05/22 13:05:07 kls Exp $ */ // Star Trek: The Next Generation® is a registered trademark of Paramount Pictures @@ -515,7 +515,7 @@ void cSkinSTTNGDisplayMenu::SetEvent(const cEvent *Event) int y = y3; cTextScroller ts; char t[32]; - snprintf(t, sizeof(t), "%s %s - %s", Event->GetDateString(), Event->GetTimeString(), Event->GetEndTimeString());//TODO dayname, no year + snprintf(t, sizeof(t), "%s %s - %s", Event->GetDateString(), Event->GetTimeString(), Event->GetEndTimeString()); ts.Set(osd, xl, y, x4 - xl, y4 - y, t, font, Theme.Color(clrMenuEventTime), Theme.Color(clrBackground)); if (Event->Vps() && Event->Vps() != Event->StartTime()) { char *buffer; @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: themes.c 1.1 2004/05/16 09:43:14 kls Exp $ + * $Id: themes.c 1.2 2004/05/22 10:30:06 kls Exp $ */ #include "themes.h" @@ -274,7 +274,7 @@ int cThemes::GetThemeIndex(const char *Description) if (strcmp(descriptions[i], Description) == 0) return i; if (strcmp(descriptions[i], "Default") == 0) - index = 1; + index = i; } return index; } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.c 1.78 2004/01/11 15:42:30 kls Exp $ + * $Id: tools.c 1.79 2004/05/22 12:13:27 kls Exp $ */ #include "tools.h" @@ -495,6 +495,12 @@ const char *WeekDayName(int WeekDay) return "???"; } +const char *WeekDayName(time_t t) +{ + struct tm tm_r; + return WeekDayName(localtime_r(&t, &tm_r)->tm_wday); +} + const char *DayDateTime(time_t t) { static char buffer[32]; @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.h 1.55 2004/01/11 15:42:15 kls Exp $ + * $Id: tools.h 1.56 2004/05/22 12:11:44 kls Exp $ */ #ifndef __TOOLS_H @@ -84,6 +84,7 @@ bool RemoveEmptyDirectories(const char *DirName, bool RemoveThis = false); char *ReadLink(const char *FileName); bool SpinUpDisk(const char *FileName); const char *WeekDayName(int WeekDay); ///< \warning returns a statically allocated string! +const char *WeekDayName(time_t t); ///< \warning returns a statically allocated string! const char *DayDateTime(time_t t = 0); ///< \warning returns a statically allocated string! class cPoller { |