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()
|
||||
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 implementing palette replace mode in the OSD bitmaps
|
||||
|
||||
Thomas Bergwinkl <Thomas.Bergwinkl@t-online.de>
|
||||
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 reporting a problem in handling page up/down in menu lists in case there are
|
||||
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>
|
||||
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>
|
||||
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>
|
||||
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.
|
||||
- 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.
|
||||
|
||||
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:
|
||||
----------------
|
||||
|
||||
VDR currently doesn't work with NPTL ("Native Posix Thread Library").
|
||||
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
|
||||
Please make sure your environment is NOT set to use UTF-8 or
|
||||
any other multibyte character representation. Check the value of your
|
||||
$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"
|
||||
|
17
MANUAL
17
MANUAL
@ -495,11 +495,18 @@ Version 1.2
|
||||
|
||||
Scroll pages = yes no = when pressing the "Down" ("Up") key while the cursor
|
||||
is on the last (first) line of a list page, the
|
||||
list is advanced by a full page and the cursor will
|
||||
be at the top (bottom) of that page
|
||||
yes = dto., but the cursor remains at the bottom (top) of
|
||||
the page (this mode allows for faster scrolling
|
||||
through long lists).
|
||||
list is scrolled down (up) a single line and the cursor will
|
||||
remain at the bottom (top) of that page
|
||||
yes = the list is scrolled down (up) a full page and the cursor
|
||||
will be at the top (bottom) of that page (this mode allows
|
||||
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.
|
||||
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 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 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 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
|
||||
@ -89,7 +89,7 @@ TELE 5;BetaDigital:12480:vC34:S19.2E:27500:1535:1536=deu:38:0:51:133:33:0
|
||||
:@201 Sky
|
||||
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
|
||||
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
|
||||
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
|
||||
@ -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
|
||||
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
|
||||
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
|
||||
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
|
||||
|
6
config.c
6
config.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* 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"
|
||||
@ -250,6 +250,7 @@ cSetup::cSetup(void)
|
||||
PrimaryDVB = 1;
|
||||
ShowInfoOnChSwitch = 1;
|
||||
MenuScrollPage = 1;
|
||||
MenuScrollWrap = 0;
|
||||
MarkInstantRecord = 1;
|
||||
strcpy(NameInstantRecord, "TITLE EPISODE");
|
||||
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, "ShowInfoOnChSwitch")) ShowInfoOnChSwitch = 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, "NameInstantRecord")) strn0cpy(NameInstantRecord, Value, MaxFileName);
|
||||
else if (!strcasecmp(Name, "InstantRecordTime")) InstantRecordTime = atoi(Value);
|
||||
@ -470,7 +472,7 @@ bool cSetup::Save(void)
|
||||
Store("OSDTheme", OSDTheme);
|
||||
Store("PrimaryDVB", PrimaryDVB);
|
||||
Store("ShowInfoOnChSwitch", ShowInfoOnChSwitch);
|
||||
Store("MenuScrollPage", MenuScrollPage);
|
||||
Store("MenuScrollWrap", MenuScrollWrap);
|
||||
Store("MarkInstantRecord", MarkInstantRecord);
|
||||
Store("NameInstantRecord", NameInstantRecord);
|
||||
Store("InstantRecordTime", InstantRecordTime);
|
||||
|
7
config.h
7
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.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
|
||||
@ -20,8 +20,8 @@
|
||||
#include "i18n.h"
|
||||
#include "tools.h"
|
||||
|
||||
#define VDRVERSION "1.3.26"
|
||||
#define VDRVERSNUM 10326 // Version * 10000 + Major * 100 + Minor
|
||||
#define VDRVERSION "1.3.27"
|
||||
#define VDRVERSNUM 10327 // Version * 10000 + Major * 100 + Minor
|
||||
|
||||
#define MAXPRIORITY 99
|
||||
#define MAXLIFETIME 99
|
||||
@ -211,6 +211,7 @@ public:
|
||||
int PrimaryDVB;
|
||||
int ShowInfoOnChSwitch;
|
||||
int MenuScrollPage;
|
||||
int MenuScrollWrap;
|
||||
int MarkInstantRecord;
|
||||
char NameInstantRecord[MaxFileName];
|
||||
int InstantRecordTime;
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* 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"
|
||||
@ -742,7 +742,6 @@ bool cDvbDevice::ProvidesSource(int Source) const
|
||||
|| type == cSource::stCable && frontendType == FE_QAM
|
||||
|| type == cSource::stSat && frontendType == FE_QPSK
|
||||
|| type == cSource::stTerr && frontendType == FE_OFDM;
|
||||
return true;
|
||||
}
|
||||
|
||||
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
|
||||
* 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:
|
||||
*
|
||||
@ -2905,6 +2905,27 @@ const tI18nPhrase Phrases[] = {
|
||||
"Lehekülje kerimine",
|
||||
"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",
|
||||
"Timer sortieren",
|
||||
"Sortiraj termine",
|
||||
|
3
menu.c
3
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.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"
|
||||
@ -1845,6 +1845,7 @@ void cMenuSetupOSD::Set(void)
|
||||
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$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$Recording directories"), &data.RecordingDirs));
|
||||
SetCurrent(Get(current));
|
||||
|
24
osd.c
24
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.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"
|
||||
@ -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(int Width, int Height, int Bpp, int X0, int Y0)
|
||||
@ -337,13 +344,21 @@ void cBitmap::DrawPixel(int x, int y, tColor 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 (Covers(x, y, x + Bitmap.Width() - 1, y + Bitmap.Height() - 1))
|
||||
Reset();
|
||||
x -= x0;
|
||||
y -= y0;
|
||||
if (ReplacePalette && Covers(x + x0, y + y0, x + x0 + Bitmap.Width() - 1, y + y0 + Bitmap.Height() - 1)) {
|
||||
Replace(Bitmap);
|
||||
for (int ix = 0; ix < Bitmap.width; ix++) {
|
||||
for (int iy = 0; iy < Bitmap.height; iy++)
|
||||
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++) {
|
||||
@ -352,6 +367,7 @@ void cBitmap::DrawBitmap(int x, int y, const cBitmap &Bitmap, tColor ColorFg, tC
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void cBitmap::DrawText(int x, int y, const char *s, tColor ColorFg, tColor ColorBg, const cFont *Font, int Width, int Height, int Alignment)
|
||||
{
|
||||
@ -665,10 +681,10 @@ void cOsd::DrawPixel(int x, int y, tColor 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++)
|
||||
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)
|
||||
|
9
osd.h
9
osd.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* 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
|
||||
@ -84,6 +84,9 @@ public:
|
||||
///< 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
|
||||
///< ColorFg.
|
||||
void Replace(const cPalette &Palette);
|
||||
///< Replaces the colors of this palette with the colors from the given
|
||||
///< palette.
|
||||
};
|
||||
|
||||
enum eTextAlignment { taCenter = 0x00,
|
||||
@ -153,7 +156,7 @@ public:
|
||||
///< Sets the pixel at the given coordinates to the given Color, which is
|
||||
///< a full 32 bit ARGB value.
|
||||
///< 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
|
||||
///< 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
|
||||
@ -274,7 +277,7 @@ public:
|
||||
///< 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
|
||||
///< 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
|
||||
///< 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
|
||||
|
70
osdbase.c
70
osdbase.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* 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"
|
||||
@ -261,55 +261,65 @@ bool cOsdMenu::SelectableItem(int idx)
|
||||
|
||||
void cOsdMenu::CursorUp(void)
|
||||
{
|
||||
if (current > 0) {
|
||||
int tmpCurrent = current;
|
||||
while (--tmpCurrent >= 0 && !SelectableItem(tmpCurrent))
|
||||
;
|
||||
if (tmpCurrent < 0)
|
||||
int lastOnScreen = first + displayMenuItems - 1;
|
||||
int last = Count() - 1;
|
||||
while (--tmpCurrent != current) {
|
||||
if (tmpCurrent < 0) {
|
||||
if (Setup.MenuScrollWrap)
|
||||
tmpCurrent = last;
|
||||
else
|
||||
return;
|
||||
if (tmpCurrent >= first)
|
||||
}
|
||||
if (SelectableItem(tmpCurrent))
|
||||
break;
|
||||
}
|
||||
if (first <= tmpCurrent && tmpCurrent <= lastOnScreen)
|
||||
DisplayCurrent(false);
|
||||
current = tmpCurrent;
|
||||
if (current < first) {
|
||||
first = first > displayMenuItems - 1 ? first - (displayMenuItems - 1) : 0;
|
||||
if (Setup.MenuScrollPage)
|
||||
current = !SelectableItem(first) ? first + 1 : 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)
|
||||
{
|
||||
int last = Count() - 1;
|
||||
int lastOnScreen = first + displayMenuItems - 1;
|
||||
|
||||
if (current < last) {
|
||||
int tmpCurrent = current;
|
||||
while (++tmpCurrent <= last && !SelectableItem(tmpCurrent))
|
||||
;
|
||||
if (tmpCurrent > last)
|
||||
int lastOnScreen = first + displayMenuItems - 1;
|
||||
int last = Count() - 1;
|
||||
while (++tmpCurrent != current) {
|
||||
if (tmpCurrent > last) {
|
||||
if (Setup.MenuScrollWrap)
|
||||
tmpCurrent = 0;
|
||||
else
|
||||
return;
|
||||
if (tmpCurrent <= lastOnScreen)
|
||||
}
|
||||
if (SelectableItem(tmpCurrent))
|
||||
break;
|
||||
}
|
||||
if (first <= tmpCurrent && 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;
|
||||
first = Setup.MenuScrollPage ? current : max(0, current - displayMenuItems + 1);
|
||||
if (first + displayMenuItems > last)
|
||||
first = max(0, last - displayMenuItems + 1);
|
||||
Display();
|
||||
}
|
||||
if (Setup.MenuScrollPage)
|
||||
current = !SelectableItem(lastOnScreen) ? lastOnScreen - 1 : lastOnScreen;
|
||||
else if (current < first) {
|
||||
first = current;
|
||||
Display();
|
||||
}
|
||||
else
|
||||
DisplayCurrent(true);
|
||||
}
|
||||
}
|
||||
|
||||
void cOsdMenu::PageUp(void)
|
||||
{
|
||||
@ -341,6 +351,8 @@ void cOsdMenu::PageUp(void)
|
||||
Display();
|
||||
DisplayCurrent(true);
|
||||
}
|
||||
else if (Setup.MenuScrollWrap)
|
||||
CursorUp();
|
||||
}
|
||||
|
||||
void cOsdMenu::PageDown(void)
|
||||
@ -350,6 +362,10 @@ void cOsdMenu::PageDown(void)
|
||||
current += displayMenuItems;
|
||||
first += displayMenuItems;
|
||||
int last = Count() - 1;
|
||||
if (current > last)
|
||||
current = last;
|
||||
if (first + displayMenuItems > last)
|
||||
first = max(0, last - displayMenuItems + 1);
|
||||
int tmpCurrent = current;
|
||||
while (!SelectableItem(tmpCurrent) && ++tmpCurrent <= last)
|
||||
;
|
||||
@ -369,6 +385,8 @@ void cOsdMenu::PageDown(void)
|
||||
Display();
|
||||
DisplayCurrent(true);
|
||||
}
|
||||
else if (Setup.MenuScrollWrap)
|
||||
CursorDown();
|
||||
}
|
||||
|
||||
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>,
|
||||
* 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"
|
||||
@ -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->SetTimeouts(0, 100);
|
||||
if (VPid)
|
||||
//#define TEST_cVideoRepacker
|
||||
#ifdef TEST_cVideoRepacker
|
||||
ts2pes[numTracks++] = new cTS2PES(VPid, resultBuffer, IPACKS, 0x00, 0x00, new cVideoRepacker);
|
||||
#else
|
||||
ts2pes[numTracks++] = new cTS2PES(VPid, resultBuffer, IPACKS);
|
||||
#endif
|
||||
if (APids) {
|
||||
int n = 0;
|
||||
while (*APids && numTracks < MAXTRACKS && n < MAXAPIDS)
|
||||
|
10
timers.c
10
timers.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: timers.c 1.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"
|
||||
@ -363,6 +363,8 @@ bool cTimer::Matches(time_t t, bool Directly) const
|
||||
|
||||
if (HasFlags(tfActive)) {
|
||||
if (HasFlags(tfVps) && !Directly && event && event->Vps() && schedule && schedule->PresentSeenWithin(30)) {
|
||||
if (startTime != event->Vps())
|
||||
return false;
|
||||
startTime = event->StartTime();
|
||||
stopTime = event->EndTime();
|
||||
return event->IsRunning(true);
|
||||
@ -384,15 +386,17 @@ int cTimer::Matches(const cEvent *Event, int *Overlap) const
|
||||
if (HasFlags(tfActive) && channel->GetChannelID() == Event->ChannelID()) {
|
||||
bool UseVps = HasFlags(tfVps) && Event->Vps();
|
||||
Matches(UseVps ? Event->Vps() : Event->StartTime(), true);
|
||||
int overlap;
|
||||
int overlap = 0;
|
||||
if (UseVps)
|
||||
overlap = (startTime == Event->Vps()) ? FULLMATCH + (Event->IsRunning() ? 200 : 100) : 0;
|
||||
else if (startTime <= Event->StartTime() && Event->EndTime() <= stopTime)
|
||||
if (!overlap) {
|
||||
if (startTime <= Event->StartTime() && Event->EndTime() <= stopTime)
|
||||
overlap = FULLMATCH;
|
||||
else if (stopTime <= Event->StartTime() || Event->EndTime() <= startTime)
|
||||
overlap = 0;
|
||||
else
|
||||
overlap = (min(stopTime, Event->EndTime()) - max(startTime, Event->StartTime())) * FULLMATCH / max(Event->Duration(), 1);
|
||||
}
|
||||
startTime = stopTime = 0;
|
||||
if (Overlap)
|
||||
*Overlap = overlap;
|
||||
|
13
vdr.c
13
vdr.c
@ -22,7 +22,7 @@
|
||||
*
|
||||
* 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>
|
||||
@ -302,17 +302,6 @@ int main(int argc, char *argv[])
|
||||
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
|
||||
char *LangEnv;
|
||||
if ((LangEnv = getenv("LANG")) != NULL && strcasestr(LangEnv, "utf") ||
|
||||
|
Loading…
x
Reference in New Issue
Block a user