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_);
else if (unit_size_ == 4)
downsampleT<uint32_t>(src_ptr, dest_ptr, count);
else if (unit_size_ == 8)
- downsampleT<uint8_t>(src_ptr, dest_ptr, count);
+ downsampleT<uint64_t>(src_ptr, dest_ptr, count);
else
downsampleGeneric(src_ptr, dest_ptr, count);
len_sample -= count;