Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / media / midi / midi_manager_alsa.h
index d70141c..d97650c 100644 (file)
@@ -5,6 +5,7 @@
 #ifndef MEDIA_MIDI_MIDI_MANAGER_ALSA_H_
 #define MEDIA_MIDI_MIDI_MANAGER_ALSA_H_
 
+#include <poll.h>
 #include <vector>
 
 #include "base/basictypes.h"
 
 namespace media {
 
-class MIDIManagerAlsa : public MIDIManager {
+class MidiManagerAlsa : public MidiManager {
  public:
-  MIDIManagerAlsa();
-  virtual ~MIDIManagerAlsa();
+  MidiManagerAlsa();
+  virtual ~MidiManagerAlsa();
 
-  // MIDIManager implementation.
+  // MidiManager implementation.
   virtual bool Initialize() OVERRIDE;
-  virtual void DispatchSendMIDIData(MIDIManagerClient* client,
+  virtual void DispatchSendMidiData(MidiManagerClient* client,
                                     uint32 port_index,
                                     const std::vector<uint8>& data,
                                     double timestamp) OVERRIDE;
 
  private:
-  class MIDIDeviceInfo;
-  std::vector<scoped_refptr<MIDIDeviceInfo> > in_devices_;
-  std::vector<scoped_refptr<MIDIDeviceInfo> > out_devices_;
+  void EventReset();
+  void EventLoop();
+
+  class MidiDeviceInfo;
+  std::vector<scoped_refptr<MidiDeviceInfo> > in_devices_;
+  std::vector<scoped_refptr<MidiDeviceInfo> > out_devices_;
   base::Thread send_thread_;
-  DISALLOW_COPY_AND_ASSIGN(MIDIManagerAlsa);
+  base::Thread event_thread_;
+
+  // Used for shutting down the |event_thread_| safely.
+  int pipe_fd_[2];
+  // Used for polling input MIDI ports and |pipe_fd_| in |event_thread_|.
+  std::vector<struct pollfd> poll_fds_;
+
+  DISALLOW_COPY_AND_ASSIGN(MidiManagerAlsa);
 };
 
 }  // namespace media