summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2012-08-27 04:08:48 +0000
committerRobin Gareus <robin@gareus.org>2012-08-27 04:08:48 +0000
commita8f0c3255f6f645913f57748d34db640bc7adcc2 (patch)
tree71b411f296de829ca57b7c715adddc351071d6f6
parent0a834da466ccb9c9223e5584915429f2d78f662c (diff)
fix LV2 worker
start worker thread after _sem and _exit have been initialized. stop thread when plugin is removed. git-svn-id: svn://localhost/ardour2/branches/3.0@13145 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--libs/ardour/ardour/worker.h2
-rw-r--r--libs/ardour/lv2_plugin.cc1
-rw-r--r--libs/ardour/worker.cc2
3 files changed, 3 insertions, 2 deletions
diff --git a/libs/ardour/ardour/worker.h b/libs/ardour/ardour/worker.h
index fe278b9618..cdc3d1d06d 100644
--- a/libs/ardour/ardour/worker.h
+++ b/libs/ardour/ardour/worker.h
@@ -77,12 +77,12 @@ private:
void run();
Workee* _workee;
- Glib::Threads::Thread* _thread;
RingBuffer<uint8_t>* _requests;
RingBuffer<uint8_t>* _responses;
uint8_t* _response;
PBD::Semaphore _sem;
bool _exit;
+ Glib::Threads::Thread* _thread;
};
} // namespace ARDOUR
diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc
index 4c2202f230..2dc42a321f 100644
--- a/libs/ardour/lv2_plugin.cc
+++ b/libs/ardour/lv2_plugin.cc
@@ -560,6 +560,7 @@ LV2Plugin::~LV2Plugin ()
delete _to_ui;
delete _from_ui;
+ delete _worker;
delete [] _control_data;
delete [] _shadow_data;
diff --git a/libs/ardour/worker.cc b/libs/ardour/worker.cc
index 290689f13c..67c72ffeba 100644
--- a/libs/ardour/worker.cc
+++ b/libs/ardour/worker.cc
@@ -26,12 +26,12 @@ namespace ARDOUR {
Worker::Worker(Workee* workee, uint32_t ring_size)
: _workee(workee)
- , _thread (Glib::Threads::Thread::create(sigc::mem_fun(*this, &Worker::run)))
, _requests(new RingBuffer<uint8_t>(ring_size))
, _responses(new RingBuffer<uint8_t>(ring_size))
, _response((uint8_t*)malloc(ring_size))
, _sem(0)
, _exit(false)
+ , _thread (Glib::Threads::Thread::create(sigc::mem_fun(*this, &Worker::run)))
{}
Worker::~Worker()