summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-05-27 22:34:17 +0000
committerLennart Poettering <lennart@poettering.net>2008-05-27 22:34:17 +0000
commit5a3d4d025392f13210902c99e4747cefd5461491 (patch)
tree146a2659c12d86d1034d84cfcd4d41cd6af2d67e
parent5e7628b873a2b34eee43598a2f3ee4363081dc11 (diff)
beef up example
git-svn-id: file:///home/lennart/svn/public/libcanberra/trunk@33 01b60673-d06a-42c0-afdd-89cb8e0f78ac
-rw-r--r--src/test-canberra.c82
1 files changed, 43 insertions, 39 deletions
diff --git a/src/test-canberra.c b/src/test-canberra.c
index b54cba0..6dd1d5b 100644
--- a/src/test-canberra.c
+++ b/src/test-canberra.c
@@ -32,63 +32,67 @@
#include "canberra.h"
+static void callback(ca_context *c, uint32_t id, int error, void *userdata) {
+ fprintf(stderr, "callback called for id %u, error '%s', userdata=%p\n", id, ca_strerror(error), userdata);
+}
+
int main(int argc, char *argv[]) {
ca_context *c;
+ ca_proplist *p;
+ int ret;
setlocale(LC_ALL, "");
- ca_context_create(&c);
+ ret = ca_context_create(&c);
+ fprintf(stderr, "create: %s\n", ca_strerror(ret));
/* Initialize a few meta variables for the following play()
* calls. They stay valid until they are overwritten with
- * ca_context_set() again. */
- ca_context_change_props(c,
- CA_PROP_APPLICATION_NAME, "An example",
- CA_PROP_APPLICATION_ID, "org.freedesktop.libcanberra.Test",
- CA_PROP_WINDOW_X11_DISPLAY, getenv("DISPLAY"),
- NULL);
-
- /* .. */
-
- ca_context_open(c);
-
-
- fprintf(stderr, "Play ...\n");
-
- /* Signal a sound event. The meta data passed here overwrites the
- * data set in any previous ca_context_set() calls. */
-/* ca_context_play(c, 0, */
-/* CA_PROP_EVENT_ID, "desktop-logout", */
-/* CA_PROP_MEDIA_FILENAME, "/usr/share/sounds/bar.wav", */
-/* CA_PROP_MEDIA_NAME, "User has logged off from session", */
-/* CA_PROP_MEDIA_LANGUAGE, "en_EN", */
-/* NULL); */
-
- /* .. */
-
-
- ca_context_play(c, 1,
- CA_PROP_EVENT_ID, "email-message-new",
- CA_PROP_MEDIA_FILENAME, "/usr/share/sounds/uxknkurz.wav",
- CA_PROP_MEDIA_NAME, "New email received",
- CA_PROP_CANBERRA_CACHE_CONTROL, "permanent",
- NULL);
- /* .. */
+ * ca_context_change_props() again. */
+ ret = ca_context_change_props(c,
+ CA_PROP_APPLICATION_NAME, "An example",
+ CA_PROP_APPLICATION_ID, "org.freedesktop.libcanberra.Test",
+ CA_PROP_WINDOW_X11_DISPLAY, getenv("DISPLAY"),
+ NULL);
+ fprintf(stderr, "change_props: %s\n", ca_strerror(ret));
+
+ ret = ca_context_open(c);
+ fprintf(stderr, "open: %s\n", ca_strerror(ret));
+
+ /* Now trigger a sound event, the quick version */
+ ret = ca_context_play(c, 0,
+ CA_PROP_EVENT_ID, "desktop-logout",
+ CA_PROP_MEDIA_FILENAME, "/usr/share/sounds/bar.wav",
+ CA_PROP_MEDIA_NAME, "User has logged off from session",
+ CA_PROP_MEDIA_LANGUAGE, "en_EN",
+ CA_PROP_CANBERRA_CACHE_CONTROL, "permanent",
+ NULL);
+ fprintf(stderr, "play: %s\n", ca_strerror(ret));
+
+ /* Now trigger a sound event, the complex version */
+ ca_proplist_create(&p);
+ ca_proplist_sets(p, CA_PROP_EVENT_ID, "email-message-new");
+ ca_proplist_sets(p, CA_PROP_MEDIA_FILENAME, "/usr/share/sounds/uxknkurz.wav");
+ ca_proplist_sets(p, CA_PROP_MEDIA_NAME, "New email received");
+ ca_proplist_setf(p, "test.foo", "%u", 4711);
+ ret = ca_context_play_full(c, 1, p, callback, (void*) 0x4711);
+ ca_proplist_destroy(p);
+ fprintf(stderr, "play_full: %s\n", ca_strerror(ret));
fprintf(stderr, "Sleep half a second ...\n");
usleep(500000);
-
- fprintf(stderr, "Cancel ...\n");
- /* Stop one sounds */
- ca_context_cancel(c, 0);
+ /* Stop one sound */
+ ret = ca_context_cancel(c, 0);
+ fprintf(stderr, "cancel: %s\n", ca_strerror(ret));
fprintf(stderr, "Sleep 2s ...\n");
sleep(2);
/* .. */
- ca_context_destroy(c);
+ ret = ca_context_destroy(c);
+ fprintf(stderr, "destroy: %s\n", ca_strerror(ret));
return 0;
}