projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement Trace::ShowLastCompleteSegmentOnly display mode
[pulseview.git]
/
pv
/
data
/
segment.cpp
diff --git
a/pv/data/segment.cpp
b/pv/data/segment.cpp
index 905b79274efeb6ee5ddebd7045348c5da85d9db3..8745e8740dc582f8a53d33ae7ed8e81d36a87398 100644
(file)
--- a/
pv/data/segment.cpp
+++ b/
pv/data/segment.cpp
@@
-39,7
+39,8
@@
Segment::Segment(uint64_t samplerate, unsigned int unit_size) :
samplerate_(samplerate),
unit_size_(unit_size),
iterator_count_(0),
samplerate_(samplerate),
unit_size_(unit_size),
iterator_count_(0),
- mem_optimization_requested_(false)
+ mem_optimization_requested_(false),
+ is_complete_(false)
{
lock_guard<recursive_mutex> lock(mutex_);
assert(unit_size_ > 0);
{
lock_guard<recursive_mutex> lock(mutex_);
assert(unit_size_ > 0);
@@
-89,6
+90,16
@@
unsigned int Segment::unit_size() const
return unit_size_;
}
return unit_size_;
}
+void Segment::set_complete()
+{
+ is_complete_ = true;
+}
+
+bool Segment::is_complete() const
+{
+ return is_complete_;
+}
+
void Segment::free_unused_memory()
{
lock_guard<recursive_mutex> lock(mutex_);
void Segment::free_unused_memory()
{
lock_guard<recursive_mutex> lock(mutex_);
@@
-171,15
+182,16
@@
void Segment::append_samples(void* data, uint64_t samples)
sample_count_ += samples;
}
sample_count_ += samples;
}
-uint8_t* Segment::get_raw_samples(uint64_t start, uint64_t count) const
+void Segment::get_raw_samples(uint64_t start, uint64_t count,
+ uint8_t* dest) const
{
assert(start < sample_count_);
assert(start + count <= sample_count_);
assert(count > 0);
{
assert(start < sample_count_);
assert(start + count <= sample_count_);
assert(count > 0);
+ assert(dest != nullptr);
lock_guard<recursive_mutex> lock(mutex_);
lock_guard<recursive_mutex> lock(mutex_);
- uint8_t* dest = new uint8_t[count * unit_size_];
uint8_t* dest_ptr = dest;
uint64_t chunk_num = (start * unit_size_) / chunk_size_;
uint8_t* dest_ptr = dest;
uint64_t chunk_num = (start * unit_size_) / chunk_size_;
@@
-199,8
+211,6
@@
uint8_t* Segment::get_raw_samples(uint64_t start, uint64_t count) const
chunk_num++;
chunk_offs = 0;
}
chunk_num++;
chunk_offs = 0;
}
-
- return dest;
}
SegmentRawDataIterator* Segment::begin_raw_sample_iteration(uint64_t start)
}
SegmentRawDataIterator* Segment::begin_raw_sample_iteration(uint64_t start)