diff --git a/src/Tizen.Multimedia.Recorder/Recorder/VideoRecorder.Capabilities.cs b/src/Tizen.Multimedia.Recorder/Recorder/VideoRecorder.Capabilities.cs index 0194cf57e58..7735c540296 100644 --- a/src/Tizen.Multimedia.Recorder/Recorder/VideoRecorder.Capabilities.cs +++ b/src/Tizen.Multimedia.Recorder/Recorder/VideoRecorder.Capabilities.cs @@ -27,7 +27,10 @@ namespace Tizen.Multimedia public partial class VideoRecorder { private static IEnumerable _frontResolutions; + private static readonly object _frontLock = new object(); + private static IEnumerable _rearResolutions; + private static readonly object _rearLock = new object(); private static IEnumerable GetVideoResolutions(NativeHandle handle) { @@ -75,19 +78,22 @@ public static IEnumerable GetSupportedVideoResolutions(CameraDevice device { ValidationUtil.ValidateEnum(typeof(CameraDevice), device, nameof(device)); - if (device == CameraDevice.Front) - { - return _frontResolutions ?? (_frontResolutions = LoadVideoResolutions(CameraDevice.Front)); - } - - if (device == CameraDevice.Rear) + switch (device) { - return _rearResolutions ?? (_rearResolutions = LoadVideoResolutions(CameraDevice.Rear)); + case CameraDevice.Front: + lock (_frontLock) + { + return _frontResolutions ?? (_frontResolutions = LoadVideoResolutions(CameraDevice.Front)); + } + case CameraDevice.Rear: + lock (_rearLock) + { + return _rearResolutions ?? (_rearResolutions = LoadVideoResolutions(CameraDevice.Rear)); + } + default: + Debug.Fail($"No cache for {device}."); + return LoadVideoResolutions(device); } - - Debug.Fail($"No cache for {device}."); - - return LoadVideoResolutions(device); } ///