[Interest] [Qt4.8] UI events coming through despite QEventLoop::ExcludeUserInputEvents

Andreas Pakulat apaku at gmx.de
Mon Nov 10 15:42:31 CET 2014


Hi,

On Mon, Nov 10, 2014 at 2:23 PM, René J.V. <rjvbertin at gmail.com> wrote:

> On Monday November 10 2014 13:57:46 Andreas Pakulat wrote:
> Hi
>
> > Without Qt sources thats impossible to say for sure, but it also receives
> > flags and it calls another function which again has no 'gui' in its name,
> > which then calls into glib.
>
> Who ("It") or what other function do you mean?


QGuiEventDispatcherGlib calls QEventDispatcherGlib, which calls into a glib
function, which ultimately calls poll. The two Q*Dispatcher* functions both
receive a 'flags' parameter which sounds deceivingly like the flags from
QEventLoop::exec/processEvents. So it may be perfectly correct to run
through QGuiEventDispatcherGlib::processEvents as long as that one properly
handles the 'NoUserInput' flag. One would need to look into the Qt sources
to figure out what exactly these classes/functions do or try disabling the
glib event loop. But just the backtrace and the missing parameters (due to
insufficient debug symbols) do not lead me to believe this is any kind of
user-input event processing. Its just some kind of event processing and it
apparently asks glib for checking if there are events or something like
that.


> > Also the above does not look like a crash, its just a backtrace taken at
> a
> > point where glib polls some filedescriptor (which one is not visible and
>
> No, not a crash. Before I couldn't have gotten at this point without
> crashing. This backtrace was obtained with KMail sitting idle waiting for
> something instead of exiting as requested (which is why we're under
> KMKernel::cleanup).
> The point is not whether there is crashing or not, but whether there are
> UI events coming through that should have been ignored.


I don't see any evidence in the backtrace, but since you don't have debug
symbols for glib and parts of Qt thats not surprising. You'll need to step
through that code and see wether any of the events that
QEventLoop::processEvents feeds into the event queue are actually userinput
events or not.

Andreas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20141110/bb423bb4/attachment.html>


More information about the Interest mailing list