summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-10-07 15:41:56 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-10-07 15:41:56 +0200
commit8a78dbe0612fda7cd66b43057f6d467d3e1844dd (patch)
tree6119a00cfc2523f8912ff376af4536abed87b6a8
parentf0fa3392133e15d68245d88397d5c43023b84b43 (diff)
downloadsink-8a78dbe0612fda7cd66b43057f6d467d3e1844dd.tar.gz
sink-8a78dbe0612fda7cd66b43057f6d467d3e1844dd.zip
A resource shutdown is only complete once we receive the notification.
Otherwise the tests might try to start a new resource before the last one even shut down.
-rw-r--r--common/resourcecontrol.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/common/resourcecontrol.cpp b/common/resourcecontrol.cpp
index f509318..90c8fb9 100644
--- a/common/resourcecontrol.cpp
+++ b/common/resourcecontrol.cpp
@@ -53,8 +53,18 @@ KAsync::Job<void> ResourceControl::shutdown(const QByteArray &identifier)
53 resourceAccess->open(); 53 resourceAccess->open();
54 return resourceAccess->sendCommand(Sink::Commands::ShutdownCommand) 54 return resourceAccess->sendCommand(Sink::Commands::ShutdownCommand)
55 .addToContext(resourceAccess) 55 .addToContext(resourceAccess)
56 .syncThen<void>([resourceAccess, time]() { 56 .then<void>([resourceAccess, time](KAsync::Future<void> &future) {
57 resourceAccess->close(); 57 SinkTrace() << "Shutdown command complete, waiting for shutdown." << Log::TraceTime(time->elapsed());
58 if (!resourceAccess->isReady()) {
59 future.setFinished();
60 return;
61 }
62 QObject::connect(resourceAccess.data(), &ResourceAccess::ready, [&future](bool ready) {
63 if (!ready) {
64 future.setFinished();
65 }
66 });
67 }).syncThen<void>([time] {
58 SinkTrace() << "Shutdown complete." << Log::TraceTime(time->elapsed()); 68 SinkTrace() << "Shutdown complete." << Log::TraceTime(time->elapsed());
59 }); 69 });
60 }); 70 });