| 
							- #ifndef fooreservehfoo
 - #define fooreservehfoo
 - 
 - /***
 -   Copyright 2009 Lennart Poettering
 - 
 -   Permission is hereby granted, free of charge, to any person
 -   obtaining a copy of this software and associated documentation files
 -   (the "Software"), to deal in the Software without restriction,
 -   including without limitation the rights to use, copy, modify, merge,
 -   publish, distribute, sublicense, and/or sell copies of the Software,
 -   and to permit persons to whom the Software is furnished to do so,
 -   subject to the following conditions:
 - 
 -   The above copyright notice and this permission notice shall be
 -   included in all copies or substantial portions of the Software.
 - 
 -   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 -   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 -   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 -   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 -   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 -   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 -   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 -   SOFTWARE.
 - ***/
 - 
 - #include <dbus/dbus.h>
 - #include <inttypes.h>
 - 
 - # ifndef INT32_MIN
 - # define INT32_MIN     (-2147483647-1)
 - # endif
 - # ifndef INT32_MAX
 - # define INT32_MAX     (2147483647)
 - # endif
 - 
 - typedef struct rd_device rd_device;
 - 
 - /* Prototype for a function that is called whenever someone else wants
 -  * your application to release the device it has locked. A return
 -  * value <= 0 denies the request, a positive return value agrees to
 -  * it. Before returning your application should close the device in
 -  * question completely to make sure the new application may access
 -  * it. */
 - typedef int (*rd_request_cb_t)(
 - 	rd_device *d,
 - 	int forced);                  /* Non-zero if an application forcibly took the lock away without asking. If this is the case then the return value of this call is ignored. */
 - 
 - #ifdef __cplusplus
 - extern "C" {
 - #endif
 - 
 - /* Try to lock the device. Returns 0 on success, a negative errno
 -  * style return value on error. The DBus error might be set as well if
 -  * the error was caused D-Bus. */
 - int rd_acquire(
 - 	rd_device **d,                /* On success a pointer to the newly allocated rd_device object will be filled in here */
 - 	DBusConnection *connection,
 - 	const char *device_name,      /* The device to lock, e.g. "Audio0" */
 - 	const char *application_name, /* A human readable name of the application, e.g. "PulseAudio Sound Server" */
 - 	int32_t priority,             /* The priority for this application. If unsure use 0 */
 - 	rd_request_cb_t request_cb,   /* Will be called whenever someone requests that this device shall be released. May be NULL if priority is INT32_MAX */
 - 	DBusError *error);            /* If we fail due to a D-Bus related issue the error will be filled in here. May be NULL. */
 - 
 - /* Unlock (if needed) and destroy an rd_device object again */
 - void rd_release(rd_device *d);
 - 
 - /* Set the application device name for an rd_device object. Returns 0
 -  * on success, a negative errno style return value on error. */
 - int rd_set_application_device_name(rd_device *d, const char *name);
 - 
 - /* Attach a userdata pointer to an rd_device */
 - void rd_set_userdata(rd_device *d, void *userdata);
 - 
 - /* Query the userdata pointer from an rd_device. Returns NULL if no
 -  * userdata was set. */
 - void* rd_get_userdata(rd_device *d);
 - 
 - #ifdef __cplusplus
 - } /* extern "C" */
 - #endif
 - 
 - #endif
 
 
  |