Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 87c833fb authored by Jeff Pu's avatar Jeff Pu
Browse files

Handle multiple cancel calls from HAL client

Bug: 391083773
Test: Manual steps as listed in b/391083773
Change-Id: Ia954eb02563fc88ca6daa0bcf7ec4b05796fc93f
parent 39ab138d
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -22,10 +22,13 @@
namespace aidl::android::hardware::biometrics {

CancellationSignal::CancellationSignal(std::promise<void>&& cancellationPromise)
    : mCancellationPromise(std::move(cancellationPromise)) {}
    : mCancellationPromise(std::move(cancellationPromise)), isSet(false) {}

ndk::ScopedAStatus CancellationSignal::cancel() {
    if (!isSet) {
        mCancellationPromise.set_value();
        isSet = true;
    }
    return ndk::ScopedAStatus::ok();
}

+1 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ class CancellationSignal : public common::BnCancellationSignal {

  private:
    std::promise<void> mCancellationPromise;
    bool isSet;
};

// Returns whether the given cancellation future is ready, i.e. whether the operation corresponding