Am 20.08.2011 12:16, schrieb Klaus Schmidinger: > On 19.08.2011 20:48, Udo Richter wrote: >> Sure, however QueueMessage does not wait and does not return an user key >> press. > > That's by design ;-) > A background thread is not supposed to do this!
Osdserver has no other choice. From the main thread, Osdserver could only react once a second, meaning that an average osdserver menu would need 30 seconds to appear. Thus, a completely backgrounded network thread is a must. Osdserver solves this with some complex own locking mechanisms, dirty tricks to force a wakeup of the VDR main thread, and threadsafe shadow copies of non-threadsafe data structures. A global lock would make things a lot easier. >> Osdserver exports all of the message functions, including >> QueueMessage. > > Well, I guess it shouldn't. Would mean, osdserver clients cannot do a simple yes/no query. Not an option. > The kernel developers only recently got rid of this, and they had good > reasons to do so, I guess. I wouldn't want to do that in VDR. You're free to implement a fine-grained locking for all non-threadsafe data structures, like the kernel guys did, but IMHO one big lock is better than none. ;) Anyway, Osdserver is fixed now, and uses a callback from MainThreadHook to do the Skins.Message() call. Cheers, Udo _______________________________________________ vdr mailing list firstname.lastname@example.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr