changeActiveCounter method

void changeActiveCounter(
  1. int change
)

Implementation

void changeActiveCounter(int change) {
  int previousActiveCount = activeCount;
  activeCount += change;
  if (changingActiveState) {
    return;
  }
  changingActiveState = true;
  try {
    while (previousActiveCount != activeCount) {
      bool needToCallActive = previousActiveCount == 0 && activeCount > 0;
      bool needToCallInactive = previousActiveCount > 0 && activeCount == 0;
      previousActiveCount = activeCount;
      if (needToCallActive) {
        onActive();
      } else if (needToCallInactive) {
        onInactive();
      }
    }
  } finally {
    changingActiveState = false;
  }
}