diff --git a/headers/private/media/DataExchange.h b/headers/private/media/DataExchange.h index 63f1d4659f..84f2aaa6a3 100644 --- a/headers/private/media/DataExchange.h +++ b/headers/private/media/DataExchange.h @@ -111,7 +111,6 @@ enum { NODE_SET_TIMESOURCE, NODE_REQUEST_COMPLETED, NODE_FINAL_RELEASE, - NODE_PUBLISH_CONNECTIONS, NODE_MESSAGE_END, CONSUMER_MESSAGE_START = 0x300, diff --git a/src/kits/media/MediaRoster.cpp b/src/kits/media/MediaRoster.cpp index 10cbf4ba37..c72134f659 100644 --- a/src/kits/media/MediaRoster.cpp +++ b/src/kits/media/MediaRoster.cpp @@ -1554,25 +1554,6 @@ BMediaRosterEx::RegisterNode(BMediaNode * node, media_addon_id addonid, int32 fl ts->FinishCreate(); } - // XXX XXX XXX - // Calling GetAllOutputs and GetAllInputs here, - // followed by PublishOutputs and PublishInputs, - // does not work, it is too early, and in some - // cases it will deadlock the node control thread. - - // Posting a message to the roster thread here - // is also to early, the multi_audio add-on will - // no list any inputs - // XXX XXX XXX - - - BMessage msg(NODE_PUBLISH_CONNECTIONS); - media_node tempnode; - tempnode = node->Node(); - msg.AddData("node", B_RAW_TYPE, &tempnode, sizeof(tempnode)); - PostMessage(&msg); - -/* // register existing inputs and outputs with the // media_server, this allows GetLiveNodes() to work // with created, but unconnected nodes. @@ -1580,12 +1561,13 @@ BMediaRosterEx::RegisterNode(BMediaNode * node, media_addon_id addonid, int32 fl List list; if (B_OK == GetAllOutputs(node->Node(), &list)) PublishOutputs(node->Node(), &list); - } else if (node->Kinds() & B_BUFFER_CONSUMER) { + } + if (node->Kinds() & B_BUFFER_CONSUMER) { List list; if (B_OK == GetAllInputs(node->Node(), &list)) PublishInputs(node->Node(), &list); } -*/ + BPrivate::media::notifications::NodesCreated(&reply.nodeid, 1); /* TRACE("BMediaRoster::RegisterNode: registered node name '%s', id %ld, addon %ld, flavor %ld\n", node->Name(), node->ID(), addon_id, addon_flavor_id); @@ -1596,7 +1578,6 @@ BMediaRosterEx::RegisterNode(BMediaNode * node, media_addon_id addonid, int32 fl TRACE("BMediaRoster::RegisterNode: node fControllableThis %p\n", node->fControllableThis); TRACE("BMediaRoster::RegisterNode: node fTimeSourceThis %p\n", node->fTimeSourceThis); */ - return B_OK; } @@ -2462,34 +2443,6 @@ BMediaRoster::MessageReceived(BMessage * message) message->SendReply(&pong, static_cast(NULL), 2000000); return; } - - case NODE_PUBLISH_CONNECTIONS: - { - const void *data; - ssize_t numBytes; - media_node node; - - printf("NODE_PUBLISH_CONNECTIONS enter\n"); - - message->FindData("node", B_RAW_TYPE, &data, &numBytes); - node = *(const media_node *)data; - - // register existing inputs and outputs with the - // media_server, this allows GetLiveNodes() to work - // with created, but unconnected nodes. - if (node.kind & B_BUFFER_PRODUCER) { - List outputlist; - if (B_OK == MediaRosterEx(this)->GetAllOutputs(node, &outputlist)) - MediaRosterEx(this)->PublishOutputs(node, &outputlist); - } - if (node.kind & B_BUFFER_CONSUMER) { - List inputlist; - if (B_OK == MediaRosterEx(this)->GetAllInputs(node, &inputlist)) - MediaRosterEx(this)->PublishInputs(node, &inputlist); - } - printf("NODE_PUBLISH_CONNECTIONS leave\n"); - return; - } case NODE_FINAL_RELEASE: { diff --git a/src/servers/media/DefaultManager.cpp b/src/servers/media/DefaultManager.cpp index 3b2e856e08..82e5e208dc 100644 --- a/src/servers/media/DefaultManager.cpp +++ b/src/servers/media/DefaultManager.cpp @@ -8,11 +8,8 @@ #include #include #include "DefaultManager.h" -#include "NodeManager.h" #include "debug.h" -extern NodeManager *gNodeManager; - /* no locking used in this file, we assume that the caller (NodeManager) does it. */ @@ -161,11 +158,7 @@ DefaultManager::RescanThread() // We do not search for the system time source, // it should already exist ASSERT(fSystemTimeSource != -1); -/* -//for (int i = 0; i < 10; i++) { // XXX ugly workaround - gNodeManager->UpdateNodeConnections(); // XXX ugly workaround - snooze(1000000); // XXX ugly workaround -*/ + if (fPhysicalVideoOut == -1) FindPhysicalVideoOut(); if (fPhysicalVideoIn == -1) @@ -176,7 +169,6 @@ DefaultManager::RescanThread() FindPhysicalAudioIn(); if (fAudioMixer == -1) FindAudioMixer(); -//} // The normal time source is searched for after the // Physical Audio Out has been created. @@ -383,6 +375,11 @@ DefaultManager::ConnectMixerToOutput() memset(&format, 0, sizeof(format)); format.type = B_MEDIA_RAW_AUDIO; + format.u.raw_audio.frame_rate = 44100; + format.u.raw_audio.channel_count = 2; + format.u.raw_audio.format = 0x2; + + //roster->GetFormatFor(input, &format); rv = roster->Connect(output.source, input.destination, &format, &output, &input); if (rv != B_OK) { @@ -404,6 +401,7 @@ DefaultManager::ConnectMixerToOutput() finish: roster->ReleaseNode(mixer); roster->ReleaseNode(soundcard); + roster->ReleaseNode(timesource); return rv; } diff --git a/src/servers/media/NodeManager.cpp b/src/servers/media/NodeManager.cpp index a55d0c8674..1e7cc70c88 100644 --- a/src/servers/media/NodeManager.cpp +++ b/src/servers/media/NodeManager.cpp @@ -543,28 +543,6 @@ NodeManager::GetLiveNodes(BMessage *msg) return B_OK; } -void -NodeManager::UpdateNodeConnections() -{ - // XXX this is only a workaround because the multi_audio - // XXX addon does not publish inputs right after creation :( - BAutolock lock(fLocker); - - registered_node *rn; - for (fRegisteredNodeMap->Rewind(); fRegisteredNodeMap->GetNext(&rn); ) { - - BMessage msg(NODE_PUBLISH_CONNECTIONS); - media_node tempnode; - tempnode.node = rn->nodeid; - tempnode.port = rn->port; - tempnode.kind = rn->kinds; - msg.AddData("node", B_RAW_TYPE, &tempnode, sizeof(tempnode)); - - gAppManager->SendMessage(rn->team, &msg); - } -} - - /********************************************************************** * Registration of BMediaAddOns **********************************************************************/ diff --git a/src/servers/media/NodeManager.h b/src/servers/media/NodeManager.h index caaa6c0299..e0f7b5c42f 100644 --- a/src/servers/media/NodeManager.h +++ b/src/servers/media/NodeManager.h @@ -105,8 +105,6 @@ public: void CleanupTeam(team_id team); - void UpdateNodeConnections(); - private: media_addon_id fNextAddOnID; media_node_id fNextNodeID;