summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/async_midi_port.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-11-23 17:37:13 +0200
committerPaul Davis <paul@linuxaudiosystems.com>2014-11-23 17:37:13 +0200
commitbfe49540b94b6ac451e2978fd45a47656fecd92e (patch)
tree5db3eef1625b41129974ff43618a53bc8df53db1 /libs/ardour/ardour/async_midi_port.h
parentdcf632d99f38a581c7b54d34abc421e0acec24e9 (diff)
remove use of CrossThreadChannel::selectable() to allow cross-platform implementation of CrossThreadChannel via Glib::IOSource
Diffstat (limited to 'libs/ardour/ardour/async_midi_port.h')
-rw-r--r--libs/ardour/ardour/async_midi_port.h18
1 files changed, 10 insertions, 8 deletions
diff --git a/libs/ardour/ardour/async_midi_port.h b/libs/ardour/ardour/async_midi_port.h
index 26946e3016..373d6b7668 100644
--- a/libs/ardour/ardour/async_midi_port.h
+++ b/libs/ardour/ardour/async_midi_port.h
@@ -57,15 +57,19 @@ class LIBARDOUR_API AsyncMIDIPort : public ARDOUR::MidiPort, public MIDI::Port {
void parse (framecnt_t timestamp);
int write (const MIDI::byte *msg, size_t msglen, MIDI::timestamp_t timestamp);
int read (MIDI::byte *buf, size_t bufsize);
+ /* waits for output to be cleared */
void drain (int check_interval_usecs);
- int selectable () const {
-#ifdef PLATFORM_WINDOWS
- return false;
-#else
- return xthread.selectable();
-#endif
+
+ /* clears async request communication channel */
+ void clear () {
+ return xthread.drain ();
}
+ /* Not selectable; use ios() */
+ int selectable() const { return -1; }
+ Glib::RefPtr<Glib::IOSource> ios() {
+ return xthread.ios();
+ }
void set_timer (boost::function<framecnt_t (void)>&);
static void set_process_thread (pthread_t);
@@ -80,9 +84,7 @@ class LIBARDOUR_API AsyncMIDIPort : public ARDOUR::MidiPort, public MIDI::Port {
RingBuffer< Evoral::Event<double> > output_fifo;
Evoral::EventRingBuffer<MIDI::timestamp_t> input_fifo;
Glib::Threads::Mutex output_fifo_lock;
-#ifndef PLATFORM_WINDOWS
CrossThreadChannel xthread;
-#endif
int create_port ();