Skip to content

Commit 18717b5

Browse files
Support MediaCaptureFailed
1 parent c7c8099 commit 18717b5

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/CommunityToolkit.Maui.Camera/Views/CameraView.shared.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,18 +209,30 @@ public async ValueTask<IReadOnlyList<CameraInfo>> GetAvailableCameras(Cancellati
209209
/// <inheritdoc cref="ICameraView.CaptureImage"/>
210210
public async Task<Stream> CaptureImage(CancellationToken token)
211211
{
212-
var mediaStream = new TaskCompletionSource<Stream>();
212+
var mediaStreamTCS = new TaskCompletionSource<Stream>();
213213

214214
MediaCaptured += HandleMediaCaptured;
215+
MediaCaptureFailed += HandleMediaCapturedFailed;
216+
215217
await Handler.CameraManager.TakePicture(token);
216218

217-
var stream = await mediaStream.Task.WaitAsync(token);
219+
var stream = await mediaStreamTCS.Task.WaitAsync(token);
218220
return stream;
219221

220222
void HandleMediaCaptured(object? sender, MediaCapturedEventArgs e)
221223
{
222224
MediaCaptured -= HandleMediaCaptured;
223-
mediaStream.SetResult(e.Media);
225+
MediaCaptureFailed -= HandleMediaCapturedFailed;
226+
227+
mediaStreamTCS.SetResult(e.Media);
228+
}
229+
230+
void HandleMediaCapturedFailed(object? sender, MediaCaptureFailedEventArgs e)
231+
{
232+
MediaCaptured -= HandleMediaCaptured;
233+
MediaCaptureFailed -= HandleMediaCapturedFailed;
234+
235+
mediaStreamTCS.SetException(new CameraException(e.FailureReason));
224236
}
225237
}
226238

0 commit comments

Comments
 (0)