From ff56eda570eb9bdbd482ab9cca02ed19cea4d59e Mon Sep 17 00:00:00 2001 From: Barrett17 Date: Tue, 27 Feb 2018 01:29:20 +0100 Subject: [PATCH] MediaConnection: Move buffer management on producer side --- .../media/experimental/MediaConnection.h | 6 +++-- .../media/experimental/MediaConnection.cpp | 25 +++++++++++-------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/headers/private/media/experimental/MediaConnection.h b/headers/private/media/experimental/MediaConnection.h index bc46acd51f..9498e1eaf2 100644 --- a/headers/private/media/experimental/MediaConnection.h +++ b/headers/private/media/experimental/MediaConnection.h @@ -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(); diff --git a/src/kits/media/experimental/MediaConnection.cpp b/src/kits/media/experimental/MediaConnection.cpp index ec5144d4af..5a3423fda3 100644 --- a/src/kits/media/experimental/MediaConnection.cpp +++ b/src/kits/media/experimental/MediaConnection.cpp @@ -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 {