On 1/19/2017 2:29 AM, Viktor Engelmann wrote:
QSignalSpy::wait has a race condition though. When the signal is emitted
from a different thread, it might come before you called .wait and then the
wait will time out and return false (so it looks like the signal wasn't
emitted). You can store the value of spy.size() and after the wait compare
it to the current spy.size(). That is more robust, but when the signal is
emitted before you start the .wait, the .wait will still wait for the full
timeout time.
QTRY_COMPARE terminates as soon as the condition is met, so
QTRY_COMPARE(spy.size(), 1) is better, but it uses a timeout of only 5
seconds, which should be enough in most cases, but I have seen cases where a
signal came 11 seconds after I caused it to be emitted (due to network
and/or system load). I used QTRY_COMPARE_WITH_TIMEOUT instead to set a
higher timeout.
Thanks for the info, Viktor. :)
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest