| Index: media/midi/midi_manager_alsa.cc
|
| diff --git a/media/midi/midi_manager_alsa.cc b/media/midi/midi_manager_alsa.cc
|
| index 990b50a1643db9c5ee9d0bbbb1b16720bdf6dbed..e42543078261ee411162ff6d3108e85d1095632f 100644
|
| --- a/media/midi/midi_manager_alsa.cc
|
| +++ b/media/midi/midi_manager_alsa.cc
|
| @@ -145,8 +145,7 @@ void SetStringIfNonEmpty(base::DictionaryValue* value,
|
| } // namespace
|
|
|
| MidiManagerAlsa::MidiManagerAlsa()
|
| - : alsa_cards_deleter_(&alsa_cards_),
|
| - udev_(device::udev_new()),
|
| + : udev_(device::udev_new()),
|
| send_thread_("MidiSendThread"),
|
| event_thread_("MidiEventThread") {
|
| // Initialize decoder.
|
| @@ -587,8 +586,7 @@ uint32 MidiManagerAlsa::MidiPortState::Insert(scoped_ptr<MidiPort> port) {
|
| return web_port_index;
|
| }
|
|
|
| -MidiManagerAlsa::AlsaSeqState::AlsaSeqState()
|
| - : clients_deleter_(&clients_), card_client_count_(0) {
|
| +MidiManagerAlsa::AlsaSeqState::AlsaSeqState() : card_client_count_(0) {
|
| }
|
|
|
| MidiManagerAlsa::AlsaSeqState::~AlsaSeqState() = default;
|
| @@ -597,7 +595,7 @@ void MidiManagerAlsa::AlsaSeqState::ClientStart(int client_id,
|
| const std::string& client_name,
|
| snd_seq_client_type_t type) {
|
| ClientExit(client_id);
|
| - clients_[client_id] = new Client(client_name, type);
|
| + clients_.insert(client_id, make_scoped_ptr(new Client(client_name, type)));
|
| if (IsCardClient(type, client_id))
|
| ++card_client_count_;
|
| }
|
| @@ -611,7 +609,6 @@ void MidiManagerAlsa::AlsaSeqState::ClientExit(int client_id) {
|
| if (it != clients_.end()) {
|
| if (IsCardClient(it->second->type(), client_id))
|
| --card_client_count_;
|
| - delete it->second;
|
| clients_.erase(it);
|
| }
|
| }
|
| @@ -728,23 +725,18 @@ MidiManagerAlsa::AlsaSeqState::Port::~Port() = default;
|
|
|
| MidiManagerAlsa::AlsaSeqState::Client::Client(const std::string& name,
|
| snd_seq_client_type_t type)
|
| - : name_(name), type_(type), ports_deleter_(&ports_) {
|
| + : name_(name), type_(type) {
|
| }
|
|
|
| MidiManagerAlsa::AlsaSeqState::Client::~Client() = default;
|
|
|
| void MidiManagerAlsa::AlsaSeqState::Client::AddPort(int addr,
|
| scoped_ptr<Port> port) {
|
| - RemovePort(addr);
|
| - ports_[addr] = port.release();
|
| + ports_.set(addr, port.Pass());
|
| }
|
|
|
| void MidiManagerAlsa::AlsaSeqState::Client::RemovePort(int addr) {
|
| - auto it = ports_.find(addr);
|
| - if (it != ports_.end()) {
|
| - delete it->second;
|
| - ports_.erase(it);
|
| - }
|
| + ports_.erase(addr);
|
| }
|
|
|
| MidiManagerAlsa::AlsaSeqState::Client::PortMap::const_iterator
|
| @@ -1129,9 +1121,12 @@ void MidiManagerAlsa::AddCard(udev_device* dev) {
|
| }
|
| snd_ctl_close(handle);
|
|
|
| - if (midi_count > 0)
|
| - alsa_cards_[number] = new AlsaCard(dev, name, longname, driver, midi_count);
|
| - alsa_card_midi_count_ += midi_count;
|
| + if (midi_count > 0) {
|
| + scoped_ptr<AlsaCard> card(
|
| + new AlsaCard(dev, name, longname, driver, midi_count));
|
| + alsa_cards_.insert(number, card.Pass());
|
| + alsa_card_midi_count_ += midi_count;
|
| + }
|
| }
|
|
|
| void MidiManagerAlsa::RemoveCard(int number) {
|
| @@ -1140,7 +1135,6 @@ void MidiManagerAlsa::RemoveCard(int number) {
|
| return;
|
|
|
| alsa_card_midi_count_ -= it->second->midi_device_count();
|
| - delete it->second;
|
| alsa_cards_.erase(it);
|
| }
|
|
|
|
|