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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user