projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Install logging callbacks for Android
[pulseview.git]
/
pv
/
sigsession.cpp
diff --git
a/pv/sigsession.cpp
b/pv/sigsession.cpp
index 84e1d48fdf19b0f62747745e0d60215d8330c066..201892889abf97d05823529d8d3cf7e191eb0a2b 100644
(file)
--- a/
pv/sigsession.cpp
+++ b/
pv/sigsession.cpp
@@
-47,8
+47,8
@@
#include <QDebug>
#include <QDebug>
-using boost::function;
using std::dynamic_pointer_cast;
using std::dynamic_pointer_cast;
+using std::function;
using std::lock_guard;
using std::mutex;
using std::list;
using std::lock_guard;
using std::mutex;
using std::list;
@@
-63,6
+63,9
@@
namespace pv {
// TODO: This should not be necessary
SigSession* SigSession::_session = NULL;
// TODO: This should not be necessary
SigSession* SigSession::_session = NULL;
+// TODO: This should not be necessary
+struct sr_session *SigSession::_sr_session = NULL;
+
SigSession::SigSession(DeviceManager &device_manager) :
_device_manager(device_manager),
_capture_state(Stopped)
SigSession::SigSession(DeviceManager &device_manager) :
_device_manager(device_manager),
_capture_state(Stopped)
@@
-77,12
+80,11
@@
SigSession::~SigSession()
{
using pv::device::Device;
{
using pv::device::Device;
+ // Stop and join to the thread
stop_capture();
stop_capture();
- if (_sampling_thread.joinable())
- _sampling_thread.join();
-
- _dev_inst->release();
+ if (_dev_inst)
+ _dev_inst->release();
// TODO: This should not be necessary
_session = NULL;
// TODO: This should not be necessary
_session = NULL;
@@
-102,7
+104,7
@@
void SigSession::set_device(
stop_capture();
if (_dev_inst) {
stop_capture();
if (_dev_inst) {
- sr_session_datafeed_callback_remove_all();
+ sr_session_datafeed_callback_remove_all(
_sr_session
);
_dev_inst->release();
}
_dev_inst->release();
}
@@
-111,7
+113,7
@@
void SigSession::set_device(
if (dev_inst) {
dev_inst->use(this);
if (dev_inst) {
dev_inst->use(this);
- sr_session_datafeed_callback_add(data_feed_in_proc, NULL);
+ sr_session_datafeed_callback_add(
_sr_session,
data_feed_in_proc, NULL);
update_signals(dev_inst);
}
}
update_signals(dev_inst);
}
}
@@
-195,10
+197,8
@@
void SigSession::start_capture(function<void (const QString)> error_handler)
void SigSession::stop_capture()
{
void SigSession::stop_capture()
{
- if (get_capture_state() == Stopped)
- return;
-
- sr_session_stop();
+ if (get_capture_state() != Stopped)
+ sr_session_stop(_sr_session);
// Check that sampling stopped
if (_sampling_thread.joinable())
// Check that sampling stopped
if (_sampling_thread.joinable())
@@
-448,7
+448,7
@@
void SigSession::sample_thread_proc(shared_ptr<device::DevInst> dev_inst,
return;
}
return;
}
- set_capture_state(
dev_inst->is_trigger_enabled(
) ?
+ set_capture_state(
sr_session_trigger_get(_sr_session
) ?
AwaitingTrigger : Running);
dev_inst->run();
AwaitingTrigger : Running);
dev_inst->run();