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 {