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

Commit 03893b97 authored by Ilya Matyukhin's avatar Ilya Matyukhin Committed by Android (Google) Code Review
Browse files

Merge "Make states atomic and update comments" into sc-dev

parents a2d1efb4 48dc9fce
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ void Session::scheduleStateOrCrash(SessionState state) {

void Session::enterStateOrCrash(int cookie, SessionState state) {
    CHECK(mScheduledState == state);
    mCurrentState = mScheduledState;
    mCurrentState = state;
    mScheduledState = SessionState::IDLING;
    mCb->onStateChanged(cookie, mCurrentState);
}
+17 −2
Original line number Diff line number Diff line
@@ -82,13 +82,28 @@ class Session : public BnSession {
    // by calling ISessionCallback#onStateChanged.
    void enterIdling(int cookie);

    // The sensor and user IDs for which this session was created.
    int32_t mSensorId;
    int32_t mUserId;

    // Callback for talking to the framework. This callback must only be called from non-binder
    // threads to prevent nested binder calls and consequently a binder thread exhaustion.
    // Practically, it means that this callback should always be called from the worker thread.
    std::shared_ptr<ISessionCallback> mCb;

    // Module that communicates to the actual fingerprint hardware, keystore, TEE, etc. In real
    // life such modules typically consume a lot of memory and are slow to initialize. This is here
    // to showcase how such a module can be used within a Session without incurring the high
    // initialization costs every time a Session is constructed.
    FakeFingerprintEngine* mEngine;

    // Worker thread that allows to schedule tasks for asynchronous execution.
    WorkerThread* mWorker;
    SessionState mScheduledState;
    SessionState mCurrentState;

    // Simple representation of the session's state machine. These are atomic because they can be
    // modified from both the main and the worker threads.
    std::atomic<SessionState> mScheduledState;
    std::atomic<SessionState> mCurrentState;
};

}  // namespace aidl::android::hardware::biometrics::fingerprint