Fix sample track playback crash (#4586)
Fixes double-freeing `AudioPort` which is a regression in #4310. Co-authored-by: Shmuel H <shmuelhazan0@gmail.com> Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
This commit is contained in:
@@ -32,35 +32,37 @@
|
||||
|
||||
|
||||
|
||||
SamplePlayHandle::SamplePlayHandle( SampleBuffer* sampleBuffer ) :
|
||||
SamplePlayHandle::SamplePlayHandle( SampleBuffer* sampleBuffer , bool ownAudioPort ) :
|
||||
PlayHandle( TypeSamplePlayHandle ),
|
||||
m_sampleBuffer( sharedObject::ref( sampleBuffer ) ),
|
||||
m_doneMayReturnTrue( true ),
|
||||
m_frame( 0 ),
|
||||
m_ownAudioPort( true ),
|
||||
m_ownAudioPort( ownAudioPort ),
|
||||
m_defaultVolumeModel( DefaultVolume, MinVolume, MaxVolume, 1 ),
|
||||
m_volumeModel( &m_defaultVolumeModel ),
|
||||
m_track( NULL ),
|
||||
m_bbTrack( NULL )
|
||||
{
|
||||
setAudioPort( new AudioPort( "SamplePlayHandle", false ) );
|
||||
if (ownAudioPort)
|
||||
{
|
||||
setAudioPort( new AudioPort( "SamplePlayHandle", false ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
SamplePlayHandle::SamplePlayHandle( const QString& sampleFile ) :
|
||||
SamplePlayHandle( new SampleBuffer( sampleFile ) )
|
||||
SamplePlayHandle( new SampleBuffer( sampleFile ) , true)
|
||||
{
|
||||
sharedObject::unref( m_sampleBuffer );
|
||||
setAudioPort( new AudioPort( "SamplePlayHandle", false ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
SamplePlayHandle::SamplePlayHandle( SampleTCO* tco ) :
|
||||
SamplePlayHandle( tco->sampleBuffer() )
|
||||
SamplePlayHandle( tco->sampleBuffer() , false)
|
||||
{
|
||||
m_track = tco->getTrack();
|
||||
setAudioPort( ( (SampleTrack *)tco->getTrack() )->audioPort() );
|
||||
|
||||
Reference in New Issue
Block a user