/* -*- Mode: C ; c-basic-offset: 4 -*- */ /* Copyright (C) 2007,2008,2011 Nedko Arnaudov Copyright (C) 2007-2008 Juuso Alasuutari 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. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef CONTROLLER_INTERNAL_H__04D54D51_3D79_49A2_A1DA_F8587E9E7F42__INCLUDED #define CONTROLLER_INTERNAL_H__04D54D51_3D79_49A2_A1DA_F8587E9E7F42__INCLUDED #include #include #include #include #include #include "jackdbus.h" #include "list.h" #include "params.h" struct jack_controller_slave_driver { struct list_head siblings; char * name; jackctl_driver_t * handle; bool loaded; }; struct jack_session_pending_command { struct list_head siblings; DBusConnection * connection; DBusMessage * message; jack_session_event_type_t type; const char * target; const char * path; }; struct jack_controller { jackctl_server_t *server; jack_params_handle params; void *patchbay_context; bool started; jack_client_t *client; unsigned int xruns; struct list_head slave_drivers; bool slave_drivers_set; struct jack_parameter slave_drivers_vparam; union jackctl_parameter_value slave_drivers_vparam_value; struct jack_dbus_object_descriptor dbus_descriptor; pthread_mutex_t lock; struct list_head session_pending_commands; long pending_save; /* uptime seconds */ }; #define DEFAULT_DRIVER "dummy" #define JACK_CONF_HEADER_TEXT \ "JACK settings, as persisted by D-Bus object.\n" \ "You probably don't want to edit this because\n" \ "it will be overwritten next time jackdbus saves.\n" void jack_controller_pending_save( struct jack_controller *controller_ptr); bool jack_controller_start_server( struct jack_controller *controller_ptr, void *dbus_call_context_ptr); bool jack_controller_stop_server( struct jack_controller *controller_ptr, void *dbus_call_context_ptr); bool jack_controller_switch_master( struct jack_controller *controller_ptr, void *dbus_call_context_ptr); bool jack_controller_add_slave_driver( struct jack_controller *controller_ptr, const char * driver_name); bool jack_controller_remove_slave_driver( struct jack_controller *controller_ptr, const char * driver_name); bool jack_controller_select_driver( struct jack_controller *controller_ptr, const char * driver_name); bool jack_controller_load_internal( struct jack_controller *controller_ptr, const char * internal_name); bool jack_controller_unload_internal( struct jack_controller *controller_ptr, const char * internal_name); void jack_controller_deserialize_parameter_value( struct jack_controller *controller_ptr, const char * const * address, const char * value); void jack_controller_serialize_parameter_value( const struct jack_parameter * param_ptr, char * value_buffer); bool jack_controller_patchbay_init( struct jack_controller *controller_ptr); void jack_controller_patchbay_uninit( struct jack_controller *controller_ptr); void * jack_controller_patchbay_client_appeared_callback( void * server_context, uint64_t client_id, const char *client_name); void jack_controller_patchbay_client_disappeared_callback( void *server_context, uint64_t client_id, void *client_context); void * jack_controller_patchbay_port_appeared_callback( void *server_context, uint64_t client_id, void *client_context, uint64_t port_id, const char *port_name, uint32_t port_flags, uint32_t port_type); void jack_controller_patchbay_port_disappeared_callback( void *server_context, uint64_t client_id, void *client_context, uint64_t port_id, void *port_context); void * jack_controller_patchbay_ports_connected_callback( void *server_context, uint64_t client1_id, void *client1_context, uint64_t port1_id, void *port1_context, uint64_t client2_id, void *client2_context, uint64_t port2_id, void *port2_context, uint64_t connection_id); void jack_controller_patchbay_ports_disconnected_callback( void *server_context, uint64_t client1_id, void *client1_context, uint64_t port1_id, void *port1_context, uint64_t client2_id, void *client2_context, uint64_t port2_id, void *port2_context, uint64_t connection_id, void *connection_context); extern struct jack_dbus_interface_descriptor g_jack_controller_iface_introspectable; extern struct jack_dbus_interface_descriptor g_jack_controller_iface_control; extern struct jack_dbus_interface_descriptor g_jack_controller_iface_configure; extern struct jack_dbus_interface_descriptor g_jack_controller_iface_patchbay; extern struct jack_dbus_interface_descriptor g_jack_controller_iface_session_manager; extern struct jack_dbus_interface_descriptor g_jack_controller_iface_transport; #endif /* #ifndef CONTROLLER_INTERNAL_H__04D54D51_3D79_49A2_A1DA_F8587E9E7F42__INCLUDED */