MediaConnection: Move buffer management on producer side

This commit is contained in:
Barrett17
2018-02-27 01:50:09 +01:00
parent 54312619ab
commit ff56eda570
2 changed files with 18 additions and 13 deletions
@@ -89,8 +89,6 @@ private:
// see BMediaClient::Bind.
BMediaConnection* fBind;
BBufferGroup* fBufferGroup;
bool fConnected;
virtual void _ReservedMediaConnection0();
@@ -164,6 +162,8 @@ protected:
// you are doing.
virtual status_t SendBuffer(BBuffer* buffer);
virtual void Disconnected();
private:
media_output _MediaOutput() const;
@@ -174,6 +174,8 @@ private:
bool fEnabled;
size_t fFramesSent;
BBufferGroup* fBufferGroup;
virtual void _ReservedMediaOutput0();
virtual void _ReservedMediaOutput1();
virtual void _ReservedMediaOutput2();
+14 -11
View File
@@ -13,8 +13,7 @@
BMediaConnection::BMediaConnection(media_connection_kinds kinds)
:
fOwner(NULL),
fBind(NULL),
fBufferGroup(NULL)
fBind(NULL)
{
CALLED();
@@ -95,14 +94,7 @@ BMediaConnection::Disconnect()
{
CALLED();
status_t ret = fOwner->_DisconnectConnection(this);
if (ret != B_OK)
return ret;
delete fBufferGroup;
fBufferGroup = NULL;
return ret;
return fOwner->_DisconnectConnection(this);
}
@@ -238,7 +230,8 @@ void BMediaInput::_ReservedMediaInput10() {}
BMediaOutput::BMediaOutput()
:
BMediaConnection(B_MEDIA_OUTPUT)
BMediaConnection(B_MEDIA_OUTPUT),
fBufferGroup(NULL)
{
}
@@ -304,6 +297,16 @@ BMediaOutput::SendBuffer(BBuffer* buffer)
}
void
BMediaOutput::Disconnected()
{
delete fBufferGroup;
fBufferGroup = NULL;
BMediaConnection::Disconnected();
}
media_output
BMediaOutput::_MediaOutput() const
{