jack2 codebase
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

238 lines
6.2KB

  1. /* -*- Mode: C ; c-basic-offset: 4 -*- */
  2. /*
  3. Copyright (C) 2007,2008 Nedko Arnaudov
  4. Copyright (C) 2007-2008 Juuso Alasuutari
  5. This program is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 2 of the License.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program; if not, write to the Free Software
  14. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  15. */
  16. #ifndef CONTROLLER_INTERNAL_H__04D54D51_3D79_49A2_A1DA_F8587E9E7F42__INCLUDED
  17. #define CONTROLLER_INTERNAL_H__04D54D51_3D79_49A2_A1DA_F8587E9E7F42__INCLUDED
  18. #include <stdbool.h>
  19. #include "jslist.h"
  20. #include "jack/control.h"
  21. #include "jack/jack.h"
  22. #include "jackdbus.h"
  23. #include "list.h"
  24. struct jack_controller_slave_driver
  25. {
  26. struct list_head siblings;
  27. char * name;
  28. jackctl_driver_t * handle;
  29. };
  30. struct jack_controller
  31. {
  32. jackctl_server_t *server;
  33. void *patchbay_context;
  34. bool started;
  35. jack_client_t *client;
  36. unsigned int xruns;
  37. const char **driver_names;
  38. unsigned int drivers_count;
  39. const char **internal_names;
  40. unsigned int internals_count;
  41. jackctl_driver_t *driver;
  42. bool driver_set; /* whether driver is manually set, if false - DEFAULT_DRIVER is auto set */
  43. struct list_head slave_drivers;
  44. struct jack_dbus_object_descriptor dbus_descriptor;
  45. };
  46. #define DEFAULT_DRIVER "dummy"
  47. #define JACK_CONF_HEADER_TEXT \
  48. "JACK settings, as persisted by D-Bus object.\n" \
  49. "You probably don't want to edit this because\n" \
  50. "it will be overwritten next time jackdbus saves.\n"
  51. jackctl_driver_t *
  52. jack_controller_find_driver(
  53. jackctl_server_t *server,
  54. const char *driver_name);
  55. jackctl_internal_t *
  56. jack_controller_find_internal(
  57. jackctl_server_t *server,
  58. const char *internal_name);
  59. jackctl_parameter_t *
  60. jack_controller_find_parameter(
  61. const JSList *parameters_list,
  62. const char *parameter_name);
  63. bool
  64. jack_controller_start_server(
  65. struct jack_controller *controller_ptr,
  66. void *dbus_call_context_ptr);
  67. bool
  68. jack_controller_stop_server(
  69. struct jack_controller *controller_ptr,
  70. void *dbus_call_context_ptr);
  71. bool
  72. jack_controller_switch_master(
  73. struct jack_controller *controller_ptr,
  74. void *dbus_call_context_ptr);
  75. bool
  76. jack_controller_add_slave_driver(
  77. struct jack_controller *controller_ptr,
  78. const char * driver_name);
  79. bool
  80. jack_controller_remove_slave_driver(
  81. struct jack_controller *controller_ptr,
  82. const char * driver_name);
  83. bool
  84. jack_controller_select_driver(
  85. struct jack_controller *controller_ptr,
  86. const char * driver_name);
  87. bool
  88. jack_controller_load_internal(
  89. struct jack_controller *controller_ptr,
  90. const char * internal_name);
  91. bool
  92. jack_controller_unload_internal(
  93. struct jack_controller *controller_ptr,
  94. const char * internal_name);
  95. void
  96. jack_controller_settings_set_driver_option(
  97. jackctl_driver_t *driver,
  98. const char *option_name,
  99. const char *option_value);
  100. void
  101. jack_controller_settings_set_internal_option(
  102. jackctl_internal_t *internal,
  103. const char *option_name,
  104. const char *option_value);
  105. void
  106. jack_controller_settings_set_engine_option(
  107. struct jack_controller *controller_ptr,
  108. const char *option_name,
  109. const char *option_value);
  110. bool
  111. jack_controller_settings_save_engine_options(
  112. void *context,
  113. struct jack_controller *controller_ptr,
  114. void *dbus_call_context_ptr);
  115. bool
  116. jack_controller_settings_write_option(
  117. void *context,
  118. const char *name,
  119. const char *content,
  120. void *dbus_call_context_ptr);
  121. bool
  122. jack_controller_settings_save_driver_options(
  123. void *context,
  124. jackctl_driver_t *driver,
  125. void *dbus_call_context_ptr);
  126. bool
  127. jack_controller_settings_save_internal_options(
  128. void *context,
  129. jackctl_internal_t *internal,
  130. void *dbus_call_context_ptr);
  131. bool
  132. jack_controller_patchbay_init(
  133. struct jack_controller *controller_ptr);
  134. void
  135. jack_controller_patchbay_uninit(
  136. struct jack_controller *controller_ptr);
  137. void *
  138. jack_controller_patchbay_client_appeared_callback(
  139. void * server_context,
  140. uint64_t client_id,
  141. const char *client_name);
  142. void
  143. jack_controller_patchbay_client_disappeared_callback(
  144. void *server_context,
  145. uint64_t client_id,
  146. void *client_context);
  147. void *
  148. jack_controller_patchbay_port_appeared_callback(
  149. void *server_context,
  150. uint64_t client_id,
  151. void *client_context,
  152. uint64_t port_id,
  153. const char *port_name,
  154. uint32_t port_flags,
  155. uint32_t port_type);
  156. void
  157. jack_controller_patchbay_port_disappeared_callback(
  158. void *server_context,
  159. uint64_t client_id,
  160. void *client_context,
  161. uint64_t port_id,
  162. void *port_context);
  163. void *
  164. jack_controller_patchbay_ports_connected_callback(
  165. void *server_context,
  166. uint64_t client1_id,
  167. void *client1_context,
  168. uint64_t port1_id,
  169. void *port1_context,
  170. uint64_t client2_id,
  171. void *client2_context,
  172. uint64_t port2_id,
  173. void *port2_context,
  174. uint64_t connection_id);
  175. void
  176. jack_controller_patchbay_ports_disconnected_callback(
  177. void *server_context,
  178. uint64_t client1_id,
  179. void *client1_context,
  180. uint64_t port1_id,
  181. void *port1_context,
  182. uint64_t client2_id,
  183. void *client2_context,
  184. uint64_t port2_id,
  185. void *port2_context,
  186. uint64_t connection_id,
  187. void *connection_context);
  188. extern struct jack_dbus_interface_descriptor g_jack_controller_iface_introspectable;
  189. extern struct jack_dbus_interface_descriptor g_jack_controller_iface_control;
  190. extern struct jack_dbus_interface_descriptor g_jack_controller_iface_configure;
  191. extern struct jack_dbus_interface_descriptor g_jack_controller_iface_patchbay;
  192. extern struct jack_dbus_interface_descriptor g_jack_controller_iface_transport;
  193. #endif /* #ifndef CONTROLLER_INTERNAL_H__04D54D51_3D79_49A2_A1DA_F8587E9E7F42__INCLUDED */