create native-common-internal.h

git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@131 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
Lennart Poettering 2004-08-17 13:28:52 +00:00
parent aff43ddabb
commit bee750bbb3
4 changed files with 175 additions and 1 deletions

View file

@ -38,9 +38,10 @@
* \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 */

View file

@ -27,14 +27,32 @@
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

View file

@ -27,14 +27,36 @@
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

View file

@ -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