On 08/24/2011 12:24 PM, Marco van de Voort wrote:
Where? The synchronize queue is in sysutils.
The events created by GUI actions and those created by TZThread.Synchronize and those created by PostMessage and aimed to "procedure...message" finally create actions calling the "Dispatch" mechanism. The current implementation obviously is that several parallel event queues are done for this. Obviously the main thread needs to wait until one of those queues changes from empty to not-empty. This "wait for multiple objects" needs to be implemented "somewhere". I understand that this is done in the "WidgetType"/"Interface" code that is compiled depending on the "LCLWidgetType" setting. Unfortunately this code is too complex to allow for quickly searching (and trying to singlestep crashes the debugger)

Anyway each single "WidgetType" code needs at lease to provide a hook for the queue. And thus it might or might not work depending on the Widget Type. This is what I think should be denoted in the Wiki.
Please explain.
QueuAsyncCall is a class function of TApplication and TApplication uses a lot of the WidgetType depending code.

PostMessage with WidgetType Win32 just is an API call and with WigdgetTpe gtk2 performs something internally to the program and seems perfectly workable. With fpGUI it does not work. So it obviously depends on the WidgetType setting.

-Michael

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to