diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-10-07 15:41:56 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-10-07 15:41:56 +0200 |
commit | 8a78dbe0612fda7cd66b43057f6d467d3e1844dd (patch) | |
tree | 6119a00cfc2523f8912ff376af4536abed87b6a8 /common/resourcecontrol.cpp | |
parent | f0fa3392133e15d68245d88397d5c43023b84b43 (diff) | |
download | sink-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.
Diffstat (limited to 'common/resourcecontrol.cpp')
-rw-r--r-- | common/resourcecontrol.cpp | 14 |
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 | }); |