Skip to content

Commit 8e4739f

Browse files
committed
Properly handle the queue (keep history)
1 parent 9f65218 commit 8e4739f

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

Arduino_Threads.h

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,20 @@ class Shared // template definition
33
{
44
public:
55
Shared() {
6-
queue = new rtos::Queue<Shared<T>, 16>;
6+
queue = new rtos::Queue<T, 16>;
77
}
88
operator T() const {
99
osEvent evt = queue->get();
1010
if (evt.status == osEventMessage) {
11-
Shared<T> *x = (Shared<T>*)evt.value.p;
12-
return x->val;
11+
T x = *((T*)evt.value.p);
12+
delete (T*)evt.value.p;
13+
return x;
1314
}
1415
}
1516
T& operator= (const T& other) {
1617
val = other;
17-
queue->put(this);
18+
T* obj = new T(val);
19+
queue->put(obj);
1820
}
1921
T& peek() {
2022
return val;
@@ -24,7 +26,7 @@ class Shared // template definition
2426
}
2527
private:
2628
T val;
27-
rtos::Queue<Shared<T>, 16> *queue;
29+
rtos::Queue<T, 16>* queue;
2830
};
2931

3032
#define CONCAT2(x,y) x##y

0 commit comments

Comments
 (0)