[vdr] [PATCH] fix segfault in cSkins::Message
Klaus Schmidinger
Klaus.Schmidinger at cadsoft.de
Mon Aug 1 16:11:21 CEST 2005
Wolfgang Rohdewald wrote:
> On Sonntag 31 Juli 2005 18:29, Klaus Schmidinger wrote:
>
>>>Does vdr have a way to notice if a background thread accesses the
>>>OSD?
>>
>>A background thread should never access the OSD directly.
>
>
> I do understand that. I just think it might be helpful to not
> simply say it is forbidden but to enforce it instead of
> segfaulting.
>
> Considering the enormous amount of plugins there will always be
> some plugin developers trying to do forbidden things and if a
> user tells them "sometimes vdr restarts but I have no idea why"
> it is almost impossible to debug that.
>
> If you take my original two patches you could do
>
> void cSkinClassicDisplayMessage::Flush(void)
> {
> if (osd)
> osd->Flush();
> else
> warn: background thread is not allowed to access osd
> }
You don't _know_ that this is because of a background thread.
Besides, I'd hate to have to check 'osd' all over the place
(and every plugin that implements a skin would have to do the same).
I guess I'll simply put a test into cSkinDisplay::cSkinDisplay()
that aborts in case it gets called from a thread other than the
foreground thread.
> Otherwise I believe I understand what you propose and it seems
> to be a good solution to me.
Ok, so I'll implement it that way.
Klaus
More information about the vdr
mailing list