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