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);