Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[vdr] OSD "ERROR: attempt to open OSD while it is already open!"
Hi,
When using femon to change channel to a encrypted one, with no CA
available, VDR tries to show the "Channel unavailable" message, while
the OSD is still tied to femon... crash...
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 30703)]
0x080cfd40 in cSkinSTTNGDisplayMessage::cSkinSTTNGDisplayMessage ()
(gdb) bt
#0 0x080cfd40 in cSkinSTTNGDisplayMessage::cSkinSTTNGDisplayMessage ()
#1 0x080d02a2 in cSkinSTTNG::DisplayMessage ()
#2 0x080c9c96 in cSkins::Message ()
#3 0x080883dd in cDevice::SwitchChannel ()
#4 0x0807e281 in cChannels::SwitchTo ()
#5 0x408aff40 in cFemonOsd::ProcessKey () from
/usr/lib/vdr/plugins/libvdr-femon.so.1.3.12
#6 0x080ddd76 in main ()
(gdb)
I traces it back to
cSkinSTTNGDisplayMessage::cSkinSTTNGDisplayMessage(void) in "skinsttng.c" :
854 osd = cOsdProvider::NewOsd(Setup.OSDLeft, Setup.OSDTop +
Setup.OSDHeight - y1);
855 tArea Areas[] = { { x0, y0, x7 - 1, y1 - 1, 2 } };
856 osd->SetAreas(Areas, sizeof(Areas) / sizeof(tArea));
Since cOsdProvider::NewOsd() can return NULL, osd->anything shouldn't be
called without testing.
I simply cannot decide how to handle the case, since we are in the
constructor cSkinSTTNGDisplayMessage::cSkinSTTNGDisplayMessage and many
methods after that will try to use the osd property, and crash... The
cSkinSTTNGDisplayMessage should simply abort it's construction, but I
don't know how to write it in C++...
--
NH
Home |
Main Index |
Thread Index