/*
- Copyright (C) 1998-2010 Paul Barton-Davis
+ Copyright (C) 1998-2010 Paul Barton-Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
#include <string>
#include <iostream>
-#include <jack/types.h>
+#include <pthread.h>
#include "pbd/xml++.h"
+#ifndef PLATFORM_WINDOWS
#include "pbd/crossthread.h"
+#endif
#include "pbd/signals.h"
#include "pbd/ringbuffer.h"
+#include "midi++/libmidi_visibility.h"
#include "midi++/types.h"
#include "midi++/parser.h"
class Channel;
class PortRequest;
-class Port {
+class LIBMIDIPP_API Port {
public:
enum Flags {
- IsInput = JackPortIsInput,
- IsOutput = JackPortIsOutput,
+ IsInput = 0x1, /* MUST MATCH JACK's JackPortIsInput */
+ IsOutput = 0x2, /* MUST MATCH JACK's JackPortIsOutput */
};
-
+
Port (std::string const &, Flags);
Port (const XMLNode&);
virtual ~Port ();
/** block until the output FIFO used by non-process threads
* is empty, checking every @a check_interval_usecs usecs
* for current status. Not to be called by a thread that
- * executes any part of a JACK process callback (will
+ * executes any part of a JACK process callback (will
* simply return immediately in that situation).
*/
- virtual void drain (int /* check_interval_usecs */) {}
+ virtual void drain (int /* check_interval_usecs */, int /* total_usecs_to_wait */) {}
/** Write a message to port.
* @return true on success.
*/
int midimsg (byte *msg, size_t len, timestamp_t timestamp) {
return !(write (msg, len, timestamp) == (int) len);
- }
+ }
virtual void parse (framecnt_t timestamp) = 0;
/* select(2)/poll(2)-based I/O */
/** Get the file descriptor for port.
- * @return File descriptor, or -1 if not selectable.
+ * @return File descriptor, or -1 if not selectable.
*/
virtual int selectable () const = 0;
- Channel *channel (channel_t chn) {
+ Channel *channel (channel_t chn) {
return _channel[chn&0x7F];
}
-
+
Parser* parser () {
return _parser;
}
-
+
const char *name () const { return _tagname.c_str(); }
bool ok () const { return _ok; }
void init (std::string const &, Flags);
};
-struct PortSet {
+struct LIBMIDIPP_API PortSet {
PortSet (std::string str) : owner (str) { }
-
+
std::string owner;
std::list<XMLNode> ports;
};