summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY2
-rw-r--r--TODO9
-rw-r--r--dxr3interface_spu_encoder.c1
-rw-r--r--dxr3palettemanager.c6
-rw-r--r--dxr3palettemanager.h1
5 files changed, 13 insertions, 6 deletions
diff --git a/HISTORY b/HISTORY
index ccac0a7..ed65c5b 100644
--- a/HISTORY
+++ b/HISTORY
@@ -278,3 +278,5 @@ NOTE: I havent found time to include all of the languages, will be done in pre2
- improve original OSD scaler for small resolutions (#1014339, Luca Olivetti)
- fix compilation with -fPIC, kudos to ffmpeg (Ville Skyttä)
- eliminate some compiler warnings (Ville Skyttä)
+- fix OSD going pink after returning from the MPlayer plugin
+ (Ville Skyttä, Martin Cap)
diff --git a/TODO b/TODO
index d9d9245..c311532 100644
--- a/TODO
+++ b/TODO
@@ -1,12 +1,6 @@
Known problems, bugs, and workarounds for this driver:
------------------------------------------------------
-* After invoking the "Reset DXR3 hardware" function, or after playing
- something with the MPlayer plugin, OSD goes pink.
- Workaround: none known, need to restart VDR to restore sanity.
- May sometimes be restored back to normal after some operations, but no
- way to reliably reproduce/ find out what "fixes" it has been found.
-
* No sound with the MP3 plugin with VDR >= 1.3.18.
Workaround: compile the MP3 plugin with OSS support, configure it to use
something else than the DXR3 for output (see the --dsp option), and set
@@ -42,6 +36,9 @@ Known problems, bugs, and workarounds for this driver:
* The TVOnscreen plugin's OSD is a mess, positioning errors etc.
Workaround: use TVOnscreen < 0.6.0. 0.5.2 works fine for me (Ville).
+* After invoking the "Reset DXR3 hardware" function, OSD goes pink
+ until it's hidden and shown again.
+
Other TODOs:
------------
diff --git a/dxr3interface_spu_encoder.c b/dxr3interface_spu_encoder.c
index fc01dc7..ab8aa24 100644
--- a/dxr3interface_spu_encoder.c
+++ b/dxr3interface_spu_encoder.c
@@ -449,6 +449,7 @@ int cSPUEncoder::Cmd(OSD_Command cmd, int color, int x0, int y0, int x1, int y1,
// This should be done in cSPUEncoder::cSPUEncoder
+ m_palManager.Clear();
return 0;
break;
diff --git a/dxr3palettemanager.c b/dxr3palettemanager.c
index b93eaeb..058186b 100644
--- a/dxr3palettemanager.c
+++ b/dxr3palettemanager.c
@@ -113,3 +113,9 @@ uint32_t* cDxr3PaletteManager::GetPalette()
return m_pal;
}
+
+// ==================================
+void cDxr3PaletteManager::Clear()
+{
+ memset(m_users, 0, sizeof(int) * MAX_COLORS);
+}
diff --git a/dxr3palettemanager.h b/dxr3palettemanager.h
index 94253b8..432d6a2 100644
--- a/dxr3palettemanager.h
+++ b/dxr3palettemanager.h
@@ -22,6 +22,7 @@ public:
void AddColor(int color);
void RemoveColor(int color);
+ void Clear();
int GetCount();
int operator[](int index);
int GetIndex(int color);