qt6-bb10/tests/auto
Kent Hansen 302e6968f1 statemachine: Make delayed event posting work from secondary thread
postDelayedEvent() and cancelDelayedEvent() are marked as thread-safe
in the documentation. Unfortunately, they didn't actually work when
called from another thread; they just produced some warnings:

QObject::startTimer: timers cannot be started from another thread
QObject::killTimer: timers cannot be stopped from another thread

As the warnings indicate, the issue was that postDelayedEvent()
(cancelDelayedEvent()) unconditionally called QObject::startTimer()
(stopTimer()), i.e. without considering which thread the function
was called from.

If the function is called from a different thread, the actual
starting/stopping of the associated timer is now done from the
correct thread, by asynchronously calling a private slot on the
state machine.

This also means that the raw timer id can no longer be used as the
id of the delayed event, since a valid event id must be returned
before the timer has started. The state machine now manages those
ids itself (using a QFreeList, just like startTimer() and
killTimer() do), and also keeps a mapping from timer id to event
id once the timer has been started. This is inherently more complex
than before, but at least the API should work as advertised/intended
now.

Task-number: QTBUG-17975
Change-Id: I3a866d01dca23174c8841112af50b87141df0943
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
2012-06-06 13:27:32 +02:00
..
cmake Use IF(NOT TARGET ...) before creating imported targets. 2012-05-15 23:03:23 +02:00
compilerwarnings/data Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
concurrent Remove insignification from QtConcurrentFilter test. 2012-04-19 13:26:51 +02:00
corelib statemachine: Make delayed event posting work from secondary thread 2012-06-06 13:27:32 +02:00
dbus Fix unit confusion in ccf3b9e48b2d773999a9a88e249f79380618cde6 2012-05-02 22:49:26 +02:00
gui Remove insignificant_test for tst_qwindow on Mac OS X 2012-06-06 12:53:55 +02:00
guiapplauncher
network Make QIODevice::seek() return false for sequential files. 2012-06-05 13:12:58 +02:00
opengl Add CONFIG+=parallel_test to suspected parallel-safe tests. 2012-05-28 07:33:01 +02:00
other Use QPointer instead of QWeakPointer. 2012-06-05 18:42:26 +02:00
printsupport QtPrintSupport - Add QPrinterInfo api for more printer details 2012-05-29 23:48:15 +02:00
shared Expose QPA API under qpa/* 2012-05-07 20:25:24 +02:00
sql Add CONFIG+=parallel_test to suspected parallel-safe tests. 2012-05-28 07:33:01 +02:00
testlib Make tst_selftests parallel-safe. 2012-05-29 09:39:18 +02:00
tools Replace QTEST_APPLESS_MAIN with QTEST_MAIN in tests using QProcess 2012-06-05 06:12:20 +02:00
widgets Use QPointer instead of QWeakPointer. 2012-06-05 18:42:26 +02:00
xml Add CONFIG+=parallel_test to suspected parallel-safe tests. 2012-05-28 07:33:01 +02:00
auto.pro Re-enable network tests on Mac OS. 2012-04-24 16:06:28 +02:00
network-settings.h Fix auto tests build with gcc 4.7 2012-05-23 00:42:20 +02:00
platformquirks.h Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
test.pl Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00