summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <kls (at) cadsoft (dot) de>2004-05-23 18:00:00 +0200
committerKlaus Schmidinger <kls (at) cadsoft (dot) de>2004-05-23 18:00:00 +0200
commit3c349510b5060ec05a684425b6b2e5b70d67f65c (patch)
treee2f3de32d241ae3dc62e72b0e7c5b810ed96253b
parentc80a53ff6ea22aa14d1f9772b310b77ea0da7c42 (diff)
downloadvdr-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--CONTRIBUTORS23
-rw-r--r--HISTORY33
-rw-r--r--PLUGINS.html35
-rw-r--r--channels.conf10
-rw-r--r--config.h8
-rw-r--r--device.h3
-rw-r--r--dvbdevice.c14
-rw-r--r--dvbspu.c9
-rw-r--r--epg.c9
-rw-r--r--i18n.c22
-rw-r--r--menu.c41
-rw-r--r--menu.h13
-rw-r--r--nit.c3
-rw-r--r--osd.c4
-rw-r--r--pat.c8
-rw-r--r--plugin.c4
-rw-r--r--skinclassic.c12
-rw-r--r--skins.h4
-rw-r--r--skinsttng.c4
-rw-r--r--themes.c4
-rw-r--r--tools.c8
-rw-r--r--tools.h3
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'
diff --git a/HISTORY b/HISTORY
index 7ea36ca..43cfe9b 100644
--- a/HISTORY
+++ b/HISTORY
@@ -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 &copy; 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>&nbsp;</td><td width=100%>
+<!--X1.2.6--><table width=100%><tr><td bgcolor=#0000AA>&nbsp;</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>&nbsp;</td><td width=100%>
+<!--X1.3.0--><table width=100%><tr><td bgcolor=#00AA00>&nbsp;</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>&nbsp;</td><td width=100%>
+<!--X1.3.7--><table width=100%><tr><td bgcolor=#AA0000>&nbsp;</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>&nbsp;</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>&nbsp;</td><td width=100%>
+<!--X1.3.0--><table width=100%><tr><td bgcolor=#00AA00>&nbsp;</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>&nbsp;</td><td width=100%>
+<!--X1.3.7--><table width=100%><tr><td bgcolor=#AA0000>&nbsp;</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>&nbsp;</td><td width=100%>
+<!--X1.3.0--><table width=100%><tr><td bgcolor=#00AA00>&nbsp;</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>&nbsp;</td><td width=100%>
+<!--X1.3.7--><table width=100%><tr><td bgcolor=#AA0000>&nbsp;</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>&nbsp;</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>&nbsp;</td><td width=100%>
+<!--X1.2.6--><table width=100%><tr><td bgcolor=#0000AA>&nbsp;</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>&nbsp;</td><td width=100%>
+<!--X1.3.0--><table width=100%><tr><td bgcolor=#00AA00>&nbsp;</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>&nbsp;</td><td width=100%>
+<!--X1.3.7--><table width=100%><tr><td bgcolor=#AA0000>&nbsp;</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
diff --git a/config.h b/config.h
index b9845a4..18f3aea 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.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) {
diff --git a/device.h b/device.h
index a725e4d..6f0f70a 100644
--- a/device.h
+++ b/device.h
@@ -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);
diff --git a/dvbspu.c b/dvbspu.c
index a7af8ee..184e686 100644
--- a/dvbspu.c
+++ b/dvbspu.c
@@ -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;
}
diff --git a/epg.c b/epg.c
index 28d8c1d..2768db2 100644
--- a/epg.c
+++ b/epg.c
@@ -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;
}
diff --git a/i18n.c b/i18n.c
index a1b73d4..dd74446 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.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
diff --git a/menu.c b/menu.c
index 968a873..889b82b 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.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)
diff --git a/menu.h b/menu.h
index d52f641..150f88d 100644
--- a/menu.h
+++ b/menu.h
@@ -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;
diff --git a/nit.c b/nit.c
index 92c02f1..cf3b674 100644
--- a/nit.c
+++ b/nit.c
@@ -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;
diff --git a/osd.c b/osd.c
index 9466862..077cd9c 100644
--- a/osd.c
+++ b/osd.c
@@ -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;
diff --git a/pat.c b/pat.c
index b9fc0e6..260f67d 100644
--- a/pat.c
+++ b/pat.c
@@ -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()) {
diff --git a/plugin.c b/plugin.c
index a0d2701..7f211b3 100644
--- a/plugin.c
+++ b/plugin.c
@@ -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;
diff --git a/skins.h b/skins.h
index 412810f..03c8a4a 100644
--- a/skins.h
+++ b/skins.h
@@ -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;
diff --git a/themes.c b/themes.c
index 0232822..1b6adf9 100644
--- a/themes.c
+++ b/themes.c
@@ -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;
}
diff --git a/tools.c b/tools.c
index fc8cb29..42193b2 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.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];
diff --git a/tools.h b/tools.h
index 5af8ffa..2132d00 100644
--- a/tools.h
+++ b/tools.h
@@ -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 {