[haiku-commits] haiku: hrev51827 - src/kits/media/experimental headers/private/media/experimental

  • From: b.vitruvio@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 1 Mar 2018 22:08:24 -0500 (EST)

hrev51827 adds 7 changesets to branch 'master'
old head: f015d06b8412d8e92f271659a35e1df0bfcb36d8
new head: 65a94fbbafd9c78839969cf67f9cd8abf61cde14
overview: 
http://cgit.haiku-os.org/haiku/log/?qt=range&q=65a94fbbafd9+%5Ef015d06b8412

----------------------------------------------------------------------------

9391114b8eee: MediaClientNode: Remove unuseful Disconnect calls
  
  * While those calls were unharmful, better to remove them.

d717df83d391: MediaClientNode::GetLatency use base version

83bcc405f3eb: MediaClientDefs: Cleanup unneded methods

1c15261f5aa8: MediaConnection: Add connection name handling

a6ac14c71c54: MediaClient: Add ClientRegistered callback

852b62956bfd: MediaClient: Rename IsRunning to IsStarted

65a94fbbafd9: MediaConnection: Fix Disconnect bug

                                        [ Barrett17 <b.vitruvio@xxxxxxxxx> ]

----------------------------------------------------------------------------

7 files changed, 76 insertions(+), 64 deletions(-)
headers/private/media/experimental/MediaClient.h |  7 ++--
.../private/media/experimental/MediaClientDefs.h |  4 --
.../private/media/experimental/MediaConnection.h |  7 ++--
src/kits/media/experimental/MediaClient.cpp      | 29 +++++++++-----
src/kits/media/experimental/MediaClientDefs.cpp  | 25 ++----------
src/kits/media/experimental/MediaClientNode.cpp  | 42 +++++++++++++-------
src/kits/media/experimental/MediaConnection.cpp  | 26 ++++++++----

############################################################################

Commit:      9391114b8eee5239a1d14aaad2338cc05e5365fd
URL:         http://cgit.haiku-os.org/haiku/commit/?id=9391114b8eee
Author:      Barrett17 <b.vitruvio@xxxxxxxxx>
Date:        Thu Mar  1 21:55:00 2018 UTC

MediaClientNode: Remove unuseful Disconnect calls

* While those calls were unharmful, better to remove them.

----------------------------------------------------------------------------

diff --git a/src/kits/media/experimental/MediaClientNode.cpp 
b/src/kits/media/experimental/MediaClientNode.cpp
index 5be1fb94b9..cb98ee20f5 100755
--- a/src/kits/media/experimental/MediaClientNode.cpp
+++ b/src/kits/media/experimental/MediaClientNode.cpp
@@ -242,10 +242,8 @@ BMediaClientNode::Disconnected(const media_source& source,
        if (conn == NULL)
                return;
 
-       if (conn->_Source() == source) {
-               conn->Disconnect();
+       if (conn->_Source() == source)
                conn->Disconnected();
-       }
 }
 
 
@@ -419,11 +417,9 @@ BMediaClientNode::Connect(status_t status, const 
media_source& source,
        if (conn == NULL)
                return;
 
-       // Reset the connection to reuse it
-       if (status != B_OK) {
-               conn->Disconnect();
+       // Connection failed, return.
+       if (status != B_OK)
                return;
-       }
 
        conn->fConnection.destination = dest;
        conn->fConnection.format = format;
@@ -451,10 +447,9 @@ BMediaClientNode::Disconnect(const media_source& source,
        if (conn == NULL)
                return;
 
-       if (conn->_Destination() == dest) {
-               conn->Disconnect();
+       if (conn->_Destination() == dest)
                conn->Disconnected();
-       }
+
 }
 
 

############################################################################

Commit:      d717df83d391eeb3af26c2162471af001d4e5ad3
URL:         http://cgit.haiku-os.org/haiku/commit/?id=d717df83d391
Author:      Barrett17 <b.vitruvio@xxxxxxxxx>
Date:        Thu Mar  1 21:56:04 2018 UTC

MediaClientNode::GetLatency use base version

----------------------------------------------------------------------------

diff --git a/src/kits/media/experimental/MediaClientNode.cpp 
b/src/kits/media/experimental/MediaClientNode.cpp
index cb98ee20f5..971e7cb4b7 100755
--- a/src/kits/media/experimental/MediaClientNode.cpp
+++ b/src/kits/media/experimental/MediaClientNode.cpp
@@ -470,9 +470,7 @@ BMediaClientNode::GetLatency(bigtime_t* outLatency)
 {
        CALLED();
 
-       // TODO: finish latency handling
-       *outLatency = 1000;
-       return B_OK;
+       return BBufferProducer::GetLatency(outLatency);
 }
 
 

############################################################################

Commit:      83bcc405f3eb59e4cacc9039d0332d63548aec3d
URL:         http://cgit.haiku-os.org/haiku/commit/?id=83bcc405f3eb
Author:      Barrett17 <b.vitruvio@xxxxxxxxx>
Date:        Thu Mar  1 23:52:33 2018 UTC

MediaClientDefs: Cleanup unneded methods

----------------------------------------------------------------------------

diff --git a/headers/private/media/experimental/MediaClientDefs.h 
b/headers/private/media/experimental/MediaClientDefs.h
index c106ade6a9..e91584da17 100644
--- a/headers/private/media/experimental/MediaClientDefs.h
+++ b/headers/private/media/experimental/MediaClientDefs.h
@@ -74,11 +74,7 @@ private:
        media_input                                     _BuildMediaInput() 
const;
        media_output                            _BuildMediaOutput() const;
 
-       const media_source&                     _Source() const;
-       const media_destination&        _Destination() const;
-
        media_node                                      _Node() const;
-       media_node                                      _RemoteNode() const;
 
        media_connection_id                     id;
 
diff --git a/src/kits/media/experimental/MediaClient.cpp 
b/src/kits/media/experimental/MediaClient.cpp
index 7bda5af4d4..8d425f1f9d 100755
--- a/src/kits/media/experimental/MediaClient.cpp
+++ b/src/kits/media/experimental/MediaClient.cpp
@@ -289,7 +289,7 @@ BMediaClient::FindInput(const media_connection& input) const
        if (!input.IsInput())
                return NULL;
 
-       return _FindInput(input._Destination());
+       return _FindInput(input.destination);
 }
 
 
@@ -301,7 +301,7 @@ BMediaClient::FindOutput(const media_connection& output) 
const
        if (!output.IsOutput())
                return NULL;
 
-       return _FindOutput(output._Source());
+       return _FindOutput(output.source);
 }
 
 
@@ -321,7 +321,7 @@ BMediaClient::Start()
 
        status_t err = B_OK;
        for (int32 i = 0; i < CountOutputs(); i++) {
-               media_node remoteNode = OutputAt(i)->Connection()._RemoteNode();
+               media_node remoteNode = OutputAt(i)->Connection().remote_node;
                if (remoteNode.kind & B_TIME_SOURCE)
                        err = BMediaRoster::CurrentRoster()->StartTimeSource(
                                remoteNode, BTimeSource::RealTime());
@@ -491,7 +491,7 @@ BMediaClient::_ConnectInput(BMediaOutput* output,
 {
        CALLED();
 
-       if (input._Destination() == media_destination::null)
+       if (input.destination == media_destination::null)
                return B_MEDIA_BAD_DESTINATION;
 
        media_output ourOutput = output->Connection()._BuildMediaOutput();
@@ -521,7 +521,7 @@ BMediaClient::_ConnectOutput(BMediaInput* input,
 {
        CALLED();
 
-       if (output._Source() == media_source::null)
+       if (output.source == media_source::null)
                return B_MEDIA_BAD_SOURCE;
 
        media_input ourInput = input->Connection()._BuildMediaInput();
@@ -554,12 +554,12 @@ BMediaClient::_DisconnectConnection(BMediaConnection* 
conn)
        const media_connection& handle = conn->Connection();
        if (handle.IsInput()) {
                return BMediaRoster::CurrentRoster()->Disconnect(
-                       handle._RemoteNode().node, handle._Source(),
-                       handle._Node().node, handle._Destination());
+                       handle.remote_node.node, handle.source,
+                       handle._Node().node, handle.destination);
        } else {
                return BMediaRoster::CurrentRoster()->Disconnect(
-                       handle._Node().node, handle._Source(),
-                       handle._RemoteNode().node, handle._Destination());
+                       handle._Node().node, handle.source,
+                       handle.remote_node.node, handle.destination);
        }
 
        return B_ERROR;
diff --git a/src/kits/media/experimental/MediaClientDefs.cpp 
b/src/kits/media/experimental/MediaClientDefs.cpp
index 8bbd44b162..01de742b70 100644
--- a/src/kits/media/experimental/MediaClientDefs.cpp
+++ b/src/kits/media/experimental/MediaClientDefs.cpp
@@ -82,27 +82,6 @@ media_connection::_BuildMediaOutput() const
 }
 
 
-const media_source&
-media_connection::_Source() const
-{
-       return source;
-}
-
-
-const media_destination&
-media_connection::_Destination() const
-{
-       return destination;
-}
-
-
-media_node
-media_connection::_RemoteNode() const
-{
-       return remote_node;
-}
-
-
 media_node
 media_connection::_Node() const
 {
diff --git a/src/kits/media/experimental/MediaConnection.cpp 
b/src/kits/media/experimental/MediaConnection.cpp
index 525a41c64d..5d667fb4e0 100644
--- a/src/kits/media/experimental/MediaConnection.cpp
+++ b/src/kits/media/experimental/MediaConnection.cpp
@@ -136,14 +136,14 @@ BMediaConnection::_ConnectionRegistered(BMediaClient* 
owner,
 const media_source&
 BMediaConnection::_Source() const
 {
-       return fConnection._Source();
+       return fConnection.source;
 }
 
 
 const media_destination&
 BMediaConnection::_Destination() const
 {
-       return fConnection._Destination();
+       return fConnection.destination;
 }
 
 

############################################################################

Commit:      1c15261f5aa8c6251d2e13def6be6244e65fdfc0
URL:         http://cgit.haiku-os.org/haiku/commit/?id=1c15261f5aa8
Author:      Barrett17 <b.vitruvio@xxxxxxxxx>
Date:        Fri Mar  2 02:18:26 2018 UTC

MediaConnection: Add connection name handling

----------------------------------------------------------------------------

diff --git a/headers/private/media/experimental/MediaConnection.h 
b/headers/private/media/experimental/MediaConnection.h
index 82133dc392..73dd7c57a5 100644
--- a/headers/private/media/experimental/MediaConnection.h
+++ b/headers/private/media/experimental/MediaConnection.h
@@ -67,7 +67,8 @@ public:
 
 protected:
                                                                        
BMediaConnection(
-                                                                               
media_connection_kinds kinds);
+                                                                               
media_connection_kinds kinds,
+                                                                               
const char* name = NULL);
        virtual                                                 
~BMediaConnection();
 
 private:
@@ -115,7 +116,7 @@ private:
 
 class BMediaInput : public virtual BMediaConnection {
 protected:
-                                                                       
BMediaInput();
+                                                                       
BMediaInput(const char* name = NULL);
        virtual                                                 ~BMediaInput();
 
        // Callbacks
@@ -147,7 +148,7 @@ private:
 
 class BMediaOutput : public virtual BMediaConnection {
 protected:
-                                                                       
BMediaOutput();
+                                                                       
BMediaOutput(const char* name = NULL);
        virtual                                                 ~BMediaOutput();
 
        // Callbacks
diff --git a/src/kits/media/experimental/MediaClientDefs.cpp 
b/src/kits/media/experimental/MediaClientDefs.cpp
index 01de742b70..28ae1c84b8 100644
--- a/src/kits/media/experimental/MediaClientDefs.cpp
+++ b/src/kits/media/experimental/MediaClientDefs.cpp
@@ -66,6 +66,7 @@ media_connection::_BuildMediaInput() const
        input.source = source;
        input.destination = destination;
        input.format = format;
+       strcpy(input.name, name);
        return input;
 }
 
@@ -78,6 +79,7 @@ media_connection::_BuildMediaOutput() const
        output.source = source;
        output.destination = destination;
        output.format = format;
+       strcpy(output.name, name);
        return output;
 }
 
diff --git a/src/kits/media/experimental/MediaClientNode.cpp 
b/src/kits/media/experimental/MediaClientNode.cpp
index 971e7cb4b7..51629df6fb 100755
--- a/src/kits/media/experimental/MediaClientNode.cpp
+++ b/src/kits/media/experimental/MediaClientNode.cpp
@@ -400,7 +400,7 @@ BMediaClientNode::PrepareToConnect(const media_source& 
source,
                return err;
 
        *out_source = conn->_Source();
-       strcpy(name, Name());
+       strcpy(name, conn->Name());
 
        return B_OK;
 }
diff --git a/src/kits/media/experimental/MediaConnection.cpp 
b/src/kits/media/experimental/MediaConnection.cpp
index 5d667fb4e0..b0e7ce6801 100644
--- a/src/kits/media/experimental/MediaConnection.cpp
+++ b/src/kits/media/experimental/MediaConnection.cpp
@@ -10,7 +10,8 @@
 #include "debug.h"
 
 
-BMediaConnection::BMediaConnection(media_connection_kinds kinds)
+BMediaConnection::BMediaConnection(media_connection_kinds kinds,
+       const char* name)
        :
        fOwner(NULL),
        fBind(NULL)
@@ -20,6 +21,8 @@ BMediaConnection::BMediaConnection(media_connection_kinds 
kinds)
        fConnection.kinds = kinds;
        fConnection.id = -1;
        //fConnection.client = media_client::null;
+       if (name != NULL)
+               strcpy(fConnection.name, name);
 }
 
 
@@ -44,6 +47,13 @@ BMediaConnection::Client() const
 }
 
 
+const char*
+BMediaConnection::Name() const
+{
+       return fConnection.name;
+}
+
+
 bool
 BMediaConnection::HasBinding() const
 {
@@ -160,9 +170,9 @@ void BMediaConnection::_ReservedMediaConnection9() {}
 void BMediaConnection::_ReservedMediaConnection10() {}
 
 
-BMediaInput::BMediaInput()
+BMediaInput::BMediaInput(const char* name)
        :
-       BMediaConnection(B_MEDIA_INPUT)
+       BMediaConnection(B_MEDIA_INPUT, name)
 {
 }
 
@@ -207,9 +217,9 @@ void BMediaInput::_ReservedMediaInput9() {}
 void BMediaInput::_ReservedMediaInput10() {}
 
 
-BMediaOutput::BMediaOutput()
+BMediaOutput::BMediaOutput(const char* name)
        :
-       BMediaConnection(B_MEDIA_OUTPUT),
+       BMediaConnection(B_MEDIA_OUTPUT, name),
        fBufferGroup(NULL)
 {
 }

############################################################################

Commit:      a6ac14c71c540cb4fb356be6ed0c8cd8fb9cd555
URL:         http://cgit.haiku-os.org/haiku/commit/?id=a6ac14c71c54
Author:      Barrett17 <b.vitruvio@xxxxxxxxx>
Date:        Fri Mar  2 02:34:25 2018 UTC

MediaClient: Add ClientRegistered callback

----------------------------------------------------------------------------

diff --git a/headers/private/media/experimental/MediaClient.h 
b/headers/private/media/experimental/MediaClient.h
index ecde5d8b9e..c86356b1e1 100755
--- a/headers/private/media/experimental/MediaClient.h
+++ b/headers/private/media/experimental/MediaClient.h
@@ -53,6 +53,9 @@ public:
 
                        status_t                                InitCheck() 
const;
 
+       // Called when the node is correctly registered to the media services.
+       virtual void                                    ClientRegistered();
+
        // TODO: Should allow BControllable capabilities
 
        // When those functions return, the BMediaConnection is added to the
diff --git a/src/kits/media/experimental/MediaClient.cpp 
b/src/kits/media/experimental/MediaClient.cpp
index 8d425f1f9d..652b75fa37 100755
--- a/src/kits/media/experimental/MediaClient.cpp
+++ b/src/kits/media/experimental/MediaClient.cpp
@@ -314,6 +314,13 @@ BMediaClient::IsRunning() const
 }
 
 
+void
+BMediaClient::ClientRegistered()
+{
+       CALLED();
+}
+
+
 status_t
 BMediaClient::Start()
 {
diff --git a/src/kits/media/experimental/MediaClientNode.cpp 
b/src/kits/media/experimental/MediaClientNode.cpp
index 51629df6fb..9b207c0c56 100755
--- a/src/kits/media/experimental/MediaClientNode.cpp
+++ b/src/kits/media/experimental/MediaClientNode.cpp
@@ -59,6 +59,8 @@ BMediaClientNode::NodeRegistered()
 {
        CALLED();
 
+       fOwner->ClientRegistered();
+
        Run();
 }
 

############################################################################

Commit:      852b62956bfd257071fc88286b99110652271f64
URL:         http://cgit.haiku-os.org/haiku/commit/?id=852b62956bfd
Author:      Barrett17 <b.vitruvio@xxxxxxxxx>
Date:        Fri Mar  2 02:35:14 2018 UTC

MediaClient: Rename IsRunning to IsStarted

----------------------------------------------------------------------------

diff --git a/headers/private/media/experimental/MediaClient.h 
b/headers/private/media/experimental/MediaClient.h
index c86356b1e1..056bfb85b5 100755
--- a/headers/private/media/experimental/MediaClient.h
+++ b/headers/private/media/experimental/MediaClient.h
@@ -107,9 +107,7 @@ public:
                        BMediaOutput*                   FindOutput(
                                                                                
const media_connection& output) const;
 
-                       bool                                    IsRunning() 
const;
-       // Called when the node is correctly registered to the media services.
-       //virtual void                                  ReadyToRun() const;
+                       bool                                    IsStarted() 
const;
 
        // NOTE: The following functions aren't provided to be inherited,
        // always use the protected HandleSomething version. This is because
diff --git a/src/kits/media/experimental/MediaClient.cpp 
b/src/kits/media/experimental/MediaClient.cpp
index 652b75fa37..9d5f3e22dc 100755
--- a/src/kits/media/experimental/MediaClient.cpp
+++ b/src/kits/media/experimental/MediaClient.cpp
@@ -306,7 +306,7 @@ BMediaClient::FindOutput(const media_connection& output) 
const
 
 
 bool
-BMediaClient::IsRunning() const
+BMediaClient::IsStarted() const
 {
        CALLED();
 
@@ -435,7 +435,7 @@ BMediaClient::_Deinit()
 {
        CALLED();
 
-       if (IsRunning())
+       if (IsStarted())
                Stop();
 
        Disconnect();
diff --git a/src/kits/media/experimental/MediaClientDefs.cpp 
b/src/kits/media/experimental/MediaClientDefs.cpp
index 28ae1c84b8..8b77275e65 100644
--- a/src/kits/media/experimental/MediaClientDefs.cpp
+++ b/src/kits/media/experimental/MediaClientDefs.cpp
@@ -6,6 +6,8 @@
 #include <MediaClient.h>
 #include <MediaConnection.h>
 
+#include <string.h>
+
 #include "debug.h"
 
 
diff --git a/src/kits/media/experimental/MediaConnection.cpp 
b/src/kits/media/experimental/MediaConnection.cpp
index b0e7ce6801..6182607bc9 100644
--- a/src/kits/media/experimental/MediaConnection.cpp
+++ b/src/kits/media/experimental/MediaConnection.cpp
@@ -5,6 +5,8 @@
 
 #include <MediaConnection.h>
 
+#include <string.h>
+
 #include "MediaClientNode.h"
 
 #include "debug.h"

############################################################################

Revision:    hrev51827
Commit:      65a94fbbafd9c78839969cf67f9cd8abf61cde14
URL:         http://cgit.haiku-os.org/haiku/commit/?id=65a94fbbafd9
Author:      Barrett17 <b.vitruvio@xxxxxxxxx>
Date:        Fri Mar  2 02:59:40 2018 UTC

MediaConnection: Fix Disconnect bug

----------------------------------------------------------------------------

diff --git a/src/kits/media/experimental/MediaClientNode.cpp 
b/src/kits/media/experimental/MediaClientNode.cpp
index 9b207c0c56..73ebe98ff3 100755
--- a/src/kits/media/experimental/MediaClientNode.cpp
+++ b/src/kits/media/experimental/MediaClientNode.cpp
@@ -7,6 +7,7 @@
 
 #include <MediaClient.h>
 #include <MediaConnection.h>
+#include <MediaRoster.h>
 #include <scheduler.h>
 #include <TimeSource.h>
 
@@ -227,6 +228,14 @@ BMediaClientNode::Connected(const media_source& source,
        conn->fConnection.source = source;
        conn->fConnection.format = format;
 
+       // Retrieve the node without using GetNodeFor that's pretty inefficient.
+       // Unfortunately we don't have an alternative which doesn't require us
+       // to release the cloned node.
+       // However, our node will not have flags set. Keep in mind this.
+       conn->fConnection.remote_node.node
+               = BMediaRoster::CurrentRoster()->NodeIDFor(source.port);
+       conn->fConnection.remote_node.port = source.port;
+
        conn->Connected(format);
 
        *outInput = conn->fConnection._BuildMediaInput();
@@ -426,7 +435,15 @@ BMediaClientNode::Connect(status_t status, const 
media_source& source,
        conn->fConnection.destination = dest;
        conn->fConnection.format = format;
 
-       strcpy(name, Name());
+       // Retrieve the node without using GetNodeFor that's pretty inefficient.
+       // Unfortunately we don't have an alternative which doesn't require us
+       // to release the cloned node.
+       // However, our node will not have flags set. Keep in mind this.
+       conn->fConnection.remote_node.node
+               = BMediaRoster::CurrentRoster()->NodeIDFor(dest.port);
+       conn->fConnection.remote_node.port = dest.port;
+
+       strcpy(name, conn->Name());
 
        // TODO: add correct latency estimate
        SetEventLatency(1000);


Other related posts:

  • » [haiku-commits] haiku: hrev51827 - src/kits/media/experimental headers/private/media/experimental - b . vitruvio