LogicSegment::~LogicSegment()
{
lock_guard<recursive_mutex> lock(mutex_);
+
for (MipMapLevel &l : mip_map_)
free(l.data);
}
+shared_ptr<const LogicSegment> LogicSegment::get_shared_ptr() const
+{
+ shared_ptr<const Segment> ptr = nullptr;
+
+ try {
+ ptr = shared_from_this();
+ } catch (std::exception& e) {
+ /* Do nothing, ptr remains a null pointer */
+ }
+
+ return ptr ? std::dynamic_pointer_cast<const LogicSegment>(ptr) : nullptr;
+}
+
template <class T>
void LogicSegment::downsampleTmain(const T*&in, T &acc, T &prev)
{
void LogicSegment::append_payload(void *data, uint64_t data_size)
{
+ assert(unit_size_ > 0);
assert((data_size % unit_size_) == 0);
lock_guard<recursive_mutex> lock(mutex_);
append_payload_to_mipmap();
if (sample_count > 1)
- owner_.notify_samples_added(shared_ptr<Segment>(shared_from_this()),
+ owner_.notify_samples_added(SharedPtrToSegment(shared_from_this()),
prev_sample_count + 1, prev_sample_count + 1 + sample_count);
else
- owner_.notify_samples_added(shared_ptr<Segment>(shared_from_this()),
+ owner_.notify_samples_added(SharedPtrToSegment(shared_from_this()),
prev_sample_count + 1, prev_sample_count + 1);
}