mirror of
https://github.com/cookiengineer/audacity
synced 2025-10-17 08:01:12 +02:00
casting of Track* to WaveTrack* happens at lower level in OD manager
This commit is contained in:
@@ -381,12 +381,12 @@ void ODManager::RemoveWaveTrack(WaveTrack* track)
|
||||
}
|
||||
|
||||
///replace the wavetrack whose wavecache the gui watches for updates
|
||||
void ODManager::ReplaceWaveTrack(WaveTrack* oldTrack,WaveTrack* newTrack)
|
||||
void ODManager::ReplaceWaveTrack(Track *oldTrack, Track *newTrack)
|
||||
{
|
||||
mQueuesMutex.Lock();
|
||||
for(unsigned int i=0;i<mQueues.size();i++)
|
||||
{
|
||||
mQueues[i]->ReplaceWaveTrack(oldTrack,newTrack);
|
||||
mQueues[i]->ReplaceWaveTrack( oldTrack, newTrack );
|
||||
}
|
||||
mQueuesMutex.Unlock();
|
||||
}
|
||||
|
@@ -77,8 +77,9 @@ class ODManager final
|
||||
///Returns success if it was possible.. Some ODTask conditions make it impossible until the Tasks finish.
|
||||
bool MakeWaveTrackDependent(WaveTrack* dependentTrack,WaveTrack* masterTrack);
|
||||
|
||||
///if oldTrack is being watched,
|
||||
///replace the wavetrack whose wavecache the gui watches for updates
|
||||
void ReplaceWaveTrack(WaveTrack* oldTrack,WaveTrack* newTrack);
|
||||
void ReplaceWaveTrack(Track *oldTrack, Track *newTrack);
|
||||
|
||||
///Adds a task to the running queue. Threas-safe.
|
||||
void AddTask(ODTask* task);
|
||||
|
@@ -355,14 +355,14 @@ void ODTask::StopUsingWaveTrack(WaveTrack* track)
|
||||
}
|
||||
|
||||
///Replaces all instances to a wavetrack with a NEW one, effectively transferring the task.
|
||||
void ODTask::ReplaceWaveTrack(WaveTrack* oldTrack,WaveTrack* newTrack)
|
||||
void ODTask::ReplaceWaveTrack(Track *oldTrack, Track *newTrack)
|
||||
{
|
||||
mWaveTrackMutex.Lock();
|
||||
for(size_t i=0;i<mWaveTracks.size();i++)
|
||||
{
|
||||
if(oldTrack == mWaveTracks[i])
|
||||
{
|
||||
mWaveTracks[i] = newTrack;
|
||||
mWaveTracks[i] = static_cast<WaveTrack*>( newTrack );
|
||||
}
|
||||
}
|
||||
mWaveTrackMutex.Unlock();
|
||||
|
@@ -84,7 +84,7 @@ class ODTask /* not final */
|
||||
|
||||
///Replaces all instances to a wavetrack with a NEW one, effectively transferring the task.
|
||||
///ODTask has no wavetrack, so it does nothing. But subclasses that do should override this.
|
||||
virtual void ReplaceWaveTrack(WaveTrack* oldTrack,WaveTrack* newTrack);
|
||||
virtual void ReplaceWaveTrack(Track *oldTrack, Track *newTrack);
|
||||
|
||||
///Adds a WaveTrack to do the task for
|
||||
void AddWaveTrack(WaveTrack* track);
|
||||
|
@@ -20,6 +20,7 @@ tasks associated with a WaveTrack.
|
||||
#include "ODWaveTrackTaskQueue.h"
|
||||
#include "ODTask.h"
|
||||
#include "ODManager.h"
|
||||
#include "../WaveTrack.h"
|
||||
/// Constructs an ODWaveTrackTaskQueue
|
||||
ODWaveTrackTaskQueue::ODWaveTrackTaskQueue()
|
||||
{
|
||||
@@ -205,19 +206,19 @@ void ODWaveTrackTaskQueue::DemandTrackUpdate(WaveTrack* track, double seconds)
|
||||
|
||||
|
||||
//Replaces all instances of a wavetracck with a NEW one (effectively transferes the task.)
|
||||
void ODWaveTrackTaskQueue::ReplaceWaveTrack(WaveTrack* oldTrack, WaveTrack* newTrack)
|
||||
void ODWaveTrackTaskQueue::ReplaceWaveTrack(Track *oldTrack, Track *newTrack)
|
||||
{
|
||||
if(oldTrack)
|
||||
{
|
||||
mTasksMutex.Lock();
|
||||
for(unsigned int i=0;i<mTasks.size();i++)
|
||||
mTasks[i]->ReplaceWaveTrack(oldTrack,newTrack);
|
||||
mTasks[i]->ReplaceWaveTrack( oldTrack, newTrack );
|
||||
mTasksMutex.Unlock();
|
||||
|
||||
mTracksMutex.Lock();
|
||||
for(unsigned int i=0;i<mTracks.size();i++)
|
||||
if(mTracks[i]==oldTrack)
|
||||
mTracks[i]=newTrack;
|
||||
mTracks[i] = static_cast<WaveTrack*>( newTrack );
|
||||
mTracksMutex.Unlock();
|
||||
}
|
||||
}
|
||||
|
@@ -26,6 +26,7 @@ tasks associated with a WaveTrack.
|
||||
#include <vector>
|
||||
#include "ODTaskThread.h"
|
||||
#include <wx/wx.h>
|
||||
class Track;
|
||||
class WaveTrack;
|
||||
class ODTask;
|
||||
/// A class representing a modular task to be used with the On-Demand structures.
|
||||
@@ -52,7 +53,7 @@ class ODWaveTrackTaskQueue final
|
||||
void DemandTrackUpdate(WaveTrack* track, double seconds);
|
||||
|
||||
///replaces all instances of a WaveTrack within this task with another.
|
||||
void ReplaceWaveTrack(WaveTrack* oldTrack,WaveTrack* newTrack);
|
||||
void ReplaceWaveTrack(Track *oldTrack, Track *newTrack);
|
||||
|
||||
//if the wavetrack is in this queue, and is not the only wavetrack, clones the tasks and schedules it.
|
||||
void MakeWaveTrackIndependent(WaveTrack* track);
|
||||
|
Reference in New Issue
Block a user