Merge branch 'master' into port_register_notification_defer
[jack2.git] / dbus / controller_internal.h
bloba7711a8d5f180bf73300924c5dcd1a154e790b69
1 /* -*- Mode: C ; c-basic-offset: 4 -*- */
2 /*
3 Copyright (C) 2007,2008 Nedko Arnaudov
4 Copyright (C) 2007-2008 Juuso Alasuutari
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 #ifndef CONTROLLER_INTERNAL_H__04D54D51_3D79_49A2_A1DA_F8587E9E7F42__INCLUDED
22 #define CONTROLLER_INTERNAL_H__04D54D51_3D79_49A2_A1DA_F8587E9E7F42__INCLUDED
24 #include <stdbool.h>
25 #include "jslist.h"
26 #include "jack/control.h"
27 #include "jack/jack.h"
28 #include "jackdbus.h"
30 struct jack_controller
32 jackctl_server_t *server;
34 void *patchbay_context;
36 bool started;
37 jack_client_t *client;
38 unsigned int xruns;
40 const char **driver_names;
41 unsigned int drivers_count;
43 const char **internal_names;
44 unsigned int internals_count;
46 jackctl_driver_t *driver;
47 bool driver_set; /* whether driver is manually set, if false - DEFAULT_DRIVER is auto set */
49 struct jack_dbus_object_descriptor dbus_descriptor;
52 #define DEFAULT_DRIVER "dummy"
54 #define JACK_CONF_HEADER_TEXT \
55 "JACK settings, as persisted by D-Bus object.\n" \
56 "You probably don't want to edit this because\n" \
57 "it will be overwritten next time jackdbus saves.\n"
59 jackctl_driver_t *
60 jack_controller_find_driver(
61 jackctl_server_t *server,
62 const char *driver_name);
64 jackctl_internal_t *
65 jack_controller_find_internal(
66 jackctl_server_t *server,
67 const char *internal_name);
69 jackctl_parameter_t *
70 jack_controller_find_parameter(
71 const JSList *parameters_list,
72 const char *parameter_name);
74 bool
75 jack_controller_start_server(
76 struct jack_controller *controller_ptr,
77 void *dbus_call_context_ptr);
79 bool
80 jack_controller_stop_server(
81 struct jack_controller *controller_ptr,
82 void *dbus_call_context_ptr);
84 bool
85 jack_controller_switch_master(
86 struct jack_controller *controller_ptr,
87 void *dbus_call_context_ptr);
89 bool
90 jack_controller_add_slave(
91 struct jack_controller *controller_ptr,
92 const char * driver_name);
94 bool
95 jack_controller_remove_slave(
96 struct jack_controller *controller_ptr,
97 const char * driver_name);
99 bool
100 jack_controller_select_driver(
101 struct jack_controller *controller_ptr,
102 const char * driver_name);
104 bool
105 jack_controller_load_internal(
106 struct jack_controller *controller_ptr,
107 const char * internal_name);
109 bool
110 jack_controller_unload_internal(
111 struct jack_controller *controller_ptr,
112 const char * internal_name);
114 void
115 jack_controller_settings_set_driver_option(
116 jackctl_driver_t *driver,
117 const char *option_name,
118 const char *option_value);
120 void
121 jack_controller_settings_set_internal_option(
122 jackctl_internal_t *internal,
123 const char *option_name,
124 const char *option_value);
126 void
127 jack_controller_settings_set_engine_option(
128 struct jack_controller *controller_ptr,
129 const char *option_name,
130 const char *option_value);
132 bool
133 jack_controller_settings_save_engine_options(
134 void *context,
135 struct jack_controller *controller_ptr,
136 void *dbus_call_context_ptr);
138 bool
139 jack_controller_settings_write_option(
140 void *context,
141 const char *name,
142 const char *content,
143 void *dbus_call_context_ptr);
145 bool
146 jack_controller_settings_save_driver_options(
147 void *context,
148 jackctl_driver_t *driver,
149 void *dbus_call_context_ptr);
151 bool
152 jack_controller_settings_save_internal_options(
153 void *context,
154 jackctl_internal_t *internal,
155 void *dbus_call_context_ptr);
157 bool
158 jack_controller_patchbay_init(
159 struct jack_controller *controller_ptr);
161 void
162 jack_controller_patchbay_uninit(
163 struct jack_controller *controller_ptr);
165 void *
166 jack_controller_patchbay_client_appeared_callback(
167 void * server_context,
168 uint64_t client_id,
169 const char *client_name);
171 void
172 jack_controller_patchbay_client_disappeared_callback(
173 void *server_context,
174 uint64_t client_id,
175 void *client_context);
177 void *
178 jack_controller_patchbay_port_appeared_callback(
179 void *server_context,
180 uint64_t client_id,
181 void *client_context,
182 uint64_t port_id,
183 const char *port_name,
184 uint32_t port_flags,
185 uint32_t port_type);
187 void
188 jack_controller_patchbay_port_disappeared_callback(
189 void *server_context,
190 uint64_t client_id,
191 void *client_context,
192 uint64_t port_id,
193 void *port_context);
195 void *
196 jack_controller_patchbay_ports_connected_callback(
197 void *server_context,
198 uint64_t client1_id,
199 void *client1_context,
200 uint64_t port1_id,
201 void *port1_context,
202 uint64_t client2_id,
203 void *client2_context,
204 uint64_t port2_id,
205 void *port2_context,
206 uint64_t connection_id);
208 void
209 jack_controller_patchbay_ports_disconnected_callback(
210 void *server_context,
211 uint64_t client1_id,
212 void *client1_context,
213 uint64_t port1_id,
214 void *port1_context,
215 uint64_t client2_id,
216 void *client2_context,
217 uint64_t port2_id,
218 void *port2_context,
219 uint64_t connection_id,
220 void *connection_context);
222 extern struct jack_dbus_interface_descriptor g_jack_controller_iface_introspectable;
223 extern struct jack_dbus_interface_descriptor g_jack_controller_iface_control;
224 extern struct jack_dbus_interface_descriptor g_jack_controller_iface_configure;
225 extern struct jack_dbus_interface_descriptor g_jack_controller_iface_patchbay;
226 extern struct jack_dbus_interface_descriptor g_jack_controller_iface_transport;
228 #endif /* #ifndef CONTROLLER_INTERNAL_H__04D54D51_3D79_49A2_A1DA_F8587E9E7F42__INCLUDED */