On Tuesday 13 January 2015 16:28:02 Thiago Macieira wrote: [...] > sendEvent is used by QCoreApplicationPrivate::sendPostedEvents, which in > turn is the core of event dispatching in Qt (all event dispatchers' > processEvents call it). > > As you can see from the code above, event delivery is stopped when > QCoreApplication::self is null. This means any event delivery attempted > prior to the QCoreApplication creation or after its destruction silently > fails. This includes the deleteLater() event, as well as timer events and > QSocketNotifier's event. In other words, almost everything stops. > > Do we need still need that behaviour?
Maybe not. Maybe we could decouple the event processing from QCoreApplication. Maybe in the long term we might even not require a QCoreApplication at all? (Just run QThread::current()->exec() or QEventLoop().exec() instead of app.exec()) But the application may override QCoreApplication::notify. The programmer might also set a global eventFiler. This is the main behaviour that you would change, that some event might escape notify or the filters (if it the event is send to early). Is it OK that early (or late) event bypass the filters? > Finally, note what happens if there's a thread trying to deliver events > *while* QCoreApplication is being shut down: notifyInternal() is probably > dereferencing a dangling pointer. Good point. But one might argue that thread should be finished before the QCoreApplication is destroyed. -- Olivier Woboq - Qt services and support - http://woboq.com - http://code.woboq.org _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
