From 8dcd925400b83343415d5dc973634f71b4c7a5d9 Mon Sep 17 00:00:00 2001
From: "roberto.borghes" <roberto.borghes@elettra.eu>
Date: Thu, 23 Dec 2021 13:00:35 +0100
Subject: [PATCH] Bug fix: corrected the internal data buffer size calculation

---
 src/DataBuffer.py | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/DataBuffer.py b/src/DataBuffer.py
index 21b5331..4aafe89 100644
--- a/src/DataBuffer.py
+++ b/src/DataBuffer.py
@@ -112,14 +112,18 @@ class donkiBuffer(threading.Thread):
             self.trg_range[data_name] = [1,1]
         idx = 0
         for dd in data_in:
-            if sys.getsizeof(self.dbuffers[data_name]) > self.max_size:
+	    if hasattr(dd, "nbytes"):
+                # numpy ndarray case
+                buffersize = len(self.dbuffers[data_name]) * dd.nbytes
+	    else:
+                buffersize = len(self.dbuffers[data_name]) * sys.getsizeof(dd)
+            if buffersize > self.max_size:
                 try:
                     if (self.trg_range[data_name][0]) in (self.dbuffers[data_name]).keys():
-		    	del self.dbuffers[data_name][self.trg_range[data_name][0]]
+                        del self.dbuffers[data_name][self.trg_range[data_name][0]]
                     self.trg_range[data_name][0] = self.trg_range[data_name][0] + 1
                 except:
                     traceback.print_exc()
-                
             self.dbuffers[data_name][trg_in+idx] = dd
         self._last_trigger = max(self._last_trigger,trg_f)
         self.lock.release()
-- 
GitLab