requestOwnershipAsync method
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;
}