diff --git a/src/Tizen.Sensor/Tizen.Sensor/Sensor.cs b/src/Tizen.Sensor/Tizen.Sensor/Sensor.cs index 5a00dec9547..322457d2c29 100755 --- a/src/Tizen.Sensor/Tizen.Sensor/Sensor.cs +++ b/src/Tizen.Sensor/Tizen.Sensor/Sensor.cs @@ -48,6 +48,7 @@ public abstract class Sensor : IDisposable private SensorPausePolicy _pausePolicy = SensorPausePolicy.None; private IntPtr _sensorHandle = IntPtr.Zero; private IntPtr _listenerHandle = IntPtr.Zero; + private static readonly int s_sensorEventStructSize = Marshal.SizeOf(); internal IList BatchedEvents { get; set; } = new List(); @@ -89,11 +90,16 @@ internal void updateBatchEvents(IntPtr eventsPtr, uint events_count) if (events_count >= 1) { BatchedEvents.Clear(); + if (BatchedEvents is List list && list.Capacity < events_count) + { + list.Capacity = (int)events_count; + } + IntPtr currentPtr = eventsPtr; for (int i = 0; i < events_count; i++) { BatchedEvents.Add(Interop.IntPtrToEventStruct(currentPtr)); - currentPtr += Marshal.SizeOf(); + currentPtr += s_sensorEventStructSize; } } }