gcc4 fixes and add removal of buffer when source disconnected

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36932 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
David McPaul
2010-05-25 09:06:26 +00:00
parent a9139aa356
commit c436ab319d
3 changed files with 18 additions and 1 deletions
@@ -33,7 +33,7 @@ BufferMixer::GetOutputBuffer() {
BBuffer *outputBuffer = groupedBuffers[0];
groupedBuffers[0] = NULL;
map<int32, BBuffer*>::iterator each;
std::map<int32, BBuffer*>::iterator each;
for (each=groupedBuffers.begin(); each != groupedBuffers.end(); each++) {
if (each->second != outputBuffer) {
@@ -86,3 +86,17 @@ BufferMixer::AddBuffer(int32 id, BBuffer *buffer, bool isPrimary) {
oldBuffer->Recycle();
}
}
void
BufferMixer::RemoveBuffer(int32 id) {
BBuffer *oldBuffer;
if (id < groupedBuffers.size()) {
oldBuffer = groupedBuffers[id];
groupedBuffers[id] = NULL;
if (oldBuffer != NULL) {
oldBuffer->Recycle();
}
}
}
@@ -18,6 +18,7 @@ public:
bool isBufferAvailable();
BBuffer *GetOutputBuffer();
void AddBuffer(int32 id, BBuffer *buffer, bool isPrimary);
void RemoveBuffer(int32 id);
void Merge(BBuffer *input, BBuffer *output);
private:
@@ -203,6 +203,8 @@ void VideoMixerNode::Disconnected(
return;
}
bufferMixer.RemoveBuffer(input->destination.id);
// disconnected but not deleted (important)
input->source = media_source::null;
GetInputFormat(&input->format);