blob: 39cf0098bec711cd3286a500110607c85a962493 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
// -*- c-indentation-style:"stroustrup" c-basic-offset: 4 -*-
/*
Rosegarden
A sequencer and musical notation editor.
This program is Copyright 2000-2008
Guillaume Laurent <[email protected]>,
Chris Cannam <[email protected]>,
Richard Bown <[email protected]>
The moral right of the authors to claim authorship of this work
has been asserted.
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 (at your option) any later version. See the file
COPYING included with this distribution for more information.
*/
#include <vector>
#include <set>
#include "Instrument.h"
#include "MappedCommon.h"
#ifndef _ALSAPORT_H_
#define _ALSAPORT_H_
#ifdef HAVE_ALSA
#include <alsa/asoundlib.h> // ALSA
namespace Rosegarden
{
typedef std::pair<int, int> ClientPortPair;
// Use this to hold all client information so that we can sort it
// before generating devices - we want to put non-duplex devices
// at the front of any device list (makes thing much easier at the
// GUI and we already have some backwards compatability issues with
// this).
//
class AlsaPortDescription
{
public:
AlsaPortDescription(Instrument::InstrumentType type,
const std::string &name,
int client,
int port,
unsigned int clientType,
unsigned int portType,
unsigned int capability,
PortDirection direction);
Instrument::InstrumentType m_type;
std::string m_name;
int m_client;
int m_port;
unsigned int m_clientType;
unsigned int m_portType;
unsigned int m_capability;
PortDirection m_direction; // or can deduce from capability
bool isReadable() { return m_direction == ReadOnly ||
m_direction == Duplex; }
bool isWriteable() { return m_direction == WriteOnly ||
m_direction == Duplex; }
};
// Sort by checking direction
//
struct AlsaPortCmp
{
bool operator()(AlsaPortDescription *a1,
AlsaPortDescription *a2);
};
}
#endif // HAVE_ALSA
#endif // _RG_ALSA_PORT_H_
|