summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Maps.iOS/MapPool.cs
blob: 1b3823c7bf886ae7bca1732a96ba0e758031a0a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System.Collections.Concurrent;
using MapKit;

#if __MOBILE__
namespace Xamarin.Forms.Maps.iOS
#else
namespace Xamarin.Forms.Maps.MacOS
#endif
{
	// A static pool of MKMapView instances we can reuse 
	internal class MapPool
	{
		static MapPool s_instance;
		public static MapPool Instance => s_instance ?? (s_instance = new MapPool());

		internal readonly ConcurrentQueue<MKMapView> Maps = new ConcurrentQueue<MKMapView>();

		public static void Add(MKMapView mapView)
		{
			Instance.Maps.Enqueue(mapView);
		}

		public static MKMapView Get()
		{
			MKMapView mapView;
			return Instance.Maps.TryDequeue(out mapView) ? mapView : null;
		}
	}
}