From 2bb039ccf5ac3fd9c3ab466881b36f8d24be3976 Mon Sep 17 00:00:00 2001 From: beveloper Date: Sun, 8 Dec 2002 23:53:06 +0000 Subject: [PATCH] changed use of debugging functions, map, list and stack git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2195 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/media/AppManager.cpp | 9 +-- src/servers/media/NodeManager.cpp | 78 +++++++++++++---------- src/servers/media/NotificationManager.cpp | 38 ++++++----- 3 files changed, 67 insertions(+), 58 deletions(-) diff --git a/src/servers/media/AppManager.cpp b/src/servers/media/AppManager.cpp index f2fa78bd88..17a62c430f 100644 --- a/src/servers/media/AppManager.cpp +++ b/src/servers/media/AppManager.cpp @@ -40,16 +40,17 @@ AppManager::~AppManager() bool AppManager::HasTeam(team_id team) { BAutolock lock(fLocker); - App app; - return fAppMap->Get(team, &app); + return fAppMap->Has(team); } status_t AppManager::RegisterTeam(team_id team, BMessenger messenger) { BAutolock lock(fLocker); TRACE("AppManager::RegisterTeam %ld\n", team); - if (HasTeam(team)) + if (HasTeam(team)) { + FATAL("Erorr: AppManager::RegisterTeam: team %ld already registered\n", team); return B_ERROR; + } App app; app.team = team; app.messenger = messenger; @@ -140,7 +141,7 @@ void AppManager::BigBrother() do { if (!fLocker->Lock()) break; - for (int32 i = 0; fAppMap->GetPointerAt(i, &app); i++) { + for (fAppMap->Rewind(); fAppMap->GetNext(&app); ) { reply.what = 0; status = app->messenger.SendMessage(&msg, &reply, 5000000, 2000000); if (status != B_OK || reply.what != 'PONG') { diff --git a/src/servers/media/NodeManager.cpp b/src/servers/media/NodeManager.cpp index c391a1d476..72200a2bb7 100644 --- a/src/servers/media/NodeManager.cpp +++ b/src/servers/media/NodeManager.cpp @@ -19,8 +19,8 @@ NodeManager::NodeManager() : { fLocker = new BLocker("node manager locker"); fDormantFlavorList = new List; - fAddonPathMap = new Map; - fRegisteredNodeMap = new Map; + fAddonPathMap = new Map; + fRegisteredNodeMap = new Map; } @@ -65,7 +65,7 @@ NodeManager::UnregisterNode(media_addon_id *addon_id, media_node_id nodeid, team bool b; registered_node *rn; TRACE("NodeManager::UnregisterNode enter: node %ld, team %ld\n", nodeid, team); - b = fRegisteredNodeMap->GetPointer(nodeid, &rn); + b = fRegisteredNodeMap->Get(nodeid, &rn); if (!b) { FATAL("!!! NodeManager::UnregisterNode: Error: couldn't finde node %ld (team %ld)\n", nodeid, team); return B_ERROR; @@ -93,14 +93,14 @@ NodeManager::IncrementGlobalRefCount(media_node_id nodeid, team_id team) registered_node *rn; bool b; TRACE("NodeManager::IncrementGlobalRefCount enter: node %ld, team %ld\n", nodeid, team); - b = fRegisteredNodeMap->GetPointer(nodeid, &rn); + b = fRegisteredNodeMap->Get(nodeid, &rn); if (!b) { FATAL("!!! NodeManager::IncrementGlobalRefCount: Error: node %ld not found\n", nodeid); return B_ERROR; } int32 *count; int32 debug_count; - b = rn->teamrefcount.GetPointer(team, &count); + b = rn->teamrefcount.Get(team, &count); if (b) { *count += 1; debug_count = *count; @@ -122,13 +122,13 @@ NodeManager::DecrementGlobalRefCount(media_node_id nodeid, team_id team) registered_node *rn; bool b; TRACE("NodeManager::DecrementGlobalRefCount enter: node %ld, team %ld\n", nodeid, team); - b = fRegisteredNodeMap->GetPointer(nodeid, &rn); + b = fRegisteredNodeMap->Get(nodeid, &rn); if (!b) { FATAL("!!! NodeManager::DecrementGlobalRefCount: Error: node %ld not found\n", nodeid); return B_ERROR; } int32 *count; - b = rn->teamrefcount.GetPointer(team, &count); + b = rn->teamrefcount.Get(team, &count); if (!b) { FATAL("!!! NodeManager::DecrementGlobalRefCount: Error: node %ld has no team %ld references\n", nodeid, team); return B_ERROR; @@ -158,7 +158,7 @@ NodeManager::GetCloneForId(media_node *node, media_node_id nodeid, team_id team) return B_ERROR; } - b = fRegisteredNodeMap->GetPointer(nodeid, &rn); + b = fRegisteredNodeMap->Get(nodeid, &rn); if (!b) { FATAL("!!! NodeManager::GetCloneForId: Error: node %ld not found\n", nodeid); return B_ERROR; @@ -202,7 +202,7 @@ NodeManager::PublishInputs(const media_node &node, const media_input *inputs, in BAutolock lock(fLocker); registered_node *rn; bool b; - b = fRegisteredNodeMap->GetPointer(node.node, &rn); + b = fRegisteredNodeMap->Get(node.node, &rn); if (!b) { FATAL("!!! NodeManager::PublishInputs: Error: node %ld not found\n", node.node); return B_ERROR; @@ -220,7 +220,7 @@ NodeManager::PublishOutputs(const media_node &node, const media_output *outputs, BAutolock lock(fLocker); registered_node *rn; bool b; - b = fRegisteredNodeMap->GetPointer(node.node, &rn); + b = fRegisteredNodeMap->Get(node.node, &rn); if (!b) { FATAL("!!! NodeManager::PublishOutputs: Error: node %ld not found\n", node.node); return B_ERROR; @@ -237,14 +237,14 @@ NodeManager::FindNodeId(media_node_id *nodeid, port_id port) { BAutolock lock(fLocker); registered_node *rn; - for (int32 i = 0; fRegisteredNodeMap->GetPointerAt(i, &rn); i++) { + for (fRegisteredNodeMap->Rewind(); fRegisteredNodeMap->GetNext(&rn); ) { if (rn->port == port) { *nodeid = rn->nodeid; TRACE("NodeManager::FindNodeId found port %ld, node %ld\n", port, *nodeid); return B_OK; } media_output *output; - for (int32 j = 0; rn->outputlist.GetPointerAt(j, &output); j++) { + for (rn->outputlist.Rewind(); rn->outputlist.GetNext(&output); ) { if (output->source.port == port || output->destination.port == port) { *nodeid = rn->nodeid; TRACE("NodeManager::FindNodeId found output port %ld, node %ld\n", port, *nodeid); @@ -252,7 +252,7 @@ NodeManager::FindNodeId(media_node_id *nodeid, port_id port) } } media_input *input; - for (int32 j = 0; rn->inputlist.GetPointerAt(j, &input); j++) { + for (rn->inputlist.Rewind(); rn->inputlist.GetNext(&input); ) { if (input->source.port == port || input->destination.port == port) { *nodeid = rn->nodeid; TRACE("NodeManager::FindNodeId found input port %ld, node %ld\n", port, *nodeid); @@ -270,7 +270,7 @@ NodeManager::GetLiveNodeInfo(live_node_info *live_info, const media_node &node) { BAutolock lock(fLocker); registered_node *rn; - for (int32 i = 0; fRegisteredNodeMap->GetPointerAt(i, &rn); i++) { + for (fRegisteredNodeMap->Rewind(); fRegisteredNodeMap->GetNext(&rn); ) { if (rn->nodeid == node.node) { ASSERT(node.port == rn->port); ASSERT(node.kind == rn->kinds); @@ -292,7 +292,7 @@ NodeManager::GetInstances(media_node_id *node_ids, int32* count, int32 maxcount, BAutolock lock(fLocker); registered_node *rn; *count = 0; - for (int32 i = 0; (maxcount > 0) && fRegisteredNodeMap->GetPointerAt(i, &rn); i++) { + for (fRegisteredNodeMap->Rewind(); (maxcount > 0) && fRegisteredNodeMap->GetNext(&rn); ) { if (rn->addon_id == addon_id && rn->addon_flavor_id == addon_flavor_id) { node_ids[*count] = rn->nodeid; *count += 1; @@ -321,7 +321,7 @@ NodeManager::GetLiveNodes(Stack *livenodes, int32 maxcount, cons } else namelen = 0; - for (int32 index = 0; (maxcount > 0) && fRegisteredNodeMap->GetPointerAt(index, &rn); index++) { + for (fRegisteredNodeMap->Rewind(); (maxcount > 0) && fRegisteredNodeMap->GetNext(&rn); ) { if ((rn->kinds & require_kinds) != require_kinds) continue; if (namelen) { @@ -331,7 +331,7 @@ NodeManager::GetLiveNodes(Stack *livenodes, int32 maxcount, cons if (inputformat) { bool hasit = false; media_input *input; - for (int32 j = 0; rn->inputlist.GetPointerAt(j, &input); j++) { + for (rn->inputlist.Rewind(); rn->inputlist.GetNext(&input); ) { if (format_is_compatible(*inputformat, input->format)) { hasit = true; break; @@ -343,7 +343,7 @@ NodeManager::GetLiveNodes(Stack *livenodes, int32 maxcount, cons if (outputformat) { bool hasit = false; media_output *output; - for (int32 j = 0; rn->outputlist.GetPointerAt(j, &output); j++) { + for (rn->outputlist.Rewind(); rn->outputlist.GetNext(&output); ) { if (format_is_compatible(*outputformat, output->format)) { hasit = true; break; @@ -374,7 +374,7 @@ NodeManager::GetDormantNodeInfo(dormant_node_info *node_info, const media_node & BAutolock lock(fLocker); // XXX not sure if this is correct registered_node *rn; - for (int32 i = 0; fRegisteredNodeMap->GetPointerAt(i, &rn); i++) { + for (fRegisteredNodeMap->Rewind(); fRegisteredNodeMap->GetNext(&rn); ) { if (rn->nodeid == node.node) { ASSERT(node.port == rn->port); ASSERT(node.kind == rn->kinds); @@ -398,8 +398,9 @@ NodeManager::GetLiveNodes(BMessage *msg) { BAutolock lock(fLocker); registered_node *rn; - for (int32 i = 0; fRegisteredNodeMap->GetPointerAt(i, &rn); i++) + for (fRegisteredNodeMap->Rewind(); fRegisteredNodeMap->GetNext(&rn); ) { msg->AddInt32("media_node_id", rn->nodeid); + } return B_OK; } @@ -441,7 +442,14 @@ status_t NodeManager::GetAddonRef(entry_ref *ref, media_addon_id id) { BAutolock lock(fLocker); - return fAddonPathMap->Get(id, ref) ? B_OK : B_ERROR; + entry_ref *tempref; + + if (fAddonPathMap->Get(id, &tempref)) { + *ref = *tempref; + return B_OK; + } + + return B_ERROR; } status_t @@ -455,8 +463,7 @@ NodeManager::GetDormantNodes(dormant_node_info * out_info, { BAutolock lock(fLocker); int32 maxcount; - int32 index; - dormant_flavor_info dfi; + dormant_flavor_info *dfi; int namelen; // determine the count of byte to compare when checking for a name with(out) wildcard @@ -471,19 +478,19 @@ NodeManager::GetDormantNodes(dormant_node_info * out_info, maxcount = *io_count; *io_count = 0; - for (index = 0; (*io_count < maxcount) && fDormantFlavorList->GetAt(index, &dfi); index++) { - if ((dfi.kinds & require_kinds) != require_kinds) + for (fDormantFlavorList->Rewind(); (*io_count < maxcount) && fDormantFlavorList->GetNext(&dfi); ) { + if ((dfi->kinds & require_kinds) != require_kinds) continue; - if ((dfi.kinds & deny_kinds) != 0) + if ((dfi->kinds & deny_kinds) != 0) continue; if (namelen) { - if (0 != memcmp(name, dfi.name, namelen)) + if (0 != memcmp(name, dfi->name, namelen)) continue; } if (has_input) { bool hasit = false; - for (int32 i = 0; i < dfi.in_format_count; i++) - if (format_is_compatible(*has_input, dfi.in_formats[i])) { + for (int32 i = 0; i < dfi->in_format_count; i++) + if (format_is_compatible(*has_input, dfi->in_formats[i])) { hasit = true; break; } @@ -492,8 +499,8 @@ NodeManager::GetDormantNodes(dormant_node_info * out_info, } if (has_output) { bool hasit = false; - for (int32 i = 0; i < dfi.out_format_count; i++) - if (format_is_compatible(*has_output, dfi.out_formats[i])) { + for (int32 i = 0; i < dfi->out_format_count; i++) + if (format_is_compatible(*has_output, dfi->out_formats[i])) { hasit = true; break; } @@ -501,7 +508,7 @@ NodeManager::GetDormantNodes(dormant_node_info * out_info, continue; } - out_info[*io_count] = dfi.node_info; + out_info[*io_count] = dfi->node_info; *io_count += 1; } @@ -514,9 +521,12 @@ NodeManager::GetDormantFlavorInfoFor(media_addon_id addon, dormant_flavor_info *outFlavor) { BAutolock lock(fLocker); - for (int32 index = 0; fDormantFlavorList->GetAt(index, outFlavor); index++) { - if (outFlavor->node_info.addon == addon && outFlavor->node_info.flavor_id == flavor_id) + dormant_flavor_info *flavor; + for (fDormantFlavorList->Rewind(); fDormantFlavorList->GetNext(&flavor); ) { + if (flavor->node_info.addon == addon && flavor->node_info.flavor_id == flavor_id) { + *outFlavor = *flavor; return B_OK; + } } return B_ERROR; } diff --git a/src/servers/media/NotificationManager.cpp b/src/servers/media/NotificationManager.cpp index 9e2850eef3..3cb9e8040b 100644 --- a/src/servers/media/NotificationManager.cpp +++ b/src/servers/media/NotificationManager.cpp @@ -110,22 +110,21 @@ NotificationManager::CancelNotifications(BMessage *msg) fLocker->Lock(); - Notification n; - for (int32 index = 0; fNotificationList->GetAt(index, &n); index++) { + Notification *n; + for (fNotificationList->Rewind(); fNotificationList->GetNext(&n); ) { bool remove; - if (what == B_MEDIA_WILDCARD && *node == media_node::null && team == n.team && messenger == n.messenger) + if (what == B_MEDIA_WILDCARD && *node == media_node::null && team == n->team && messenger == n->messenger) remove = true; - else if (what != B_MEDIA_WILDCARD && *node == media_node::null && what == n.what && team == n.team && messenger == n.messenger) + else if (what != B_MEDIA_WILDCARD && *node == media_node::null && what == n->what && team == n->team && messenger == n->messenger) remove = true; - else if (what == B_MEDIA_WILDCARD && *node != media_node::null && team == n.team && messenger == n.messenger && n.node == *node) + else if (what == B_MEDIA_WILDCARD && *node != media_node::null && team == n->team && messenger == n->messenger && n->node == *node) remove = true; - else if (what != B_MEDIA_WILDCARD && *node != media_node::null && what == n.what && team == n.team && messenger == n.messenger && n.node == *node) + else if (what != B_MEDIA_WILDCARD && *node != media_node::null && what == n->what && team == n->team && messenger == n->messenger && n->node == *node) remove = true; else remove = false; if (remove) { - if (fNotificationList->Remove(index)) { - index--; + if (fNotificationList->RemoveCurrent()) { } else { ASSERT(false); } @@ -152,9 +151,9 @@ NotificationManager::SendNotifications(BMessage *msg) fLocker->Lock(); - Notification n; - for (int32 index = 0; fNotificationList->GetAt(index, &n); index++) { - if (n.what != B_MEDIA_WILDCARD && n.what != what) + Notification *n; + for (fNotificationList->Rewind(); fNotificationList->GetNext(&n); ) { + if (n->what != B_MEDIA_WILDCARD && n->what != what) continue; switch (what) { @@ -167,7 +166,7 @@ NotificationManager::SendNotifications(BMessage *msg) case B_MEDIA_TRANSPORT_STATE: case B_MEDIA_DEFAULT_CHANGED: case B_MEDIA_FLAVORS_CHANGED: - if (n.node != media_node::null) + if (n->node != media_node::null) continue; break; @@ -177,7 +176,7 @@ NotificationManager::SendNotifications(BMessage *msg) case B_MEDIA_WEB_CHANGED: msg->FindData("node", B_RAW_TYPE, reinterpret_cast(&node), &size); ASSERT(size == sizeof(media_node)); - if (n.node != *node) + if (n->node != *node) continue; break; @@ -186,13 +185,13 @@ NotificationManager::SendNotifications(BMessage *msg) ASSERT(size == sizeof(media_source)); msg->FindData("destination", B_RAW_TYPE, reinterpret_cast(&destination), &size); ASSERT(size == sizeof(media_destination)); - if (n.node.port != source->port && n.node.port != destination->port) + if (n->node.port != source->port && n->node.port != destination->port) continue; break; } TRACE("NotificationManager::SendNotifications sending\n"); - n.messenger.SendMessage(msg, static_cast(NULL), TIMEOUT); + n->messenger.SendMessage(msg, static_cast(NULL), TIMEOUT); } fLocker->Unlock(); @@ -205,12 +204,11 @@ NotificationManager::CleanupTeam(team_id team) fLocker->Lock(); int debugcount = 0; - Notification n; - for (int32 index = 0; fNotificationList->GetAt(index, &n); index++) { - if (n.team == team) { - if (fNotificationList->Remove(index)) { + Notification *n; + for (fNotificationList->Rewind(); fNotificationList->GetNext(&n); ) { + if (n->team == team) { + if (fNotificationList->RemoveCurrent()) { debugcount++; - index--; } else { ASSERT(false); }