Skip to content

Commit aafe0f2

Browse files
[camera] Exception safety.
1 parent 622f2db commit aafe0f2

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

packages/camera/camera/lib/src/camera_controller.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,13 @@ class CameraController extends ValueNotifier<CameraValue> {
376376
.then((CameraInitializedEvent event) => event.focusPointSupported),
377377
);
378378
} on PlatformException catch (e) {
379+
_unawaited(_deviceOrientationSubscription?.cancel());
380+
_cameraId = kUninitializedCameraId;
379381
throw CameraException(e.code, e.message);
382+
} catch (e) {
383+
_unawaited(_deviceOrientationSubscription?.cancel());
384+
_cameraId = kUninitializedCameraId;
385+
rethrow;
380386
} finally {
381387
initializeCompleter.complete();
382388
}
@@ -880,8 +886,10 @@ class CameraController extends ValueNotifier<CameraValue> {
880886
_unawaited(_deviceOrientationSubscription?.cancel());
881887
_isDisposed = true;
882888
super.dispose();
883-
if (_initializeFuture != null) {
884-
await _initializeFuture;
889+
if (_initializeFuture == null) {
890+
return;
891+
}
892+
if (_cameraId != kUninitializedCameraId) {
885893
await CameraPlatform.instance.dispose(_cameraId);
886894
}
887895
}

0 commit comments

Comments
 (0)