diff options
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 | }); |