projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Only use one central .gitignore file.
[pulseview.git]
/
pv
/
sigsession.cpp
diff --git
a/pv/sigsession.cpp
b/pv/sigsession.cpp
index 282b7ec5c691959f432fe2627a60b1eddde69754..201892889abf97d05823529d8d3cf7e191eb0a2b 100644
(file)
--- a/
pv/sigsession.cpp
+++ b/
pv/sigsession.cpp
@@
-39,22
+39,22
@@
#include "view/decodetrace.h"
#include "view/logicsignal.h"
#include "view/decodetrace.h"
#include "view/logicsignal.h"
-#include <
assert.h
>
-
+#include <
cassert
>
+#include <mutex>
#include <stdexcept>
#include <sys/stat.h>
#include <QDebug>
#include <stdexcept>
#include <sys/stat.h>
#include <QDebug>
-using boost::dynamic_pointer_cast;
-using boost::function;
-using boost::lock_guard;
-using boost::mutex;
-using boost::shared_ptr;
+using std::dynamic_pointer_cast;
+using std::function;
+using std::lock_guard;
+using std::mutex;
using std::list;
using std::map;
using std::set;
using std::list;
using std::map;
using std::set;
+using std::shared_ptr;
using std::string;
using std::vector;
using std::string;
using std::vector;
@@
-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);
}
}
@@
-188,17
+190,15
@@
void SigSession::start_capture(function<void (const QString)> error_handler)
}
// Begin the session
}
// Begin the session
- _sampling_thread =
boost
::thread(
+ _sampling_thread =
std
::thread(
&SigSession::sample_thread_proc, this, _dev_inst,
error_handler);
}
void SigSession::stop_capture()
{
&SigSession::sample_thread_proc, this, _dev_inst,
error_handler);
}
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();