summaryrefslogtreecommitdiffstats
path: root/src/pulsecore/module.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-03-15 15:15:36 +0000
committerLennart Poettering <lennart@poettering.net>2008-03-15 15:15:36 +0000
commit8d9bdaca5a4092cd078d79c58c4bfa0da277bff4 (patch)
treecbb37fd94b84fb8547c50f07f50c81b26098be99 /src/pulsecore/module.h
parentdd81a907a7a596c20284baf44977dcb6a9d8cf91 (diff)
parent6ad7621b61d40dba9b877379ef5f15f73a2ed268 (diff)
really create glitch-free branch
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2120 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src/pulsecore/module.h')
-rw-r--r--src/pulsecore/module.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/pulsecore/module.h b/src/pulsecore/module.h
new file mode 100644
index 00000000..25f122d1
--- /dev/null
+++ b/src/pulsecore/module.h
@@ -0,0 +1,87 @@
+#ifndef foomodulehfoo
+#define foomodulehfoo
+
+/* $Id$ */
+
+/***
+ 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 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, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA.
+***/
+
+#include <inttypes.h>
+#include <ltdl.h>
+
+typedef struct pa_module pa_module;
+
+#include <pulsecore/core.h>
+#include <pulsecore/modinfo.h>
+
+struct pa_module {
+ pa_core *core;
+ char *name, *argument;
+ uint32_t index;
+
+ lt_dlhandle dl;
+
+ int (*init)(pa_module*m);
+ void (*done)(pa_module*m);
+
+ void *userdata;
+
+ int n_used;
+ int auto_unload;
+ time_t last_used_time;
+
+ int unload_requested;
+};
+
+pa_module* pa_module_load(pa_core *c, const char *name, const char*argument);
+void pa_module_unload(pa_core *c, pa_module *m);
+void pa_module_unload_by_index(pa_core *c, uint32_t idx);
+
+void pa_module_unload_all(pa_core *c);
+void pa_module_unload_unused(pa_core *c);
+
+void pa_module_unload_request(pa_module *m);
+
+void pa_module_set_used(pa_module*m, int used);
+
+#define PA_MODULE_AUTHOR(s) \
+ const char *pa__get_author(void) { return s; } \
+ struct __stupid_useless_struct_to_allow_trailing_semicolon
+
+#define PA_MODULE_DESCRIPTION(s) \
+ const char *pa__get_description(void) { return s; } \
+ struct __stupid_useless_struct_to_allow_trailing_semicolon
+
+#define PA_MODULE_USAGE(s) \
+ const char *pa__get_usage(void) { return s; } \
+ struct __stupid_useless_struct_to_allow_trailing_semicolon
+
+#define PA_MODULE_VERSION(s) \
+ const char * pa__get_version(void) { return s; } \
+ struct __stupid_useless_struct_to_allow_trailing_semicolon
+
+#define PA_MODULE_LOAD_ONCE(b) \
+ pa_bool_t pa__load_once(void) { return b; } \
+ struct __stupid_useless_struct_to_allow_trailing_semicolon
+
+pa_modinfo *pa_module_get_info(pa_module *m);
+
+#endif