1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "media/midi/midi_manager.h"
8 #include "base/bind_helpers.h"
12 #if !defined(OS_MACOSX) && !defined(OS_WIN) && !defined(USE_ALSA) && \
14 // TODO(toyoshim): implement MidiManager for other platforms.
15 MidiManager* MidiManager::Create() {
16 return new MidiManager;
20 MidiManager::MidiManager()
21 : initialized_(false) {
24 MidiManager::~MidiManager() {
27 bool MidiManager::StartSession(MidiManagerClient* client) {
28 // Lazily initialize the MIDI back-end.
30 initialized_ = Initialize();
33 base::AutoLock auto_lock(clients_lock_);
34 clients_.insert(client);
40 void MidiManager::EndSession(MidiManagerClient* client) {
41 base::AutoLock auto_lock(clients_lock_);
42 ClientList::iterator i = clients_.find(client);
43 if (i != clients_.end())
47 void MidiManager::DispatchSendMidiData(MidiManagerClient* client,
49 const std::vector<uint8>& data,
54 bool MidiManager::Initialize() {
58 void MidiManager::AddInputPort(const MidiPortInfo& info) {
59 input_ports_.push_back(info);
62 void MidiManager::AddOutputPort(const MidiPortInfo& info) {
63 output_ports_.push_back(info);
66 void MidiManager::ReceiveMidiData(
71 base::AutoLock auto_lock(clients_lock_);
73 for (ClientList::iterator i = clients_.begin(); i != clients_.end(); ++i)
74 (*i)->ReceiveMidiData(port_index, data, length, timestamp);