react-native-camera_edit/windows/RNCamera/CameraForViewManager.cs
2025-07-09 11:33:00 +09:00

53 lines
1.5 KiB
C#

using ReactNative.UIManager;
using System.Collections.Generic;
using Windows.UI.Xaml.Controls;
namespace RNCamera
{
class CameraForViewManager
{
private readonly object _gate = new object();
private readonly IDictionary<int, CameraForView> _cameras =
new Dictionary<int, CameraForView>();
public CameraForView GetCameraForView(int viewTag)
{
CameraForView result;
if (!_cameras.TryGetValue(viewTag, out result))
{
return null;
}
return result;
}
public CameraForView GetOrCreateCameraForView(CaptureElement view)
{
var viewTag = view.GetTag();
var reactContext = view.GetReactContext();
CameraForView result;
if (!_cameras.TryGetValue(viewTag, out result))
{
result = new CameraForView(view);
_cameras.Add(viewTag, result);
reactContext.AddLifecycleEventListener(result);
}
return result;
}
public void DropCameraForView(CaptureElement view)
{
var viewTag = view.GetTag();
var camera = GetCameraForView(viewTag);
if (camera != null)
{
_cameras.Remove(viewTag);
var reactContext = view.GetReactContext();
reactContext.RemoveLifecycleEventListener(camera);
}
}
}
}