diff --git a/src/thread/pipipelinethread.h b/src/thread/pipipelinethread.h index 88ea16cf..354ab277 100644 --- a/src/thread/pipipelinethread.h +++ b/src/thread/pipipelinethread.h @@ -33,7 +33,7 @@ public: PIPipelineThread() { cnt = 0; max_size = 0; - wait_next_pipe = true; + wait_next_pipe = false; next_overload = false; } ~PIPipelineThread() { @@ -48,7 +48,8 @@ public: EVENT_HANDLER1(void, enqueue, const Tin &, v) {enqueue(v, 0);} EVENT_HANDLER2(void, enqueue, const Tin &, v, bool *, overload) { mutex.lock(); - if (max_size > 0 && in.size() < max_size) { +// piCout << "enque" << max_size << in.size(); + if (max_size == 0 || in.size() < max_size) { in.enqueue(v); if (overload) *overload = false; } else { @@ -104,7 +105,7 @@ public: void setMaxQueSize(uint count) { mutex.lock(); - count = max_size; + max_size = count; if (max_size > 0 && in.size() > max_size) in.resize(max_size); mutex.unlock(); } @@ -125,17 +126,20 @@ private: return; } if (next_overload && wait_next_pipe) { + mutex.unlock(); calculated(last, &next_overload); + piMSleep(10); } else { Tin t = in.dequeue(); - bool ok = true; mutex.unlock(); + bool ok = true; Tout r = calc(t, ok); if (ok) { mutex_l.lock(); last = r; mutex_l.unlock(); cnt++; +// next_overload = true; calculated(r, &next_overload); } }