Merge branch 'master' of https://github.com/highfidelity/hifi into lasagna-not-spaghetti

This commit is contained in:
Stephen Birarda 2014-12-16 10:47:45 -08:00
commit 1cf88e7666
3 changed files with 14 additions and 5 deletions

View file

@ -450,7 +450,9 @@ void Audio::start() {
qDebug() << "Unable to set up audio output because of a problem with output format."; qDebug() << "Unable to set up audio output because of a problem with output format.";
} }
_inputFrameBuffer.initialize( _inputFormat.channelCount(), _audioInput->bufferSize() * 8 ); if (_audioInput) {
_inputFrameBuffer.initialize( _inputFormat.channelCount(), _audioInput->bufferSize() * 8 );
}
_inputGain.initialize(); _inputGain.initialize();
_sourceGain.initialize(); _sourceGain.initialize();
_noiseSource.initialize(); _noiseSource.initialize();
@ -1954,6 +1956,9 @@ int Audio::calculateNumberOfFrameSamples(int numBytes) const {
} }
float Audio::getAudioOutputMsecsUnplayed() const { float Audio::getAudioOutputMsecsUnplayed() const {
if (!_audioOutput) {
return 0.0f;
}
int bytesAudioOutputUnplayed = _audioOutput->bufferSize() - _audioOutput->bytesFree(); int bytesAudioOutputUnplayed = _audioOutput->bufferSize() - _audioOutput->bytesFree();
float msecsAudioOutputUnplayed = bytesAudioOutputUnplayed / (float)_outputFormat.bytesForDuration(USECS_PER_MSEC); float msecsAudioOutputUnplayed = bytesAudioOutputUnplayed / (float)_outputFormat.bytesForDuration(USECS_PER_MSEC);
return msecsAudioOutputUnplayed; return msecsAudioOutputUnplayed;

View file

@ -62,7 +62,7 @@ public:
float getNextOutputFrameLoudness() const; float getNextOutputFrameLoudness() const;
int samplesAvailable() const; int samplesAvailable() const;
int framesAvailable() const { return samplesAvailable() / _numFrameSamples; } int framesAvailable() const { return (_numFrameSamples == 0) ? 0 : samplesAvailable() / _numFrameSamples; }
int getNumFrameSamples() const { return _numFrameSamples; } int getNumFrameSamples() const { return _numFrameSamples; }

View file

@ -28,9 +28,13 @@ ResourceCache::ResourceCache(QObject* parent) :
} }
ResourceCache::~ResourceCache() { ResourceCache::~ResourceCache() {
// make sure our unused resources know we're out of commission // the unused resources may themselves reference resources that will be added to the unused
foreach (const QSharedPointer<Resource>& resource, _unusedResources) { // list on destruction, so keep clearing until there are no references left
resource->setCache(NULL); while (!_unusedResources.isEmpty()) {
foreach (const QSharedPointer<Resource>& resource, _unusedResources) {
resource->setCache(NULL);
}
_unusedResources.clear();
} }
} }