From 5d635568700e2aae1626c64eb720099e3054e112 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Fri, 30 Dec 2016 17:39:52 -0500 Subject: [PATCH] `Period`s need a custom copy constructor too, if they're going to avoid sharing an event_source. --- Storage/Disk/PCMPatchedTrack.cpp | 6 ++++++ Storage/Disk/PCMPatchedTrack.hpp | 1 + 2 files changed, 7 insertions(+) diff --git a/Storage/Disk/PCMPatchedTrack.cpp b/Storage/Disk/PCMPatchedTrack.cpp index 05ea73d1b..7befd23c1 100644 --- a/Storage/Disk/PCMPatchedTrack.cpp +++ b/Storage/Disk/PCMPatchedTrack.cpp @@ -224,6 +224,12 @@ Storage::Time PCMPatchedTrack::seek_to(const Time &time_since_index_hole) return current_time_; } +PCMPatchedTrack::Period::Period(const Period &original) : + start_time(original.start_time), end_time(original.end_time), segment_start_time(original.segment_start_time) +{ + if(original.event_source) event_source.reset(new PCMSegmentEventSource(*original.event_source)); +} + void PCMPatchedTrack::Period::push_start_to_time(const Storage::Time &new_start_time) { segment_start_time += new_start_time - start_time; diff --git a/Storage/Disk/PCMPatchedTrack.hpp b/Storage/Disk/PCMPatchedTrack.hpp index d4cad19ed..23e7bd3a1 100644 --- a/Storage/Disk/PCMPatchedTrack.hpp +++ b/Storage/Disk/PCMPatchedTrack.hpp @@ -55,6 +55,7 @@ class PCMPatchedTrack: public Track { Period(const Time &start_time, const Time &end_time, const Time &segment_start_time, std::shared_ptr event_source) : start_time(start_time), end_time(end_time), segment_start_time(segment_start_time), event_source(event_source) {} + Period(const Period &); }; std::vector periods_; std::vector::iterator active_period_;