projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Really fix #1125 (and maybe #1139)
[pulseview.git]
/
pv
/
data
/
segment.cpp
diff --git
a/pv/data/segment.cpp
b/pv/data/segment.cpp
index 905b79274efeb6ee5ddebd7045348c5da85d9db3..9b18c6499a1b32cf03362dc67e835f410acb9159 100644
(file)
--- a/
pv/data/segment.cpp
+++ b/
pv/data/segment.cpp
@@
-33,13
+33,15
@@
namespace data {
const uint64_t Segment::MaxChunkSize = 10 * 1024 * 1024; /* 10MiB */
const uint64_t Segment::MaxChunkSize = 10 * 1024 * 1024; /* 10MiB */
-Segment::Segment(uint64_t samplerate, unsigned int unit_size) :
+Segment::Segment(uint32_t segment_id, uint64_t samplerate, unsigned int unit_size) :
+ segment_id_(segment_id),
sample_count_(0),
start_time_(0),
samplerate_(samplerate),
unit_size_(unit_size),
iterator_count_(0),
sample_count_(0),
start_time_(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
+91,21
@@
unsigned int Segment::unit_size() const
return unit_size_;
}
return unit_size_;
}
+uint32_t Segment::segment_id() const
+{
+ return segment_id_;
+}
+
+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
+188,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
+217,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)