diff options
author | Klaus Schmidinger <Klaus (dot) Schmidinger (at) tvdr (dot) de> | 2012-07-14 15:28:00 +0200 |
---|---|---|
committer | Dieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de> | 2012-07-15 20:49:35 +0200 |
commit | 046b506748196e9e2da7472a4ff76ff593e67b76 (patch) | |
tree | d0fa028b363317c7b49402e8beff2d0913216869 /PLUGINS/src/dvbhddevice/libhdffcmd | |
parent | 5500959f4f73c21cef8910b3815b4ee3fa1327dd (diff) | |
download | vdr-patches-046b506748196e9e2da7472a4ff76ff593e67b76.tar.gz vdr-patches-046b506748196e9e2da7472a4ff76ff593e67b76.tar.bz2 |
Version 1.7.29
Original announce message:
VDR developer version 1.7.29 is now available at
ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.29.tar.bz2
A 'diff' against the previous version is available at
ftp://ftp.tvdr.de/vdr/Developer/vdr-1.7.28-1.7.29.diff
MD5 checksums:
a3f0ae42ba456aa1865c9ed065a64d80 vdr-1.7.29.tar.bz2
39db6b495210c293726126fbcba3e631 vdr-1.7.28-1.7.29.diff
WARNING:
========
This is a developer version. Even though I use it in my productive
environment. I strongly recommend that you only use it under controlled
conditions and for testing and debugging.
The default skin "LCARS" displays the signal strengths and qualities of
all devices in its main menu. For devices that have an stb0899 frontend chip
(like the TT-budget S2-3200) retrieving this information from the driver is
rather slow, which results in a sluggish response to user input in the main
menu. To speed this up you may want to apply the patches from
ftp://ftp.tvdr.de/vdr/Developer/Driver-Patches
to the LinuxDVB driver source.
From the HISTORY file:
- Added a missing template specification to the c'tor of cSortedTimers (thanks to Udo
Richter).
- Fixed the background color of the Transfer Mode indicator bitmap in the LCARS skin.
- The LCARS skin now only displays devices that can actually receive channels, leaving
out, for instance, pure replay devices (suggested by Reinhard Nissl).
- Now scaling down the Transfer Mode indicator bitmap in the LCARS skin in case it
doesn't fit with the selected font size (reported by Reinhard Nissl).
- Fixed making LCARS the default skin.
- Adjusted the default values for OSD and font sizes to better fit HDTV.
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed the call to ChannelString() in cSkinLCARSDisplayChannel::SetChannel() (thanks
to Rolf Ahrenberg).
- Removed DeleteEvent() from the EPG handler interface (turned out not to be useful)
and replaced it with HandledExternally() (thanks to Jörg Wendel).
- Added SetComponents() to the EPG handler interface (thanks to Dirk Heiser).
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Changed the button colors in the LCARS skin to better fit with the rest of the theme.
- Removed the gap from the main menu buttons in the LCARS skin.
- Fixed some copy&paste errors in PLUGINS.html (thanks to Winfried Köhler).
- The LCARS skin's main menu now only displays timers that are actually activated.
- Within the "Recordings" menu, pressing the '0' key now toggles sorting between
"by time" and "by name". The selected sort mode is stored separately for each
folder (provided you have write access to that folder).
If a folder is newly created by a repeating timer, the sort mode for that
folder is initially set to "by time".
- Fixed several spelling errors (thanks to Ville Skyttä).
- Fixed handling recording with more than two bonded devices.
- Fixed the type of MBperMinute in cVideoDiskUsage::HasChanged() (thanks to Andreas
Mair).
- Setting the "broken link" or "TEI" flags when cutting recordings is now suppressed
if the editing point merges two seamlessly fitting parts of the same stream (thanks
to Torsten Lang).
- Fixed displaying messages in the LCARS skin.
- Fixed checking for a visible live programme in case a menu or the channel display
is currently open.
- Changed some of the colors in the LCARS skin (you may need to delete the file
lcars-default.theme from your themes directory to see these changes).
- The new setup option "Miscellaneous/Show channel names with source" can be used to
turn on adding the source character to channel names whenever they are displayed
(suggested by Ludi Kaleni).
Diffstat (limited to 'PLUGINS/src/dvbhddevice/libhdffcmd')
4 files changed, 75 insertions, 12 deletions
diff --git a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_defs.h b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_defs.h index f68da66..322c256 100644 --- a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_defs.h +++ b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_defs.h @@ -103,6 +103,7 @@ typedef enum HdffMessageId_t HDFF_MSG_OSD_DRAW_TEXT, HDFF_MSG_OSD_DRAW_WIDE_TEXT, HDFF_MSG_OSD_DRAW_BITMAP, + HDFF_MSG_OSD_DRAW_UTF8_TEXT, HDFF_MSG_HDMI_ENABLE_OUTPUT = 0, HDFF_MSG_HDMI_SET_VIDEO_MODE, diff --git a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_generic.c b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_generic.c index f72a7d3..797abe8 100644 --- a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_generic.c +++ b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_generic.c @@ -21,6 +21,7 @@ * *********************************************************************/ +#include <errno.h> #include <stdint.h> #include <string.h> #include <sys/ioctl.h> @@ -38,8 +39,12 @@ int HdffCmdGetFirmwareVersion(int OsdDevice, uint32_t * Version, char * String, osd_raw_cmd_t osd_cmd; int err; + if (Version == NULL) + return -EINVAL; + *Version = 0; - String[0] = 0; + if (String) + String[0] = 0; BitBuffer_Init(&cmdBuf, cmdData, sizeof(cmdData)); memset(&osd_cmd, 0, sizeof(osd_raw_cmd_t)); @@ -54,11 +59,14 @@ int HdffCmdGetFirmwareVersion(int OsdDevice, uint32_t * Version, char * String, { if (osd_cmd.result_len > 0) { - uint8_t textLength = resultData[9]; - if (textLength >= MaxLength) - textLength = MaxLength - 1; - memcpy(String, &resultData[10], textLength); - String[textLength] = 0; + if (String) + { + uint8_t textLength = resultData[9]; + if (textLength >= MaxLength) + textLength = MaxLength - 1; + memcpy(String, &resultData[10], textLength); + String[textLength] = 0; + } *Version = (resultData[6] << 16) | (resultData[7] << 8) | resultData[8]; @@ -76,8 +84,12 @@ int HdffCmdGetInterfaceVersion(int OsdDevice, uint32_t * Version, char * String, osd_raw_cmd_t osd_cmd; int err; + if (Version == NULL) + return -EINVAL; + *Version = 0; - String[0] = 0; + if (String) + String[0] = 0; BitBuffer_Init(&cmdBuf, cmdData, sizeof(cmdData)); memset(&osd_cmd, 0, sizeof(osd_raw_cmd_t)); @@ -92,11 +104,14 @@ int HdffCmdGetInterfaceVersion(int OsdDevice, uint32_t * Version, char * String, { if (osd_cmd.result_len > 0) { - uint8_t textLength = resultData[9]; - if (textLength >= MaxLength) - textLength = MaxLength - 1; - memcpy(String, &resultData[10], textLength); - String[textLength] = 0; + if (String) + { + uint8_t textLength = resultData[9]; + if (textLength >= MaxLength) + textLength = MaxLength - 1; + memcpy(String, &resultData[10], textLength); + String[textLength] = 0; + } *Version = (resultData[6] << 16) | (resultData[7] << 8) | resultData[8]; @@ -114,6 +129,9 @@ int HdffCmdGetCopyrights(int OsdDevice, uint8_t Index, char * String, osd_raw_cmd_t osd_cmd; int err; + if (String == NULL) + return -EINVAL; + String[0] = 0; BitBuffer_Init(&cmdBuf, cmdData, sizeof(cmdData)); diff --git a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_osd.c b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_osd.c index dfe2759..9367415 100644 --- a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_osd.c +++ b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_osd.c @@ -57,6 +57,8 @@ int HdffCmdOsdConfigure(int OsdDevice, const HdffOsdConfig_t * Config) { BitBuffer_SetBits(&cmdBuf, 1, 0); } + BitBuffer_SetBits(&cmdBuf, 6, 0); // reserved + BitBuffer_SetBits(&cmdBuf, 16, Config->FontDpi); osd_cmd.cmd_len = HdffCmdSetLength(&cmdBuf); return ioctl(OsdDevice, OSD_RAW_CMD, &osd_cmd); } @@ -581,6 +583,43 @@ int HdffCmdOsdDrawText(int OsdDevice, uint32_t Display, uint32_t Font, return ioctl(OsdDevice, OSD_RAW_CMD, &osd_cmd); } +int HdffCmdOsdDrawUtf8Text(int OsdDevice, uint32_t Display, uint32_t Font, + uint16_t X, uint16_t Y, const char * Text, + uint32_t Color) +{ + uint8_t cmdData[1060]; + BitBuffer_t cmdBuf; + osd_raw_cmd_t osd_cmd; + int i; + int length; + + length = 0; + while (Text[length]) + { + length++; + } + if (length > 980) + length = 980; + + BitBuffer_Init(&cmdBuf, cmdData, sizeof(cmdData)); + memset(&osd_cmd, 0, sizeof(osd_raw_cmd_t)); + osd_cmd.cmd_data = cmdData; + HdffCmdBuildHeader(&cmdBuf, HDFF_MSG_TYPE_COMMAND, HDFF_MSG_GROUP_OSD, + HDFF_MSG_OSD_DRAW_UTF8_TEXT); + BitBuffer_SetBits(&cmdBuf, 32, Display); + BitBuffer_SetBits(&cmdBuf, 32, Font); + BitBuffer_SetBits(&cmdBuf, 16, X); + BitBuffer_SetBits(&cmdBuf, 16, Y); + BitBuffer_SetBits(&cmdBuf, 32, Color); + BitBuffer_SetBits(&cmdBuf, 16, length); + for (i = 0; i < length; i++) + { + BitBuffer_SetBits(&cmdBuf, 8, Text[i]); + } + osd_cmd.cmd_len = HdffCmdSetLength(&cmdBuf); + return ioctl(OsdDevice, OSD_RAW_CMD, &osd_cmd); +} + int HdffCmdOsdDrawWideText(int OsdDevice, uint32_t Display, uint32_t Font, uint16_t X, uint16_t Y, const uint16_t * Text, uint32_t Color) diff --git a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_osd.h b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_osd.h index 5c13559..48851ef 100644 --- a/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_osd.h +++ b/PLUGINS/src/dvbhddevice/libhdffcmd/hdffcmd_osd.h @@ -40,6 +40,7 @@ typedef struct HdffOsdConfig_t { int FontAntialiasing; int FontKerning; + uint16_t FontDpi; } HdffOsdConfig_t; typedef enum HdffColorType_t @@ -148,6 +149,10 @@ int HdffCmdOsdDrawText(int OsdDevice, uint32_t Display, uint32_t Font, uint16_t X, uint16_t Y, const char * Text, uint32_t Color); +int HdffCmdOsdDrawUtf8Text(int OsdDevice, uint32_t Display, uint32_t Font, + uint16_t X, uint16_t Y, const char * Text, + uint32_t Color); + int HdffCmdOsdDrawWideText(int OsdDevice, uint32_t Display, uint32_t Font, uint16_t X, uint16_t Y, const uint16_t * Text, uint32_t Color); |