summaryrefslogtreecommitdiff
path: root/services/incremental/IncrementalService.h
diff options
context:
space:
mode:
Diffstat (limited to 'services/incremental/IncrementalService.h')
-rw-r--r--services/incremental/IncrementalService.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/services/incremental/IncrementalService.h b/services/incremental/IncrementalService.h
index c016bab067be..8c79d7725dcf 100644
--- a/services/incremental/IncrementalService.h
+++ b/services/incremental/IncrementalService.h
@@ -180,27 +180,32 @@ private:
~DataLoaderStub();
bool create();
- bool start();
+ bool requestStart();
void destroy();
// accessors
MountId id() const { return mId; }
const DataLoaderParamsParcel& params() const { return mParams; }
- int status() const { return mStatus.load(); }
+ int status() const { return mStatus; }
bool startRequested() const { return mStartRequested; }
private:
binder::Status onStatusChanged(MountId mount, int newStatus) final;
+ bool start();
+ bool waitForDestroy();
+
IncrementalService& mService;
MountId const mId;
DataLoaderParamsParcel const mParams;
FileSystemControlParcel const mControl;
DataLoaderStatusListener const mListener;
- std::atomic<int> mStatus = -1;
+ std::mutex mStatusMutex;
+ std::condition_variable mStatusCondition;
+ int mStatus = IDataLoaderStatusListener::DATA_LOADER_DESTROYED;
bool mStartRequested = false;
- bool mDestroyRequested = false;
+ bool mDestroyRequested = true;
};
using DataLoaderStubPtr = sp<DataLoaderStub>;