mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Version 1.3.27
- Fixed handling 'page down', which was broken in version 1.3.26 (thanks to Udo Richter). - Modified page scrolling behaviour (based on a suggestion by Patrick Gleichmann). - The new setup option "OSD/Scroll wraps" can be used to activate wrapping around in menu lists (based on a suggestion by Patrick Gleichmann). - Removed the NPTL check at startup, since several users have reported that VDR now runs fine with NPTL. - Fixed handling VPS timers, so that they only record if the event they are assigned to actually has the given VPS time. - Disabled cVideoRepacker in remux.c, because it has caused several problems during recording. If you want to test (and maybe debug) it, activate the line //#define TEST_cVideoRepacker in remux.c. - When drawing a bitmap to the OSD, the existing palette of the target can now be replaced with the new one instead of adding the new entries (thanks to Andreas Regel).
This commit is contained in:
parent
a616d4b859
commit
fef3aa3a7f
@ -1080,6 +1080,7 @@ Andreas Regel <andreas.regel@gmx.de>
|
|||||||
cSkins::Message()
|
cSkins::Message()
|
||||||
for reporting a problem in handling Transfer Mode for radio channels
|
for reporting a problem in handling Transfer Mode for radio channels
|
||||||
for reporting a problem with messages when a cOsdObject uses the raw OSD
|
for reporting a problem with messages when a cOsdObject uses the raw OSD
|
||||||
|
for implementing palette replace mode in the OSD bitmaps
|
||||||
|
|
||||||
Thomas Bergwinkl <Thomas.Bergwinkl@t-online.de>
|
Thomas Bergwinkl <Thomas.Bergwinkl@t-online.de>
|
||||||
for fixing the validity check for channel IDs, because some providers use TIDs
|
for fixing the validity check for channel IDs, because some providers use TIDs
|
||||||
@ -1241,6 +1242,7 @@ Udo Richter <udo_richter@gmx.de>
|
|||||||
for fixing handling lifetime when deciding whether to delete a recording
|
for fixing handling lifetime when deciding whether to delete a recording
|
||||||
for reporting a problem in handling page up/down in menu lists in case there are
|
for reporting a problem in handling page up/down in menu lists in case there are
|
||||||
several non selectable items in a row
|
several non selectable items in a row
|
||||||
|
for fixing handling 'page down' after it was broken in version 1.3.26
|
||||||
|
|
||||||
Sven Kreiensen <svenk@kammer.uni-hannover.de>
|
Sven Kreiensen <svenk@kammer.uni-hannover.de>
|
||||||
for his help in keeping 'channels.conf.terr' up to date
|
for his help in keeping 'channels.conf.terr' up to date
|
||||||
@ -1296,6 +1298,8 @@ Laurence Abbott <laz@club-burniston.co.uk>
|
|||||||
|
|
||||||
Patrick Gleichmann <patrick@feedface.com>
|
Patrick Gleichmann <patrick@feedface.com>
|
||||||
for fixing the default quality value when grabbing a JPEG image
|
for fixing the default quality value when grabbing a JPEG image
|
||||||
|
for suggestiong a modified page scrolling behaviour
|
||||||
|
for suggesting wrapping around in menu lists
|
||||||
|
|
||||||
Achim Tuffentsammer <a.tuffentsammer@web.de>
|
Achim Tuffentsammer <a.tuffentsammer@web.de>
|
||||||
for reporting a crash in case a plugin needs to issue an error message before the
|
for reporting a crash in case a plugin needs to issue an error message before the
|
||||||
|
21
HISTORY
21
HISTORY
@ -3612,3 +3612,24 @@ Video Disk Recorder Revision History
|
|||||||
- Added cOsdMenu::SetCols() to allow adjusting the menu columns.
|
- Added cOsdMenu::SetCols() to allow adjusting the menu columns.
|
||||||
- Modified cEITScanner::Process() so that it works on systems with only budget cards
|
- Modified cEITScanner::Process() so that it works on systems with only budget cards
|
||||||
or a mix of DVB-S, DVB-C or DVB-T cards.
|
or a mix of DVB-S, DVB-C or DVB-T cards.
|
||||||
|
|
||||||
|
2005-06-19: Version 1.3.27
|
||||||
|
|
||||||
|
- Fixed handling 'page down', which was broken in version 1.3.26 (thanks to Udo
|
||||||
|
Richter).
|
||||||
|
- Modified page scrolling behaviour (based on a suggestion by Patrick Gleichmann).
|
||||||
|
- The new setup option "OSD/Scroll wraps" can be used to activate wrapping around
|
||||||
|
in menu lists (based on a suggestion by Patrick Gleichmann).
|
||||||
|
- Removed the NPTL check at startup, since several users have reported that VDR
|
||||||
|
now runs fine with NPTL.
|
||||||
|
- Fixed handling VPS timers, so that they only record if the event they are assigned
|
||||||
|
to actually has the given VPS time.
|
||||||
|
- Disabled cVideoRepacker in remux.c, because it has caused several problems
|
||||||
|
during recording. If you want to test (and maybe debug) it, activate the line
|
||||||
|
|
||||||
|
//#define TEST_cVideoRepacker
|
||||||
|
|
||||||
|
in remux.c.
|
||||||
|
- When drawing a bitmap to the OSD, the existing palette of the target can now be
|
||||||
|
replaced with the new one instead of adding the new entries (thanks to Andreas
|
||||||
|
Regel).
|
||||||
|
9
INSTALL
9
INSTALL
@ -7,14 +7,7 @@ Version 1.3
|
|||||||
IMPORTANT NOTES:
|
IMPORTANT NOTES:
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
VDR currently doesn't work with NPTL ("Native Posix Thread Library").
|
Please make sure your environment is NOT set to use UTF-8 or
|
||||||
Either don't use NPTL, or set the environment variable
|
|
||||||
|
|
||||||
LD_ASSUME_KERNEL=2.4.1
|
|
||||||
|
|
||||||
before running VDR.
|
|
||||||
|
|
||||||
Also, please make sure your environment is NOT set to use UTF-8 or
|
|
||||||
any other multibyte character representation. Check the value of your
|
any other multibyte character representation. Check the value of your
|
||||||
$LANG or $LC_CTYPE environment variable, and if it contains something
|
$LANG or $LC_CTYPE environment variable, and if it contains something
|
||||||
like "de_DE.UTF-8", make sure you set it to something like "de_DE.iso8859-1"
|
like "de_DE.UTF-8", make sure you set it to something like "de_DE.iso8859-1"
|
||||||
|
17
MANUAL
17
MANUAL
@ -495,11 +495,18 @@ Version 1.2
|
|||||||
|
|
||||||
Scroll pages = yes no = when pressing the "Down" ("Up") key while the cursor
|
Scroll pages = yes no = when pressing the "Down" ("Up") key while the cursor
|
||||||
is on the last (first) line of a list page, the
|
is on the last (first) line of a list page, the
|
||||||
list is advanced by a full page and the cursor will
|
list is scrolled down (up) a single line and the cursor will
|
||||||
be at the top (bottom) of that page
|
remain at the bottom (top) of that page
|
||||||
yes = dto., but the cursor remains at the bottom (top) of
|
yes = the list is scrolled down (up) a full page and the cursor
|
||||||
the page (this mode allows for faster scrolling
|
will be at the top (bottom) of that page (this mode allows
|
||||||
through long lists).
|
for faster scrolling through long lists).
|
||||||
|
|
||||||
|
Scroll wraps = no no = when the end (beginning) of a list is reached while
|
||||||
|
moving the cursor through it, the cursor stays at the
|
||||||
|
last (first) line of the list
|
||||||
|
yes = the cursor "wraps around" and moves from the last
|
||||||
|
(first) line of the list directly to the first (last)
|
||||||
|
one.
|
||||||
|
|
||||||
Sort timers = yes Turns sorting the timers in the "Timers" menu on/off.
|
Sort timers = yes Turns sorting the timers in the "Timers" menu on/off.
|
||||||
Timers are sorted by ascending start times, with the
|
Timers are sorted by ascending start times, with the
|
||||||
|
@ -48,7 +48,7 @@ PREMIERE 1,PREM 1;PREMIERE:11797:hC34:S19.2E:27500:511:512=deu,513=deu;515=deu:3
|
|||||||
PREMIERE 2,PREM 2;PREMIERE:11797:hC34:S19.2E:27500:1791:1792=deu,1793=deu;1795=deu:32:1722,1801,1702:11:133:2:0
|
PREMIERE 2,PREM 2;PREMIERE:11797:hC34:S19.2E:27500:1791:1792=deu,1793=deu;1795=deu:32:1722,1801,1702:11:133:2:0
|
||||||
PREMIERE 3,PREM 3;PREMIERE:11797:hC34:S19.2E:27500:2303:2304=deu,2305=deu:32:1722,1801,1702:43:133:2:0
|
PREMIERE 3,PREM 3;PREMIERE:11797:hC34:S19.2E:27500:2303:2304=deu,2305=deu:32:1722,1801,1702:43:133:2:0
|
||||||
PREMIERE 4,PREM 4;PREMIERE:11797:hC34:S19.2E:27500:767:768=deu,769=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:1801,1722,1702:29:133:2:0
|
PREMIERE 5,PREM 5;PREMIERE:11797:hC34:S19.2E:27500:1279:1280=deu,1281=deu:32:1801,1722,1702:29:133:2:0
|
||||||
PREMIERE 6,PREM 6;PREMIERE:11797:hC34:S19.2E:27500:1535:1536=deu:32:1702,1722,1801:41:133:2:0
|
PREMIERE 6,PREM 6;PREMIERE:11797:hC34:S19.2E:27500:1535:1536=deu:32:1702,1722,1801:41:133:2:0
|
||||||
PREMIERE 7,PREM 7;PREMIERE:11797:hC34:S19.2E:27500:1023:1024=deu:32:1722,1702,1801:20:133:2:0
|
PREMIERE 7,PREM 7;PREMIERE:11797:hC34:S19.2E:27500:1023:1024=deu:32:1722,1702,1801:20:133:2:0
|
||||||
DISNEY CHANNEL,DISNEY;PREMIERE:11758:hC34:S19.2E:27500:2559:2560=deu:32:1722,1801,1702:34:133:17:0
|
DISNEY CHANNEL,DISNEY;PREMIERE:11758:hC34:S19.2E:27500:2559:2560=deu:32:1722,1801,1702:34:133:17:0
|
||||||
@ -89,7 +89,7 @@ TELE 5;BetaDigital:12480:vC34:S19.2E:27500:1535:1536=deu:38:0:51:133:33:0
|
|||||||
:@201 Sky
|
:@201 Sky
|
||||||
Sky One;BSkyB:12226:hC23:S28.2E:27500:515+8190:643=eng:579:960,961:4705:2:2027:0
|
Sky One;BSkyB:12226:hC23:S28.2E:27500:515+8190:643=eng:579:960,961:4705:2:2027:0
|
||||||
Sky Mix;BSkyB:12226:hC23:S28.2E:27500:514+8190:642=eng,662=NAR:578:960,961:5104:2:2027:0
|
Sky Mix;BSkyB:12226:hC23:S28.2E:27500:514+8190:642=eng,662=NAR:578:960,961:5104:2:2027:0
|
||||||
ITV2;BSkyB:10906:vC56:S28.2E:22000:2350:2351=eng,2374=UND:2353:960,961:10240:2:2054:0
|
ITV2;BSkyB:10906:vC56:S28.2E:22000:2350:2351=eng:2353:960,961:10240:2:2054:0
|
||||||
Sci-Fi;BSkyB:12148:hC23:S28.2E:27500:512+8190:640=eng:576:960,961:4905:2:2023:0
|
Sci-Fi;BSkyB:12148:hC23:S28.2E:27500:512+8190:640=eng:576:960,961:4905:2:2023:0
|
||||||
Paramount;BSkyB:12187:hC23:S28.2E:27500:2313+2304:2317=eng,2318=NAR:2315:960,961:5904:2:2025:0
|
Paramount;BSkyB:12187:hC23:S28.2E:27500:2313+2304:2317=eng,2318=NAR:2315:960,961:5904:2:2025:0
|
||||||
Discovery;BSkyB:11875:hC23:S28.2E:27500:2304:2306=eng,2307=NAR: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
|
||||||
@ -112,7 +112,7 @@ Animal Plnt+;BSkyB:12070:hC23:S28.2E:27500:2314+2307:2315=eng:0:960,961:50002:2:
|
|||||||
S1T;BSkyB:12285:vC23:S28.2E:27500:513+8190:641=eng,661=NAR:577:960,961:4409:2:2030:0
|
S1T;BSkyB:12285:vC23:S28.2E:27500:513+8190:641=eng,661=NAR:577:960,961:4409:2:2030:0
|
||||||
CNN;BSkyB:12051:vC23:S28.2E:27500:2313:2315=eng:2314:0:7140:2:2018:0
|
CNN;BSkyB:12051:vC23:S28.2E:27500:2313:2315=eng:2314:0:7140:2:2018:0
|
||||||
BBC PARL'MNT:12129:vC23:S28.2E:27500:2304:2306=eng,2307=eng:2305:0:7300:2:2022:0
|
BBC PARL'MNT:12129:vC23:S28.2E:27500:2304:2306=eng,2307=eng:2305:0:7300:2:2022:0
|
||||||
Bethel TV;T-Systems/MTI:11200:vC56:S13.0E:27500:413:414=ita:0:0:4733:318:13400:0
|
Bethel TV;T-Systems/MTI:11200:vC56:S13.0E:27500:413:414:0:0:4733:318:13400:0
|
||||||
Euro1080;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=eng:0:FF:29700:0:0:0
|
Astra HD:12441:vC34:S19.2E:27500:133+80:134=eng:0:FF:29700:0:0:0
|
||||||
eng-WRN-multi;WRN:12597:vC34:S13.0E:27500:0:2132:0:0:8230:318:9400:0
|
eng-WRN-multi;WRN:12597:vC34:S13.0E:27500:0:2132:0:0:8230:318:9400:0
|
||||||
|
6
config.c
6
config.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.c 1.133 2005/02/20 12:52:59 kls Exp $
|
* $Id: config.c 1.134 2005/06/18 10:30:02 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@ -250,6 +250,7 @@ cSetup::cSetup(void)
|
|||||||
PrimaryDVB = 1;
|
PrimaryDVB = 1;
|
||||||
ShowInfoOnChSwitch = 1;
|
ShowInfoOnChSwitch = 1;
|
||||||
MenuScrollPage = 1;
|
MenuScrollPage = 1;
|
||||||
|
MenuScrollWrap = 0;
|
||||||
MarkInstantRecord = 1;
|
MarkInstantRecord = 1;
|
||||||
strcpy(NameInstantRecord, "TITLE EPISODE");
|
strcpy(NameInstantRecord, "TITLE EPISODE");
|
||||||
InstantRecordTime = 180;
|
InstantRecordTime = 180;
|
||||||
@ -407,6 +408,7 @@ bool cSetup::Parse(const char *Name, const char *Value)
|
|||||||
else if (!strcasecmp(Name, "PrimaryDVB")) PrimaryDVB = atoi(Value);
|
else if (!strcasecmp(Name, "PrimaryDVB")) PrimaryDVB = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "ShowInfoOnChSwitch")) ShowInfoOnChSwitch = atoi(Value);
|
else if (!strcasecmp(Name, "ShowInfoOnChSwitch")) ShowInfoOnChSwitch = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "MenuScrollPage")) MenuScrollPage = atoi(Value);
|
else if (!strcasecmp(Name, "MenuScrollPage")) MenuScrollPage = atoi(Value);
|
||||||
|
else if (!strcasecmp(Name, "MenuScrollWrap")) MenuScrollWrap = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "MarkInstantRecord")) MarkInstantRecord = atoi(Value);
|
else if (!strcasecmp(Name, "MarkInstantRecord")) MarkInstantRecord = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "NameInstantRecord")) strn0cpy(NameInstantRecord, Value, MaxFileName);
|
else if (!strcasecmp(Name, "NameInstantRecord")) strn0cpy(NameInstantRecord, Value, MaxFileName);
|
||||||
else if (!strcasecmp(Name, "InstantRecordTime")) InstantRecordTime = atoi(Value);
|
else if (!strcasecmp(Name, "InstantRecordTime")) InstantRecordTime = atoi(Value);
|
||||||
@ -470,7 +472,7 @@ bool cSetup::Save(void)
|
|||||||
Store("OSDTheme", OSDTheme);
|
Store("OSDTheme", OSDTheme);
|
||||||
Store("PrimaryDVB", PrimaryDVB);
|
Store("PrimaryDVB", PrimaryDVB);
|
||||||
Store("ShowInfoOnChSwitch", ShowInfoOnChSwitch);
|
Store("ShowInfoOnChSwitch", ShowInfoOnChSwitch);
|
||||||
Store("MenuScrollPage", MenuScrollPage);
|
Store("MenuScrollWrap", MenuScrollWrap);
|
||||||
Store("MarkInstantRecord", MarkInstantRecord);
|
Store("MarkInstantRecord", MarkInstantRecord);
|
||||||
Store("NameInstantRecord", NameInstantRecord);
|
Store("NameInstantRecord", NameInstantRecord);
|
||||||
Store("InstantRecordTime", InstantRecordTime);
|
Store("InstantRecordTime", InstantRecordTime);
|
||||||
|
7
config.h
7
config.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.h 1.219 2005/06/03 12:39:16 kls Exp $
|
* $Id: config.h 1.221 2005/06/18 10:29:25 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __CONFIG_H
|
#ifndef __CONFIG_H
|
||||||
@ -20,8 +20,8 @@
|
|||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
#define VDRVERSION "1.3.26"
|
#define VDRVERSION "1.3.27"
|
||||||
#define VDRVERSNUM 10326 // Version * 10000 + Major * 100 + Minor
|
#define VDRVERSNUM 10327 // Version * 10000 + Major * 100 + Minor
|
||||||
|
|
||||||
#define MAXPRIORITY 99
|
#define MAXPRIORITY 99
|
||||||
#define MAXLIFETIME 99
|
#define MAXLIFETIME 99
|
||||||
@ -211,6 +211,7 @@ public:
|
|||||||
int PrimaryDVB;
|
int PrimaryDVB;
|
||||||
int ShowInfoOnChSwitch;
|
int ShowInfoOnChSwitch;
|
||||||
int MenuScrollPage;
|
int MenuScrollPage;
|
||||||
|
int MenuScrollWrap;
|
||||||
int MarkInstantRecord;
|
int MarkInstantRecord;
|
||||||
char NameInstantRecord[MaxFileName];
|
char NameInstantRecord[MaxFileName];
|
||||||
int InstantRecordTime;
|
int InstantRecordTime;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbdevice.c 1.130 2005/06/05 13:05:55 kls Exp $
|
* $Id: dvbdevice.c 1.131 2005/06/19 11:00:43 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbdevice.h"
|
#include "dvbdevice.h"
|
||||||
@ -742,7 +742,6 @@ bool cDvbDevice::ProvidesSource(int Source) const
|
|||||||
|| type == cSource::stCable && frontendType == FE_QAM
|
|| type == cSource::stCable && frontendType == FE_QAM
|
||||||
|| type == cSource::stSat && frontendType == FE_QPSK
|
|| type == cSource::stSat && frontendType == FE_QPSK
|
||||||
|| type == cSource::stTerr && frontendType == FE_OFDM;
|
|| type == cSource::stTerr && frontendType == FE_OFDM;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const
|
bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const
|
||||||
|
23
i18n.c
23
i18n.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: i18n.c 1.194 2005/06/05 11:59:09 kls Exp $
|
* $Id: i18n.c 1.195 2005/06/18 10:42:31 kls Exp $
|
||||||
*
|
*
|
||||||
* Translations provided by:
|
* Translations provided by:
|
||||||
*
|
*
|
||||||
@ -2905,6 +2905,27 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Lehekülje kerimine",
|
"Lehekülje kerimine",
|
||||||
"Rul sider",
|
"Rul sider",
|
||||||
},
|
},
|
||||||
|
{ "Setup.OSD$Scroll wraps",
|
||||||
|
"Rundum scrollen",
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
"",// TODO
|
||||||
|
},
|
||||||
{ "Setup.OSD$Sort timers",
|
{ "Setup.OSD$Sort timers",
|
||||||
"Timer sortieren",
|
"Timer sortieren",
|
||||||
"Sortiraj termine",
|
"Sortiraj termine",
|
||||||
|
3
menu.c
3
menu.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menu.c 1.350 2005/06/05 14:11:54 kls Exp $
|
* $Id: menu.c 1.351 2005/06/18 10:31:52 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -1845,6 +1845,7 @@ void cMenuSetupOSD::Set(void)
|
|||||||
Add(new cMenuEditIntItem( tr("Setup.OSD$Channel info time (s)"), &data.ChannelInfoTime, 1, 60));
|
Add(new cMenuEditIntItem( tr("Setup.OSD$Channel info time (s)"), &data.ChannelInfoTime, 1, 60));
|
||||||
Add(new cMenuEditBoolItem(tr("Setup.OSD$Info on channel switch"), &data.ShowInfoOnChSwitch));
|
Add(new cMenuEditBoolItem(tr("Setup.OSD$Info on channel switch"), &data.ShowInfoOnChSwitch));
|
||||||
Add(new cMenuEditBoolItem(tr("Setup.OSD$Scroll pages"), &data.MenuScrollPage));
|
Add(new cMenuEditBoolItem(tr("Setup.OSD$Scroll pages"), &data.MenuScrollPage));
|
||||||
|
Add(new cMenuEditBoolItem(tr("Setup.OSD$Scroll wraps"), &data.MenuScrollWrap));
|
||||||
Add(new cMenuEditBoolItem(tr("Setup.OSD$Sort timers"), &data.SortTimers));
|
Add(new cMenuEditBoolItem(tr("Setup.OSD$Sort timers"), &data.SortTimers));
|
||||||
Add(new cMenuEditBoolItem(tr("Setup.OSD$Recording directories"), &data.RecordingDirs));
|
Add(new cMenuEditBoolItem(tr("Setup.OSD$Recording directories"), &data.RecordingDirs));
|
||||||
SetCurrent(Get(current));
|
SetCurrent(Get(current));
|
||||||
|
36
osd.c
36
osd.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osd.c 1.61 2005/06/11 14:31:36 kls Exp $
|
* $Id: osd.c 1.62 2005/06/19 10:43:04 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "osd.h"
|
#include "osd.h"
|
||||||
@ -86,6 +86,13 @@ void cPalette::Take(const cPalette &Palette, tIndexes *Indexes, tColor ColorFg,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cPalette::Replace(const cPalette &Palette)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < Palette.numColors; i++)
|
||||||
|
SetColor(i, Palette.color[i]);
|
||||||
|
numColors = Palette.numColors;
|
||||||
|
}
|
||||||
|
|
||||||
// --- cBitmap ---------------------------------------------------------------
|
// --- cBitmap ---------------------------------------------------------------
|
||||||
|
|
||||||
cBitmap::cBitmap(int Width, int Height, int Bpp, int X0, int Y0)
|
cBitmap::cBitmap(int Width, int Height, int Bpp, int X0, int Y0)
|
||||||
@ -337,19 +344,28 @@ void cBitmap::DrawPixel(int x, int y, tColor Color)
|
|||||||
SetIndex(x, y, Index(Color));
|
SetIndex(x, y, Index(Color));
|
||||||
}
|
}
|
||||||
|
|
||||||
void cBitmap::DrawBitmap(int x, int y, const cBitmap &Bitmap, tColor ColorFg, tColor ColorBg)
|
void cBitmap::DrawBitmap(int x, int y, const cBitmap &Bitmap, tColor ColorFg, tColor ColorBg, bool ReplacePalette)
|
||||||
{
|
{
|
||||||
if (bitmap && Bitmap.bitmap && Intersects(x, y, x + Bitmap.Width() - 1, y + Bitmap.Height() - 1)) {
|
if (bitmap && Bitmap.bitmap && Intersects(x, y, x + Bitmap.Width() - 1, y + Bitmap.Height() - 1)) {
|
||||||
if (Covers(x, y, x + Bitmap.Width() - 1, y + Bitmap.Height() - 1))
|
if (Covers(x, y, x + Bitmap.Width() - 1, y + Bitmap.Height() - 1))
|
||||||
Reset();
|
Reset();
|
||||||
x -= x0;
|
x -= x0;
|
||||||
y -= y0;
|
y -= y0;
|
||||||
tIndexes Indexes;
|
if (ReplacePalette && Covers(x + x0, y + y0, x + x0 + Bitmap.Width() - 1, y + y0 + Bitmap.Height() - 1)) {
|
||||||
Take(Bitmap, &Indexes, ColorFg, ColorBg);
|
Replace(Bitmap);
|
||||||
for (int ix = 0; ix < Bitmap.width; ix++) {
|
for (int ix = 0; ix < Bitmap.width; ix++) {
|
||||||
for (int iy = 0; iy < Bitmap.height; iy++)
|
for (int iy = 0; iy < Bitmap.height; iy++)
|
||||||
SetIndex(x + ix, y + iy, Indexes[int(Bitmap.bitmap[Bitmap.width * iy + ix])]);
|
SetIndex(x + ix, y + iy, Bitmap.bitmap[Bitmap.width * iy + ix]);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tIndexes Indexes;
|
||||||
|
Take(Bitmap, &Indexes, ColorFg, ColorBg);
|
||||||
|
for (int ix = 0; ix < Bitmap.width; ix++) {
|
||||||
|
for (int iy = 0; iy < Bitmap.height; iy++)
|
||||||
|
SetIndex(x + ix, y + iy, Indexes[int(Bitmap.bitmap[Bitmap.width * iy + ix])]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -665,10 +681,10 @@ void cOsd::DrawPixel(int x, int y, tColor Color)
|
|||||||
bitmaps[i]->DrawPixel(x, y, Color);
|
bitmaps[i]->DrawPixel(x, y, Color);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cOsd::DrawBitmap(int x, int y, const cBitmap &Bitmap, tColor ColorFg, tColor ColorBg)
|
void cOsd::DrawBitmap(int x, int y, const cBitmap &Bitmap, tColor ColorFg, tColor ColorBg, bool ReplacePalette)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < numBitmaps; i++)
|
for (int i = 0; i < numBitmaps; i++)
|
||||||
bitmaps[i]->DrawBitmap(x, y, Bitmap, ColorFg, ColorBg);
|
bitmaps[i]->DrawBitmap(x, y, Bitmap, ColorFg, ColorBg, ReplacePalette);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cOsd::DrawText(int x, int y, const char *s, tColor ColorFg, tColor ColorBg, const cFont *Font, int Width, int Height, int Alignment)
|
void cOsd::DrawText(int x, int y, const char *s, tColor ColorFg, tColor ColorBg, const cFont *Font, int Width, int Height, int Alignment)
|
||||||
|
9
osd.h
9
osd.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osd.h 1.48 2005/05/14 11:15:55 kls Exp $
|
* $Id: osd.h 1.49 2005/06/19 10:35:25 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __OSD_H
|
#ifndef __OSD_H
|
||||||
@ -84,6 +84,9 @@ public:
|
|||||||
///< palette. If either of ColorFg or ColorBg is not zero, the first color
|
///< palette. If either of ColorFg or ColorBg is not zero, the first color
|
||||||
///< in Palette will be taken as ColorBg, and the second color will become
|
///< in Palette will be taken as ColorBg, and the second color will become
|
||||||
///< ColorFg.
|
///< ColorFg.
|
||||||
|
void Replace(const cPalette &Palette);
|
||||||
|
///< Replaces the colors of this palette with the colors from the given
|
||||||
|
///< palette.
|
||||||
};
|
};
|
||||||
|
|
||||||
enum eTextAlignment { taCenter = 0x00,
|
enum eTextAlignment { taCenter = 0x00,
|
||||||
@ -153,7 +156,7 @@ public:
|
|||||||
///< Sets the pixel at the given coordinates to the given Color, which is
|
///< Sets the pixel at the given coordinates to the given Color, which is
|
||||||
///< a full 32 bit ARGB value.
|
///< a full 32 bit ARGB value.
|
||||||
///< If the coordinates are outside the bitmap area, no pixel will be set.
|
///< If the coordinates are outside the bitmap area, no pixel will be set.
|
||||||
void DrawBitmap(int x, int y, const cBitmap &Bitmap, tColor ColorFg = 0, tColor ColorBg = 0);
|
void DrawBitmap(int x, int y, const cBitmap &Bitmap, tColor ColorFg = 0, tColor ColorBg = 0, bool ReplacePalette = false);
|
||||||
///< Sets the pixels in this bitmap with the data from the given
|
///< Sets the pixels in this bitmap with the data from the given
|
||||||
///< Bitmap, putting the upper left corner of the Bitmap at (x, y).
|
///< Bitmap, putting the upper left corner of the Bitmap at (x, y).
|
||||||
///< If ColorFg or ColorBg is given, the first palette entry of the Bitmap
|
///< If ColorFg or ColorBg is given, the first palette entry of the Bitmap
|
||||||
@ -274,7 +277,7 @@ public:
|
|||||||
///< If the OSD area has been divided into separate sub-areas, and the
|
///< If the OSD area has been divided into separate sub-areas, and the
|
||||||
///< given coordinates don't fall into any of these sub-areas, no pixel will
|
///< given coordinates don't fall into any of these sub-areas, no pixel will
|
||||||
///< be set.
|
///< be set.
|
||||||
virtual void DrawBitmap(int x, int y, const cBitmap &Bitmap, tColor ColorFg = 0, tColor ColorBg = 0);
|
virtual void DrawBitmap(int x, int y, const cBitmap &Bitmap, tColor ColorFg = 0, tColor ColorBg = 0, bool ReplacePalette = false);
|
||||||
///< Sets the pixels in the OSD with the data from the given
|
///< Sets the pixels in the OSD with the data from the given
|
||||||
///< Bitmap, putting the upper left corner of the Bitmap at (x, y).
|
///< Bitmap, putting the upper left corner of the Bitmap at (x, y).
|
||||||
///< If ColorFg or ColorBg is given, the first palette entry of the Bitmap
|
///< If ColorFg or ColorBg is given, the first palette entry of the Bitmap
|
||||||
|
96
osdbase.c
96
osdbase.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: osdbase.c 1.17 2005/06/12 10:44:22 kls Exp $
|
* $Id: osdbase.c 1.20 2005/06/18 10:30:51 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "osdbase.h"
|
#include "osdbase.h"
|
||||||
@ -261,54 +261,64 @@ bool cOsdMenu::SelectableItem(int idx)
|
|||||||
|
|
||||||
void cOsdMenu::CursorUp(void)
|
void cOsdMenu::CursorUp(void)
|
||||||
{
|
{
|
||||||
if (current > 0) {
|
int tmpCurrent = current;
|
||||||
int tmpCurrent = current;
|
int lastOnScreen = first + displayMenuItems - 1;
|
||||||
while (--tmpCurrent >= 0 && !SelectableItem(tmpCurrent))
|
int last = Count() - 1;
|
||||||
;
|
while (--tmpCurrent != current) {
|
||||||
if (tmpCurrent < 0)
|
if (tmpCurrent < 0) {
|
||||||
return;
|
if (Setup.MenuScrollWrap)
|
||||||
if (tmpCurrent >= first)
|
tmpCurrent = last;
|
||||||
DisplayCurrent(false);
|
else
|
||||||
current = tmpCurrent;
|
return;
|
||||||
if (current < first) {
|
}
|
||||||
first = first > displayMenuItems - 1 ? first - (displayMenuItems - 1) : 0;
|
if (SelectableItem(tmpCurrent))
|
||||||
if (Setup.MenuScrollPage)
|
break;
|
||||||
current = !SelectableItem(first) ? first + 1 : first;
|
|
||||||
Display();
|
|
||||||
}
|
}
|
||||||
else
|
if (first <= tmpCurrent && tmpCurrent <= lastOnScreen)
|
||||||
DisplayCurrent(true);
|
DisplayCurrent(false);
|
||||||
|
current = tmpCurrent;
|
||||||
|
if (current < first) {
|
||||||
|
first = Setup.MenuScrollPage ? max(0, current - displayMenuItems + 1) : current;
|
||||||
|
Display();
|
||||||
}
|
}
|
||||||
|
else if (current > lastOnScreen) {
|
||||||
|
first = max(0, current - displayMenuItems + 1);
|
||||||
|
Display();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
DisplayCurrent(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cOsdMenu::CursorDown(void)
|
void cOsdMenu::CursorDown(void)
|
||||||
{
|
{
|
||||||
int last = Count() - 1;
|
int tmpCurrent = current;
|
||||||
int lastOnScreen = first + displayMenuItems - 1;
|
int lastOnScreen = first + displayMenuItems - 1;
|
||||||
|
int last = Count() - 1;
|
||||||
if (current < last) {
|
while (++tmpCurrent != current) {
|
||||||
int tmpCurrent = current;
|
if (tmpCurrent > last) {
|
||||||
while (++tmpCurrent <= last && !SelectableItem(tmpCurrent))
|
if (Setup.MenuScrollWrap)
|
||||||
;
|
tmpCurrent = 0;
|
||||||
if (tmpCurrent > last)
|
else
|
||||||
return;
|
return;
|
||||||
if (tmpCurrent <= lastOnScreen)
|
|
||||||
DisplayCurrent(false);
|
|
||||||
current = tmpCurrent;
|
|
||||||
if (current > lastOnScreen) {
|
|
||||||
first += displayMenuItems - 1;
|
|
||||||
lastOnScreen = first + displayMenuItems - 1;
|
|
||||||
if (lastOnScreen > last) {
|
|
||||||
first = last - (displayMenuItems - 1);
|
|
||||||
lastOnScreen = last;
|
|
||||||
}
|
}
|
||||||
if (Setup.MenuScrollPage)
|
if (SelectableItem(tmpCurrent))
|
||||||
current = !SelectableItem(lastOnScreen) ? lastOnScreen - 1 : lastOnScreen;
|
break;
|
||||||
Display();
|
|
||||||
}
|
}
|
||||||
else
|
if (first <= tmpCurrent && tmpCurrent <= lastOnScreen)
|
||||||
DisplayCurrent(true);
|
DisplayCurrent(false);
|
||||||
|
current = tmpCurrent;
|
||||||
|
if (current > lastOnScreen) {
|
||||||
|
first = Setup.MenuScrollPage ? current : max(0, current - displayMenuItems + 1);
|
||||||
|
if (first + displayMenuItems > last)
|
||||||
|
first = max(0, last - displayMenuItems + 1);
|
||||||
|
Display();
|
||||||
}
|
}
|
||||||
|
else if (current < first) {
|
||||||
|
first = current;
|
||||||
|
Display();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
DisplayCurrent(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cOsdMenu::PageUp(void)
|
void cOsdMenu::PageUp(void)
|
||||||
@ -341,6 +351,8 @@ void cOsdMenu::PageUp(void)
|
|||||||
Display();
|
Display();
|
||||||
DisplayCurrent(true);
|
DisplayCurrent(true);
|
||||||
}
|
}
|
||||||
|
else if (Setup.MenuScrollWrap)
|
||||||
|
CursorUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cOsdMenu::PageDown(void)
|
void cOsdMenu::PageDown(void)
|
||||||
@ -350,6 +362,10 @@ void cOsdMenu::PageDown(void)
|
|||||||
current += displayMenuItems;
|
current += displayMenuItems;
|
||||||
first += displayMenuItems;
|
first += displayMenuItems;
|
||||||
int last = Count() - 1;
|
int last = Count() - 1;
|
||||||
|
if (current > last)
|
||||||
|
current = last;
|
||||||
|
if (first + displayMenuItems > last)
|
||||||
|
first = max(0, last - displayMenuItems + 1);
|
||||||
int tmpCurrent = current;
|
int tmpCurrent = current;
|
||||||
while (!SelectableItem(tmpCurrent) && ++tmpCurrent <= last)
|
while (!SelectableItem(tmpCurrent) && ++tmpCurrent <= last)
|
||||||
;
|
;
|
||||||
@ -369,6 +385,8 @@ void cOsdMenu::PageDown(void)
|
|||||||
Display();
|
Display();
|
||||||
DisplayCurrent(true);
|
DisplayCurrent(true);
|
||||||
}
|
}
|
||||||
|
else if (Setup.MenuScrollWrap)
|
||||||
|
CursorDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cOsdMenu::Mark(void)
|
void cOsdMenu::Mark(void)
|
||||||
|
7
remux.c
7
remux.c
@ -11,7 +11,7 @@
|
|||||||
* The cDolbyRepacker code was originally written by Reinhard Nissl <rnissl@gmx.de>,
|
* The cDolbyRepacker code was originally written by Reinhard Nissl <rnissl@gmx.de>,
|
||||||
* and adapted to the VDR coding style by Klaus.Schmidinger@cadsoft.de.
|
* and adapted to the VDR coding style by Klaus.Schmidinger@cadsoft.de.
|
||||||
*
|
*
|
||||||
* $Id: remux.c 1.34 2005/06/04 14:49:25 kls Exp $
|
* $Id: remux.c 1.35 2005/06/19 10:17:00 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "remux.h"
|
#include "remux.h"
|
||||||
@ -1155,7 +1155,12 @@ cRemux::cRemux(int VPid, const int *APids, const int *DPids, const int *SPids, b
|
|||||||
resultBuffer = new cRingBufferLinear(RESULTBUFFERSIZE, IPACKS, false, "Result");
|
resultBuffer = new cRingBufferLinear(RESULTBUFFERSIZE, IPACKS, false, "Result");
|
||||||
resultBuffer->SetTimeouts(0, 100);
|
resultBuffer->SetTimeouts(0, 100);
|
||||||
if (VPid)
|
if (VPid)
|
||||||
|
//#define TEST_cVideoRepacker
|
||||||
|
#ifdef TEST_cVideoRepacker
|
||||||
ts2pes[numTracks++] = new cTS2PES(VPid, resultBuffer, IPACKS, 0x00, 0x00, new cVideoRepacker);
|
ts2pes[numTracks++] = new cTS2PES(VPid, resultBuffer, IPACKS, 0x00, 0x00, new cVideoRepacker);
|
||||||
|
#else
|
||||||
|
ts2pes[numTracks++] = new cTS2PES(VPid, resultBuffer, IPACKS);
|
||||||
|
#endif
|
||||||
if (APids) {
|
if (APids) {
|
||||||
int n = 0;
|
int n = 0;
|
||||||
while (*APids && numTracks < MAXTRACKS && n < MAXAPIDS)
|
while (*APids && numTracks < MAXTRACKS && n < MAXAPIDS)
|
||||||
|
20
timers.c
20
timers.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: timers.c 1.32 2005/06/11 14:19:58 kls Exp $
|
* $Id: timers.c 1.33 2005/06/18 12:49:55 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
@ -363,6 +363,8 @@ bool cTimer::Matches(time_t t, bool Directly) const
|
|||||||
|
|
||||||
if (HasFlags(tfActive)) {
|
if (HasFlags(tfActive)) {
|
||||||
if (HasFlags(tfVps) && !Directly && event && event->Vps() && schedule && schedule->PresentSeenWithin(30)) {
|
if (HasFlags(tfVps) && !Directly && event && event->Vps() && schedule && schedule->PresentSeenWithin(30)) {
|
||||||
|
if (startTime != event->Vps())
|
||||||
|
return false;
|
||||||
startTime = event->StartTime();
|
startTime = event->StartTime();
|
||||||
stopTime = event->EndTime();
|
stopTime = event->EndTime();
|
||||||
return event->IsRunning(true);
|
return event->IsRunning(true);
|
||||||
@ -384,15 +386,17 @@ int cTimer::Matches(const cEvent *Event, int *Overlap) const
|
|||||||
if (HasFlags(tfActive) && channel->GetChannelID() == Event->ChannelID()) {
|
if (HasFlags(tfActive) && channel->GetChannelID() == Event->ChannelID()) {
|
||||||
bool UseVps = HasFlags(tfVps) && Event->Vps();
|
bool UseVps = HasFlags(tfVps) && Event->Vps();
|
||||||
Matches(UseVps ? Event->Vps() : Event->StartTime(), true);
|
Matches(UseVps ? Event->Vps() : Event->StartTime(), true);
|
||||||
int overlap;
|
int overlap = 0;
|
||||||
if (UseVps)
|
if (UseVps)
|
||||||
overlap = (startTime == Event->Vps()) ? FULLMATCH + (Event->IsRunning() ? 200 : 100) : 0;
|
overlap = (startTime == Event->Vps()) ? FULLMATCH + (Event->IsRunning() ? 200 : 100) : 0;
|
||||||
else if (startTime <= Event->StartTime() && Event->EndTime() <= stopTime)
|
if (!overlap) {
|
||||||
overlap = FULLMATCH;
|
if (startTime <= Event->StartTime() && Event->EndTime() <= stopTime)
|
||||||
else if (stopTime <= Event->StartTime() || Event->EndTime() <= startTime)
|
overlap = FULLMATCH;
|
||||||
overlap = 0;
|
else if (stopTime <= Event->StartTime() || Event->EndTime() <= startTime)
|
||||||
else
|
overlap = 0;
|
||||||
overlap = (min(stopTime, Event->EndTime()) - max(startTime, Event->StartTime())) * FULLMATCH / max(Event->Duration(), 1);
|
else
|
||||||
|
overlap = (min(stopTime, Event->EndTime()) - max(startTime, Event->StartTime())) * FULLMATCH / max(Event->Duration(), 1);
|
||||||
|
}
|
||||||
startTime = stopTime = 0;
|
startTime = stopTime = 0;
|
||||||
if (Overlap)
|
if (Overlap)
|
||||||
*Overlap = overlap;
|
*Overlap = overlap;
|
||||||
|
13
vdr.c
13
vdr.c
@ -22,7 +22,7 @@
|
|||||||
*
|
*
|
||||||
* The project's page is at http://www.cadsoft.de/vdr
|
* The project's page is at http://www.cadsoft.de/vdr
|
||||||
*
|
*
|
||||||
* $Id: vdr.c 1.207 2005/05/26 10:45:29 kls Exp $
|
* $Id: vdr.c 1.208 2005/06/18 11:19:07 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -302,17 +302,6 @@ int main(int argc, char *argv[])
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _CS_GNU_LIBPTHREAD_VERSION
|
|
||||||
// Check for NPTL and exit if present - VDR apparently doesn't run well with NPTL:
|
|
||||||
char LibPthreadVersion[128];
|
|
||||||
if (confstr(_CS_GNU_LIBPTHREAD_VERSION, LibPthreadVersion, sizeof(LibPthreadVersion)) > 0) {
|
|
||||||
if (strstr(LibPthreadVersion, "NPTL")) {
|
|
||||||
fprintf(stderr, "vdr: please turn off NPTL by setting 'export LD_ASSUME_KERNEL=2.4.1' before starting VDR\n");
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Check for UTF-8 and exit if present - asprintf() will fail if it encounters 8 bit ASCII codes
|
// Check for UTF-8 and exit if present - asprintf() will fail if it encounters 8 bit ASCII codes
|
||||||
char *LangEnv;
|
char *LangEnv;
|
||||||
if ((LangEnv = getenv("LANG")) != NULL && strcasestr(LangEnv, "utf") ||
|
if ((LangEnv = getenv("LANG")) != NULL && strcasestr(LangEnv, "utf") ||
|
||||||
|
Loading…
x
Reference in New Issue
Block a user