1838 |
// create new Sample object and its respective 'wave' list chunk |
// create new Sample object and its respective 'wave' list chunk |
1839 |
RIFF::List* wave = wvpl->AddSubList(LIST_TYPE_WAVE); |
RIFF::List* wave = wvpl->AddSubList(LIST_TYPE_WAVE); |
1840 |
Sample* pSample = new Sample(this, wave, 0 /*arbitrary value, we update offsets when we save*/); |
Sample* pSample = new Sample(this, wave, 0 /*arbitrary value, we update offsets when we save*/); |
1841 |
|
const size_t idxIt = SamplesIterator - pSamples->begin(); |
1842 |
pSamples->push_back(pSample); |
pSamples->push_back(pSample); |
1843 |
|
SamplesIterator = pSamples->begin() + std::min(idxIt, pSamples->size()); // avoid iterator invalidation |
1844 |
return pSample; |
return pSample; |
1845 |
} |
} |
1846 |
|
|
1855 |
if (!pSamples) return; |
if (!pSamples) return; |
1856 |
SampleList::iterator iter = find(pSamples->begin(), pSamples->end(), pSample); |
SampleList::iterator iter = find(pSamples->begin(), pSamples->end(), pSample); |
1857 |
if (iter == pSamples->end()) return; |
if (iter == pSamples->end()) return; |
1858 |
|
const size_t idxIt = SamplesIterator - pSamples->begin(); |
1859 |
pSamples->erase(iter); |
pSamples->erase(iter); |
1860 |
|
SamplesIterator = pSamples->begin() + std::min(idxIt, pSamples->size()); // avoid iterator invalidation |
1861 |
pSample->DeleteChunks(); |
pSample->DeleteChunks(); |
1862 |
delete pSample; |
delete pSample; |
1863 |
} |
} |