123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // Copyright 2016 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef MEDIA_MIDI_MIDI_MANAGER_WINRT_H_
- #define MEDIA_MIDI_MIDI_MANAGER_WINRT_H_
- #include <memory>
- #include "base/thread_annotations.h"
- #include "media/midi/midi_manager.h"
- namespace midi {
- class MidiService;
- class MIDI_EXPORT MidiManagerWinrt final : public MidiManager {
- public:
- class MidiInPortManager;
- class MidiOutPortManager;
- explicit MidiManagerWinrt(MidiService* service);
- MidiManagerWinrt(const MidiManagerWinrt&) = delete;
- MidiManagerWinrt& operator=(const MidiManagerWinrt&) = delete;
- ~MidiManagerWinrt() override;
- // MidiManager overrides:
- void StartInitialization() final;
- void DispatchSendMidiData(MidiManagerClient* client,
- uint32_t port_index,
- const std::vector<uint8_t>& data,
- base::TimeTicks timestamp) final;
- private:
- // Subclasses that access private/protected members of MidiManager.
- template <typename InterfaceType,
- typename RuntimeType,
- typename StaticsInterfaceType,
- wchar_t const* runtime_class_id>
- class MidiPortManager;
- // Callbacks on kComTaskRunner.
- void InitializeOnComRunner();
- void SendOnComRunner(uint32_t port_index, const std::vector<uint8_t>& data);
- // Callback from MidiPortManager::OnEnumerationComplete on kComTaskRunner.
- // Calls CompleteInitialization() when both MidiPortManagers are ready.
- void OnPortManagerReady();
- // Lock to ensure all smart pointers initialized in InitializeOnComRunner()
- // and destroyed in FinalizeOnComRunner() will not be accidentally destructed
- // twice in the destructor.
- base::Lock lazy_init_member_lock_;
- // All operations to Midi{In|Out}PortManager should be done on kComTaskRunner.
- std::unique_ptr<MidiInPortManager> port_manager_in_
- GUARDED_BY(lazy_init_member_lock_);
- std::unique_ptr<MidiOutPortManager> port_manager_out_
- GUARDED_BY(lazy_init_member_lock_);
- // Incremented when a MidiPortManager is ready.
- uint8_t port_manager_ready_count_ = 0;
- };
- } // namespace midi
- #endif // MEDIA_MIDI_MIDI_MANAGER_WINRT_H_
|