On 09/16/2013 11:14 AM, Marco van de Voort wrote:
If you mean integrate with your own eventloop, then yes, make sure that your idle event in your eventloop calls checksyncrhonize
OK, so "checksynchronize()" is the correct name of the RTL-provided function that pulls the event queue. (Sorry that the correct name escaped from my silly brain.) AFAIU this supposedly is not platform-dependent, but simply pulls the queue and calls the event handlers as sub-functions of checksynchronize(). (I need to check the sources ASAP...)
Did I understand you correctly that there is a "notifying" procedure, that is called by the Event queuing mechanism each time an event is pushed onto the queue ? This procedure then would potentially be called from Worker threads and thus here, we need use the OS to schedule the (later to be done) queue poll by the main thread via checksynchronize(). Could you tell me the name of that procedure, so that I can find it in the sources and do a testing project using it ?
Obviously the LCL needs to use both procedures to merge the RTL's event queue with the queue it handles the GUI events in.
Obviously a non-LCL based user code can implement it's own OS-depending mechanism to schedule a call to checksynchronize() triggered by the said "notifying" procedure.
The "hope" I expressed in the recent mail was, that the RTL might allow for enabling the described OS-depending Thread to MainThread scheduling mechanism, so that any user code does not need to implement it new with each project (but just set an enable flag or something similar). This should be possible as the RTL does know which OS it is built for and the maintainers do have the necessary expertize to do it in the optimum way.
Thanks, -Michael _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal