]> code.delx.au - pulseaudio/commitdiff
create native-common-internal.h
authorLennart Poettering <lennart@poettering.net>
Tue, 17 Aug 2004 13:28:52 +0000 (13:28 +0000)
committerLennart Poettering <lennart@poettering.net>
Tue, 17 Aug 2004 13:28:52 +0000 (13:28 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@131 fefdeb5f-60dc-0310-8127-8f9354f1896f

polyp/mainloop-api.h
polyp/mainloop-signal.h
polyp/mainloop.h
polyp/native-common-internal.h [new file with mode: 0644]

index c1f40eaeabee6f30beaee22d0c662449e4c6c2f1..3d5ad24a7853c2a4dd39cdf94081ce600c9c9bb7 100644 (file)
  * \li A wrapper around the GLIB main loop. Use this to embed polypaudio into your GLIB/GTK+/GNOME programs (See \ref glib-mainloop.h)
  *
  * The structure pa_mainloop_api is used as vtable for the main loop abstraction.
+ *
+ * This mainloop abstraction layer has no direct support for UNIX signals. Generic, mainloop implementation agnostic support is available throught \ref mainloop-signal.h.
  * */
 
-
 PA_C_DECL_BEGIN
 
 /** A bitmask for IO events */
index 4dd6c552455eb427d3cc5788fa6be3e38134f591..0ff208273e0a90862d0cabd58a629a3f838e1354 100644 (file)
 
 PA_C_DECL_BEGIN
 
+/** \file
+ * UNIX signal support for main loops. In contrast to other
+ * main loop event sources such as timer and IO events, UNIX signal
+ * support requires modification of the global process
+ * environment. Due to this the generic main loop abstraction layer as
+ * defined in \ref mainloop-api.h doesn't have direct support for UNIX
+ * signals. However, you may hook signal support into an abstract main loop via the routines defined herein.
+ */
+
+/** Initialize the UNIX signal subsystem and bind it to the specified main loop */
 int pa_signal_init(struct pa_mainloop_api *api);
+
+/** Cleanup the signal subsystem */
 void pa_signal_done(void);
 
+/** \struct pa_signal_event
+ * A UNIX signal event source object */
 struct pa_signal_event;
 
+/** Create a new UNIX signal event source object */
 struct pa_signal_event* pa_signal_new(int signal, void (*callback) (struct pa_mainloop_api *api, struct pa_signal_event*e, int signal, void *userdata), void *userdata);
+
+/** Free a UNIX signal event source object */
 void pa_signal_free(struct pa_signal_event *e);
 
+/** Set a function that is called when the signal event source is destroyed. Use this to free the userdata argument if required */
 void pa_signal_set_destroy(struct pa_signal_event *e, void (*callback) (struct pa_mainloop_api *api, struct pa_signal_event*e, void *userdata));
 
 PA_C_DECL_END
index 4a4c85dfac8b28b27b693fb0c0ef6034f488256d..b51f42269fb48ec698b13088981ce7c5eb25dfdd 100644 (file)
 
 PA_C_DECL_BEGIN
 
+/** \file
+ * 
+ * A minimal main loop implementation based on the C library's poll()
+ * function. Using the routines defined herein you may create a simple
+ * main loop supporting the generic main loop abstraction layer as
+ * defined in \ref mainloop-api.h. This implementation is thread safe
+ * as long as you access the main loop object from a single thread only.*/
+
+/** \struct pa_mainloop
+ * A main loop object
+ */
 struct pa_mainloop;
 
+/** Allocate a new main loop object */
 struct pa_mainloop *pa_mainloop_new(void);
+
+/** Free a main loop object */
 void pa_mainloop_free(struct pa_mainloop* m);
 
+/** Run a single iteration of the main loop. Returns a negative value
+on error or exit request. If block is nonzero, block for events if
+none are queued. Optionally return the return value as specified with
+the main loop's quit() routine in the integer variable retval points
+to */
 int pa_mainloop_iterate(struct pa_mainloop *m, int block, int *retval);
+
+/** Run unlimited iterations of the main loop object until the main loop's quit() routine is called. */
 int pa_mainloop_run(struct pa_mainloop *m, int *retval);
 
+/** Return the abstract main loop abstraction layer vtable for this main loop. This calls pa_mainloop_iterate() iteratively.*/
 struct pa_mainloop_api* pa_mainloop_get_api(struct pa_mainloop*m);
 
 PA_C_DECL_END
diff --git a/polyp/native-common-internal.h b/polyp/native-common-internal.h
new file mode 100644 (file)
index 0000000..debb9bb
--- /dev/null
@@ -0,0 +1,133 @@
+#ifndef foonativecommonhfoo
+#define foonativecommonhfoo
+
+/* $Id$ */
+
+/***
+  This file is part of polypaudio.
+  polypaudio 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,
+  or (at your option) any later version.
+  polypaudio 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 polypaudio; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+  USA.
+***/
+
+#include "cdecl.h"
+
+PA_C_DECL_BEGIN
+
+enum {
+    PA_COMMAND_ERROR,
+    PA_COMMAND_TIMEOUT, /* pseudo command */
+    PA_COMMAND_REPLY,
+    PA_COMMAND_CREATE_PLAYBACK_STREAM,
+    PA_COMMAND_DELETE_PLAYBACK_STREAM,
+    PA_COMMAND_CREATE_RECORD_STREAM,
+    PA_COMMAND_DELETE_RECORD_STREAM,
+    PA_COMMAND_EXIT,
+    PA_COMMAND_REQUEST,
+    PA_COMMAND_AUTH,
+    PA_COMMAND_SET_NAME,
+    PA_COMMAND_LOOKUP_SINK,
+    PA_COMMAND_LOOKUP_SOURCE,
+    PA_COMMAND_DRAIN_PLAYBACK_STREAM,
+    PA_COMMAND_PLAYBACK_STREAM_KILLED,
+    PA_COMMAND_RECORD_STREAM_KILLED,
+    PA_COMMAND_STAT,
+    PA_COMMAND_GET_PLAYBACK_LATENCY,
+    
+    PA_COMMAND_CREATE_UPLOAD_STREAM,
+    PA_COMMAND_DELETE_UPLOAD_STREAM,
+    PA_COMMAND_FINISH_UPLOAD_STREAM,
+    PA_COMMAND_PLAY_SAMPLE,
+    PA_COMMAND_REMOVE_SAMPLE,
+
+    PA_COMMAND_GET_SERVER_INFO,
+    
+    PA_COMMAND_GET_SINK_INFO,
+    PA_COMMAND_GET_SINK_INFO_LIST,
+    PA_COMMAND_GET_SOURCE_INFO,
+    PA_COMMAND_GET_SOURCE_INFO_LIST,
+    PA_COMMAND_GET_MODULE_INFO,
+    PA_COMMAND_GET_MODULE_INFO_LIST,
+    PA_COMMAND_GET_CLIENT_INFO,
+    PA_COMMAND_GET_CLIENT_INFO_LIST,
+    PA_COMMAND_GET_SINK_INPUT_INFO,
+    PA_COMMAND_GET_SINK_INPUT_INFO_LIST,
+    PA_COMMAND_GET_SOURCE_OUTPUT_INFO,
+    PA_COMMAND_GET_SOURCE_OUTPUT_INFO_LIST,
+    PA_COMMAND_GET_SAMPLE_INFO,
+    PA_COMMAND_GET_SAMPLE_INFO_LIST,
+
+    PA_COMMAND_SUBSCRIBE,
+    PA_COMMAND_SUBSCRIBE_EVENT,
+
+    PA_COMMAND_SET_SINK_VOLUME,
+    PA_COMMAND_SET_SINK_INPUT_VOLUME,
+    
+    PA_COMMAND_MAX
+};
+
+enum {
+    PA_ERROR_OK,
+    PA_ERROR_ACCESS,
+    PA_ERROR_COMMAND,
+    PA_ERROR_INVALID,
+    PA_ERROR_EXIST,
+    PA_ERROR_NOENTITY,
+    PA_ERROR_CONNECTIONREFUSED,
+    PA_ERROR_PROTOCOL,
+    PA_ERROR_TIMEOUT,
+    PA_ERROR_AUTHKEY,
+    PA_ERROR_INTERNAL,
+    PA_ERROR_CONNECTIONTERMINATED,
+    PA_ERROR_KILLED,
+    PA_ERROR_INVALIDSERVER,
+    PA_ERROR_MAX
+};
+
+#define PA_NATIVE_COOKIE_LENGTH 256
+#define PA_NATIVE_COOKIE_FILE ".polypaudio-cookie"
+
+enum pa_subscription_mask {
+    PA_SUBSCRIPTION_MASK_NULL = 0,
+    PA_SUBSCRIPTION_MASK_SINK = 1,
+    PA_SUBSCRIPTION_MASK_SOURCE = 2,
+    PA_SUBSCRIPTION_MASK_SINK_INPUT = 4,
+    PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT = 8,
+    PA_SUBSCRIPTION_MASK_MODULE = 16,
+    PA_SUBSCRIPTION_MASK_CLIENT = 32,
+    PA_SUBSCRIPTION_MASK_SAMPLE_CACHE = 64,
+};
+
+enum pa_subscription_event_type {
+    PA_SUBSCRIPTION_EVENT_SINK = 0,
+    PA_SUBSCRIPTION_EVENT_SOURCE = 1,
+    PA_SUBSCRIPTION_EVENT_SINK_INPUT = 2,
+    PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 3,
+    PA_SUBSCRIPTION_EVENT_MODULE = 4,
+    PA_SUBSCRIPTION_EVENT_CLIENT = 5,
+    PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 6,
+    PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 7,
+
+    PA_SUBSCRIPTION_EVENT_NEW = 0,
+    PA_SUBSCRIPTION_EVENT_CHANGE = 16,
+    PA_SUBSCRIPTION_EVENT_REMOVE = 32,
+    PA_SUBSCRIPTION_EVENT_TYPE_MASK = 16+32,
+};
+
+#define pa_subscription_match_flags(m, t) (!!((m) & (1 << ((t) & PA_SUBSCRIPTION_EVENT_FACILITY_MASK))))
+
+PA_C_DECL_END
+
+#endif