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