diff options
Diffstat (limited to 'src/pulsecore/core-struct.h')
-rw-r--r-- | src/pulsecore/core-struct.h | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/src/pulsecore/core-struct.h b/src/pulsecore/core-struct.h new file mode 100644 index 000000000..e24c81785 --- /dev/null +++ b/src/pulsecore/core-struct.h @@ -0,0 +1,99 @@ +#ifndef foocorestructhfoo +#define foocorestructhfoo + +/*** + This file is part of PulseAudio. + + Copyright 2004-2006 Lennart Poettering + + PulseAudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, + or (at your option) any later version. + + PulseAudio 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 Lesser General Public License + along with PulseAudio; if not, see <http://www.gnu.org/licenses/>. +***/ + +#include "core.h" + +/* The core structure of PulseAudio. Every PulseAudio daemon contains + * exactly one of these. It is used for storing kind of global + * variables for the daemon. */ + +struct pa_core { + pa_msgobject parent; + + pa_core_state_t state; + + /* A random value which may be used to identify this instance of + * PulseAudio. Not cryptographically secure in any way. */ + uint32_t cookie; + + pa_mainloop_api *mainloop; + + /* idxset of all kinds of entities */ + pa_idxset *clients, *cards, *sinks, *sources, *sink_inputs, *source_outputs, *modules, *scache; + + /* Some hashmaps for all sorts of entities */ + pa_hashmap *namereg, *shared; + + /* The default sink/source */ + pa_source *default_source; + pa_sink *default_sink; + + pa_channel_map default_channel_map; + pa_sample_spec default_sample_spec; + uint32_t alternate_sample_rate; + unsigned default_n_fragments, default_fragment_size_msec; + unsigned deferred_volume_safety_margin_usec; + int deferred_volume_extra_delay_usec; + unsigned lfe_crossover_freq; + + pa_defer_event *module_defer_unload_event; + pa_hashmap *modules_pending_unload; /* pa_module -> pa_module (hashmap-as-a-set) */ + + pa_defer_event *subscription_defer_event; + PA_LLIST_HEAD(pa_subscription, subscriptions); + PA_LLIST_HEAD(pa_subscription_event, subscription_event_queue); + pa_subscription_event *subscription_event_last; + + /* The mempool is used for data we write to, it's readonly for the client. */ + pa_mempool *mempool; + + /* Shared memory size, as specified either by daemon configuration + * or PA daemon defaults (~ 64 MiB). */ + size_t shm_size; + + pa_silence_cache silence_cache; + + pa_time_event *exit_event; + pa_time_event *scache_auto_unload_event; + + int exit_idle_time, scache_idle_time; + + bool flat_volumes:1; + bool disallow_module_loading:1; + bool disallow_exit:1; + bool running_as_daemon:1; + bool realtime_scheduling:1; + bool disable_remixing:1; + bool disable_lfe_remixing:1; + bool deferred_volume:1; + + pa_resample_method_t resample_method; + int realtime_priority; + + pa_server_type_t server_type; + pa_cpu_info cpu_info; + + /* hooks */ + pa_hook hooks[PA_CORE_HOOK_MAX]; +}; + +#endif /* foocorestructhfoo */ |