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];
|
BBuffer *outputBuffer = groupedBuffers[0];
|
||||||
groupedBuffers[0] = NULL;
|
groupedBuffers[0] = NULL;
|
||||||
|
|
||||||
map<int32, BBuffer*>::iterator each;
|
std::map<int32, BBuffer*>::iterator each;
|
||||||
|
|
||||||
for (each=groupedBuffers.begin(); each != groupedBuffers.end(); each++) {
|
for (each=groupedBuffers.begin(); each != groupedBuffers.end(); each++) {
|
||||||
if (each->second != outputBuffer) {
|
if (each->second != outputBuffer) {
|
||||||
@@ -86,3 +86,17 @@ BufferMixer::AddBuffer(int32 id, BBuffer *buffer, bool isPrimary) {
|
|||||||
oldBuffer->Recycle();
|
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();
|
bool isBufferAvailable();
|
||||||
BBuffer *GetOutputBuffer();
|
BBuffer *GetOutputBuffer();
|
||||||
void AddBuffer(int32 id, BBuffer *buffer, bool isPrimary);
|
void AddBuffer(int32 id, BBuffer *buffer, bool isPrimary);
|
||||||
|
void RemoveBuffer(int32 id);
|
||||||
void Merge(BBuffer *input, BBuffer *output);
|
void Merge(BBuffer *input, BBuffer *output);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -203,6 +203,8 @@ void VideoMixerNode::Disconnected(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bufferMixer.RemoveBuffer(input->destination.id);
|
||||||
|
|
||||||
// disconnected but not deleted (important)
|
// disconnected but not deleted (important)
|
||||||
input->source = media_source::null;
|
input->source = media_source::null;
|
||||||
GetInputFormat(&input->format);
|
GetInputFormat(&input->format);
|
||||||
|
|||||||
Reference in New Issue
Block a user