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.

212 lines
5.6KB

  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. struct jack_controller
  24. {
  25. jackctl_server_t *server;
  26. void *patchbay_context;
  27. bool started;
  28. jack_client_t *client;
  29. unsigned int xruns;
  30. const char **driver_names;
  31. unsigned int drivers_count;
  32. const char **internal_names;
  33. unsigned int internals_count;
  34. /* current driver, NULL if not driver is selected */
  35. jackctl_driver_t *driver;
  36. struct jack_dbus_object_descriptor dbus_descriptor;
  37. };
  38. #define JACK_CONF_HEADER_TEXT \
  39. "JACK settings, as persisted by D-Bus object.\n" \
  40. "You probably don't want to edit this because\n" \
  41. "it will be overwritten next time jackdbus saves.\n"
  42. jackctl_driver_t *
  43. jack_controller_find_driver(
  44. jackctl_server_t *server,
  45. const char *driver_name);
  46. jackctl_internal_t *
  47. jack_controller_find_internal(
  48. jackctl_server_t *server,
  49. const char *internal_name);
  50. jackctl_parameter_t *
  51. jack_controller_find_parameter(
  52. const JSList *parameters_list,
  53. const char *parameter_name);
  54. bool
  55. jack_controller_start_server(
  56. struct jack_controller *controller_ptr,
  57. void *dbus_call_context_ptr);
  58. bool
  59. jack_controller_stop_server(
  60. struct jack_controller *controller_ptr,
  61. void *dbus_call_context_ptr);
  62. bool
  63. jack_controller_select_driver(
  64. struct jack_controller *controller_ptr,
  65. const char * driver_name);
  66. bool
  67. jack_controller_load_internal(
  68. struct jack_controller *controller_ptr,
  69. const char * internal_name);
  70. bool
  71. jack_controller_unload_internal(
  72. struct jack_controller *controller_ptr,
  73. const char * internal_name);
  74. void
  75. jack_controller_settings_set_driver_option(
  76. jackctl_driver_t *driver,
  77. const char *option_name,
  78. const char *option_value);
  79. void
  80. jack_controller_settings_set_internal_option(
  81. jackctl_internal_t *internal,
  82. const char *option_name,
  83. const char *option_value);
  84. void
  85. jack_controller_settings_set_engine_option(
  86. struct jack_controller *controller_ptr,
  87. const char *option_name,
  88. const char *option_value);
  89. bool
  90. jack_controller_settings_save_engine_options(
  91. void *context,
  92. struct jack_controller *controller_ptr,
  93. void *dbus_call_context_ptr);
  94. bool
  95. jack_controller_settings_write_option(
  96. void *context,
  97. const char *name,
  98. const char *content,
  99. void *dbus_call_context_ptr);
  100. bool
  101. jack_controller_settings_save_driver_options(
  102. void *context,
  103. jackctl_driver_t *driver,
  104. void *dbus_call_context_ptr);
  105. bool
  106. jack_controller_settings_save_internal_options(
  107. void *context,
  108. jackctl_internal_t *internal,
  109. void *dbus_call_context_ptr);
  110. bool
  111. jack_controller_patchbay_init(
  112. struct jack_controller *controller_ptr);
  113. void
  114. jack_controller_patchbay_uninit(
  115. struct jack_controller *controller_ptr);
  116. void *
  117. jack_controller_patchbay_client_appeared_callback(
  118. void * server_context,
  119. uint64_t client_id,
  120. const char *client_name);
  121. void
  122. jack_controller_patchbay_client_disappeared_callback(
  123. void *server_context,
  124. uint64_t client_id,
  125. void *client_context);
  126. void *
  127. jack_controller_patchbay_port_appeared_callback(
  128. void *server_context,
  129. uint64_t client_id,
  130. void *client_context,
  131. uint64_t port_id,
  132. const char *port_name,
  133. uint32_t port_flags,
  134. uint32_t port_type);
  135. void
  136. jack_controller_patchbay_port_disappeared_callback(
  137. void *server_context,
  138. uint64_t client_id,
  139. void *client_context,
  140. uint64_t port_id,
  141. void *port_context);
  142. void *
  143. jack_controller_patchbay_ports_connected_callback(
  144. void *server_context,
  145. uint64_t client1_id,
  146. void *client1_context,
  147. uint64_t port1_id,
  148. void *port1_context,
  149. uint64_t client2_id,
  150. void *client2_context,
  151. uint64_t port2_id,
  152. void *port2_context,
  153. uint64_t connection_id);
  154. void
  155. jack_controller_patchbay_ports_disconnected_callback(
  156. void *server_context,
  157. uint64_t client1_id,
  158. void *client1_context,
  159. uint64_t port1_id,
  160. void *port1_context,
  161. uint64_t client2_id,
  162. void *client2_context,
  163. uint64_t port2_id,
  164. void *port2_context,
  165. uint64_t connection_id,
  166. void *connection_context);
  167. extern struct jack_dbus_interface_descriptor g_jack_controller_iface_introspectable;
  168. extern struct jack_dbus_interface_descriptor g_jack_controller_iface_control;
  169. extern struct jack_dbus_interface_descriptor g_jack_controller_iface_configure;
  170. extern struct jack_dbus_interface_descriptor g_jack_controller_iface_patchbay;
  171. extern struct jack_dbus_interface_descriptor g_jack_controller_iface_transport;
  172. #endif /* #ifndef CONTROLLER_INTERNAL_H__04D54D51_3D79_49A2_A1DA_F8587E9E7F42__INCLUDED */