[Lazarus] Even more radical suggestion regarding Event Queues
Henry Vermaak
henry.vermaak at gmail.com
Fri Jan 21 11:55:40 CET 2011
On 21/01/11 09:29, Michael Schnell wrote:
> On 01/20/2011 01:20 PM, Henry Vermaak wrote:
>>
>> No, it's very easy to do. At least gtk and qt has dedicated functions
>> to do just this (g_main_context_wakeup() and QEventLoop::wakeUp()).
>> Lazarus just has to do this after QueueAsyncCall (I do this manually
>> myself for the moment).
> I suppose this is (or should be) done in WakeMainThread that called by
> Synchronize in classes.inc.
>
> But nonetheless my example shows that Synchronize does not work
> correctly (only firing the Event when additionally a GUI Event is handled).
Report a bug with a simple example program, please.
> Moreover I feel that it would be appropriate to implement
> TThread.Synchronize and PostMessage, (plus the yet not existing
> PostThreadMessage and TThread.Queue) on top of
> TApplication.QueuAsyncCall, so that all of them should work, once
> QueuAsyncCall is done.
Why do you think QueueAsyncCall isn't done? As far as I can see, it
just needs to wake up the main thread when a message is queued
(something I do manually for now). This bug is reported in
http://bugs.freepascal.org/view.php?id=13120.
No one that knows lcl message loop internals have really commented on
how this must be solved.
Henry
More information about the Lazarus
mailing list