bool TreeTableNode::AddChild(TreeTableNode* child, int32 index) { if (fChildren == NULL) { fChildren = new(std::nothrow) NodeList(10, true); if (fChildren == NULL) return false; } return fChildren->AddItem(child, index); }
void MediaWindow::_FindNodes(media_type type, uint64 kind, NodeList& into) { dormant_node_info nodeInfo[64]; int32 nodeInfoCount = 64; media_format format; media_format* nodeInputFormat = NULL; media_format* nodeOutputFormat = NULL; format.type = type; // output nodes must be BBufferConsumers => they have an input format // input nodes must be BBufferProducers => they have an output format if ((kind & B_PHYSICAL_OUTPUT) != 0) nodeInputFormat = &format; else if ((kind & B_PHYSICAL_INPUT) != 0) nodeOutputFormat = &format; else return; BMediaRoster* roster = BMediaRoster::Roster(); if (roster->GetDormantNodes(nodeInfo, &nodeInfoCount, nodeInputFormat, nodeOutputFormat, NULL, kind) != B_OK) { // TODO: better error reporting! fprintf(stderr, "error\n"); return; } for (int32 i = 0; i < nodeInfoCount; i++) { PRINT(("node : %s, media_addon %i, flavor_id %i\n", nodeInfo[i].name, (int)nodeInfo[i].addon, (int)nodeInfo[i].flavor_id)); dormant_node_info* info = new dormant_node_info(); strncpy(info->name, nodeInfo[i].name, B_MEDIA_NAME_LENGTH); info->flavor_id = nodeInfo[i].flavor_id; info->addon = nodeInfo[i].addon; into.AddItem(info); } }