Commit Graph

31 Commits

Author SHA1 Message Date
Jonas Kvinge 320a1b81c9 Fix incorrect use of QFutureWatcher
To avoid a race condition, it is important to call setFuture() after doing the connections.

See: https://doc.qt.io/qt-6/qfuturewatcher.html
2021-07-14 10:18:15 +01:00
Jim Broadus dbe67bf32b Fix closure timing hole.
When a closure involves an ObjectHelper, a connection is made from the
receiver's destroyed signal and the helper object's deleteLater slot. Since
the signal between the sender and the helper object isn't disconnected until
either object is actually destroyed, this leaves a hole where the helper
holds a pointer to an invalid receiver object, but is still able to receive
the signal connected to its Invoke slot.

Instead of connecting the destroyed signal to deleteLater, connect it to a new
TearDown slot that immediately disconnects the signal then calls deleteLater.
2020-01-11 00:53:35 -08:00
John Maguire f300946c81 Remove most usages of QFutureWatcher 2015-11-27 14:28:12 +00:00
John Maguire 2d61fe6c87 Changed my mind about automatically passing QFutures. 2015-11-27 12:04:14 +00:00
Arnaud Bienner ec98a68c3d Update SLOT signatures.
There weren't update as part of commit 33494dcddcb64f9fccae215f1100cfa885c72039: this prevented the slider to be updated, among other things.
2015-11-27 11:44:59 +01:00
John Maguire 3cc9c1e446 Remove ModelFutureWatcher 2015-11-26 19:02:08 +00:00
John Maguire 689858026e Actually pass the finished QFuture back. 2015-11-26 18:42:12 +00:00
John Maguire 2cd15ff430 Add NewClosure overload for QFuture 2015-11-26 18:35:17 +00:00
John Maguire b2a532be62 Experiment with typesafe time units 2015-07-20 14:35:13 +01:00
John Maguire aa22a43f44 Add exponential back-off to Amazon requests. 2015-04-17 12:10:40 +01:00
John Maguire bebd781fdf Reformat all non-3rd-party C/C++/Objective-C++.
Command line:
find src ext -regex '.*\.\(h\|cpp\|mm\)' -exec clang-format -i
 -style='{BasedOnStyle: Google, DerivePointerBinding: false}' {} \;
2014-02-07 16:34:20 +01:00
John Maguire d309d4ab27 Use c++11 instead of boost where possible. 2014-02-06 16:51:39 +01:00
John Maguire cc43e339c1 Use boost function for compatibility 2013-11-22 11:53:47 +00:00
John Maguire b17b075361 Compile fixes for 10.9 2013-11-21 17:59:31 +00:00
John Maguire dd59aaada0 Delete closures if the receiver is deleted. 2013-02-26 16:27:44 +01:00
John Maguire 195e1cb2ad Support arbitrary return type in closure for member function pointer. 2012-12-13 16:55:23 +01:00
John Maguire 020f08438f Support member function pointers in Closure.
Bonus: type-safe slots
2012-12-13 16:27:55 +01:00
John Maguire 94f76a9d08 Support function pointers and std functions with arguments in Closure. 2012-12-13 16:13:38 +01:00
John Maguire c294098aef Use tr1 for mac compatibility 2012-11-26 10:10:20 +01:00
John Maguire 11f664083a Add support for standard function callbacks in NewClosure (including C++11 lambdas). 2012-11-26 09:41:26 +01:00
John Maguire 4e9231976e Unpack variadic arguments into QGenericArguments without boost::tuple. 2012-11-22 17:57:26 +01:00
John Maguire 8171192df5 Port Closure to variadic templates. 2012-11-22 17:19:04 +01:00
John Maguire 66c8d6d360 Tidy up a bit. 2012-04-13 15:53:17 +02:00
John Maguire 133c2e1640 Postpone the database check & backup to a little while after startup. 2012-04-13 15:49:56 +02:00
John Maguire a09165c392 Make it more obviously wrong to use the Closure internals. 2012-03-20 15:14:44 +01:00
John Maguire e4ae4b6df5 Remove poor man's static asserts. 2012-03-19 21:19:24 +01:00
John Maguire c4d3062459 Make the SharedClosure implementation a bit less horrible. 2012-03-19 21:17:57 +01:00
David Sansome d7a5af07fb Copy+paste the shared pointer closure constructor a couple of times for different numbers of arguments. 2012-03-19 19:38:36 +00:00
John Maguire e1d77e0124 Add support for QSharedPointer in Closure. 2012-03-19 19:37:57 +01:00
David Sansome b9e08bbfe6 Update podcasts on a schedule and on demand. Update them immediately after subscribing, and make episodes appear in the tree. 2012-03-09 15:26:15 +00:00
David Sansome 9041117867 Move everything around in the source tree - static libraries and external binaries now go in "ext/". Add a generic worker pool. 2012-01-05 23:25:13 +00:00