From 836fbccf900e4f91eae45ec04e519f1996d7d184 Mon Sep 17 00:00:00 2001 From: coderhyme Date: Mon, 11 Sep 2017 16:19:52 +0900 Subject: [PATCH] [MediaContent] Fixed a bug of MediaData.ScanFolderAsync that could occur when the operation is canceled. Change-Id: Iaf1c666ec3440bfdb4b6f7d1852f3312d81544c7 Signed-off-by: coderhyme --- .../Tizen.Content.MediaContent/MediaDatabase.cs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Tizen.Content.MediaContent/Tizen.Content.MediaContent/MediaDatabase.cs b/src/Tizen.Content.MediaContent/Tizen.Content.MediaContent/MediaDatabase.cs index c8676f7..8474364 100644 --- a/src/Tizen.Content.MediaContent/Tizen.Content.MediaContent/MediaDatabase.cs +++ b/src/Tizen.Content.MediaContent/Tizen.Content.MediaContent/MediaDatabase.cs @@ -356,10 +356,9 @@ namespace Tizen.Content.MediaContent { var tcs = new TaskCompletionSource(); - using (var cbKeeper = ObjectKeeper.Get(GetScanCompletedCallback(tcs))) + using (var cbKeeper = ObjectKeeper.Get(GetScanCompletedCallback(tcs, cancellationToken))) using (RegisterCancellationAction(tcs, folderPath, cancellationToken)) { - Interop.Content.ScanFolder(folderPath, recursive, cbKeeper.Target) .ThrowIfError("Failed to scan"); @@ -367,13 +366,21 @@ namespace Tizen.Content.MediaContent } } - private static Interop.Content.MediaScanCompletedCallback GetScanCompletedCallback(TaskCompletionSource tcs) + private static Interop.Content.MediaScanCompletedCallback GetScanCompletedCallback(TaskCompletionSource tcs, + CancellationToken cancellationToken) { return (scanResult, _) => { if (scanResult == MediaContentError.None) { - tcs.TrySetResult(true); + if (cancellationToken.IsCancellationRequested) + { + tcs.TrySetCanceled(); + } + else + { + tcs.TrySetResult(true); + } } else { @@ -398,7 +405,6 @@ namespace Tizen.Content.MediaContent } Interop.Content.CancelScanFolder(folderPath).ThrowIfError("Failed to cancel scanning"); - tcs.TrySetCanceled(); }); } -- 2.7.4