requestOwnershipAsync method

Future<bool> requestOwnershipAsync(
  1. CameraPosition position,
  2. CameraOwner owner, [
  3. int? timeoutMs
])

Implementation

Future<bool> requestOwnershipAsync(CameraPosition position, CameraOwner owner, [int? timeoutMs]) async {
  // Try immediate acquisition first
  if (requestOwnership(position, owner)) {
    return true;
  }

  // If not available, wait in queue
  final completer = Completer<bool>();
  final request = _OwnershipRequest(owner, completer);

  _waitingQueue.putIfAbsent(position, () => []).add(request);

  // Optional timeout
  if (timeoutMs != null && timeoutMs > 0) {
    Timer(Duration(milliseconds: timeoutMs), () {
      _removeFromQueue(position, request);
      if (!completer.isCompleted) {
        completer.complete(false); // Timeout - ownership not acquired
      }
    });
  }

  return completer.future;
}