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

Commit 572a11b3 authored by Chienyuan's avatar Chienyuan Committed by Chris Manton
Browse files

Check paused client by switch

Bug: 238400713
Test: gd/cert/run
Tag: #refactor
Ignore-AOSP-First: Cherry-pick

Merged-In: Ia2d031f1b949448c58afe1942d574ecf616dc0f2
Change-Id: Ia2d031f1b949448c58afe1942d574ecf616dc0f2
parent ffcd3344
Loading
Loading
Loading
Loading
+19 −8
Original line number Diff line number Diff line
@@ -223,9 +223,15 @@ AddressWithType LeAddressManager::GetAnotherAddress() {

void LeAddressManager::pause_registered_clients() {
  for (auto& client : registered_clients_) {
    if (client.second != ClientState::PAUSED && client.second != ClientState::WAITING_FOR_PAUSE) {
    switch (client.second) {
      case ClientState::PAUSED:
      case ClientState::WAITING_FOR_PAUSE:
        break;
      case WAITING_FOR_RESUME:
      case RESUMED:
        client.second = ClientState::WAITING_FOR_PAUSE;
        client.first->OnPause();
        break;
    }
  }
}
@@ -241,13 +247,18 @@ void LeAddressManager::ack_pause(LeAddressManagerCallback* callback) {
  }
  registered_clients_.find(callback)->second = ClientState::PAUSED;
  for (auto client : registered_clients_) {
    if (client.second != ClientState::PAUSED) {
    switch (client.second) {
      case ClientState::PAUSED:
        break;
      case ClientState::WAITING_FOR_PAUSE:
        // make sure all client paused
      if (client.second != ClientState::WAITING_FOR_PAUSE) {
        LOG_DEBUG("Wait all clients paused, return");
        return;
      case WAITING_FOR_RESUME:
      case RESUMED:
        LOG_DEBUG("Trigger OnPause for client that not paused and not waiting for pause");
        client.second = ClientState::WAITING_FOR_PAUSE;
        client.first->OnPause();
      }
        return;
    }
  }