|
Packit |
3ae693 |
/*-*- Mode: C; c-basic-offset: 8 -*-*/
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
/***
|
|
Packit |
3ae693 |
This file is part of libcanberra.
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
Copyright 2008 Lennart Poettering
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
libcanberra is free software; you can redistribute it and/or modify
|
|
Packit |
3ae693 |
it under the terms of the GNU Lesser General Public License as
|
|
Packit |
3ae693 |
published by the Free Software Foundation, either version 2.1 of the
|
|
Packit |
3ae693 |
License, or (at your option) any later version.
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
libcanberra is distributed in the hope that it will be useful, but
|
|
Packit |
3ae693 |
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
3ae693 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
3ae693 |
Lesser General Public License for more details.
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
You should have received a copy of the GNU Lesser General Public
|
|
Packit |
3ae693 |
License along with libcanberra. If not, see
|
|
Packit |
3ae693 |
<http://www.gnu.org/licenses/>.
|
|
Packit |
3ae693 |
***/
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
#ifdef HAVE_CONFIG_H
|
|
Packit |
3ae693 |
#include <config.h>
|
|
Packit |
3ae693 |
#endif
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
#include <unistd.h>
|
|
Packit |
3ae693 |
#include <stdlib.h>
|
|
Packit |
3ae693 |
#include <locale.h>
|
|
Packit |
3ae693 |
#include <stdio.h>
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
#include "canberra.h"
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
static void callback(ca_context *c, uint32_t id, int error, void *userdata) {
|
|
Packit |
3ae693 |
fprintf(stderr, "callback called for id %u, error '%s', userdata=%p\n", id, ca_strerror(error), userdata);
|
|
Packit |
3ae693 |
}
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
int main(int argc, char *argv[]) {
|
|
Packit |
3ae693 |
ca_context *c;
|
|
Packit |
3ae693 |
ca_proplist *p;
|
|
Packit |
3ae693 |
int ret;
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
setlocale(LC_ALL, "");
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
ret = ca_context_create(&c);
|
|
Packit |
3ae693 |
fprintf(stderr, "create: %s\n", ca_strerror(ret));
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
/* Initialize a few meta variables for the following play()
|
|
Packit |
3ae693 |
* calls. They stay valid until they are overwritten with
|
|
Packit |
3ae693 |
* ca_context_change_props() again. */
|
|
Packit |
3ae693 |
ret = ca_context_change_props(c,
|
|
Packit |
3ae693 |
CA_PROP_APPLICATION_NAME, "An example",
|
|
Packit |
3ae693 |
CA_PROP_APPLICATION_ID, "org.freedesktop.libcanberra.Test",
|
|
Packit |
3ae693 |
CA_PROP_WINDOW_X11_SCREEN, getenv("DISPLAY"),
|
|
Packit |
3ae693 |
NULL);
|
|
Packit |
3ae693 |
fprintf(stderr, "change_props: %s\n", ca_strerror(ret));
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
ret = ca_context_open(c);
|
|
Packit |
3ae693 |
fprintf(stderr, "open: %s\n", ca_strerror(ret));
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
/* Now trigger a sound event, the quick version */
|
|
Packit |
3ae693 |
ret = ca_context_play(c, 0,
|
|
Packit |
3ae693 |
CA_PROP_EVENT_ID, "desktop-login",
|
|
Packit |
3ae693 |
CA_PROP_MEDIA_FILENAME, "/usr/share/sounds/bar.wav",
|
|
Packit |
3ae693 |
CA_PROP_MEDIA_NAME, "User has logged off from session",
|
|
Packit |
3ae693 |
CA_PROP_MEDIA_LANGUAGE, "en_EN",
|
|
Packit |
3ae693 |
CA_PROP_CANBERRA_CACHE_CONTROL, "permanent",
|
|
Packit |
3ae693 |
NULL);
|
|
Packit |
3ae693 |
fprintf(stderr, "play: %s\n", ca_strerror(ret));
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
/* Now trigger a sound event, the complex version */
|
|
Packit |
3ae693 |
ca_proplist_create(&p);
|
|
Packit |
3ae693 |
ca_proplist_sets(p, CA_PROP_EVENT_ID, "desktop-logout");
|
|
Packit |
3ae693 |
ca_proplist_sets(p, CA_PROP_MEDIA_FILENAME, "/usr/share/sounds/uxknkurz.wav");
|
|
Packit |
3ae693 |
ca_proplist_sets(p, CA_PROP_MEDIA_NAME, "New email received");
|
|
Packit |
3ae693 |
ca_proplist_setf(p, "test.foo", "%u", 4711);
|
|
Packit |
3ae693 |
ret = ca_context_play_full(c, 1, p, callback, (void*) 0x4711);
|
|
Packit |
3ae693 |
ca_proplist_destroy(p);
|
|
Packit |
3ae693 |
fprintf(stderr, "play_full: %s\n", ca_strerror(ret));
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
/* Now trigger a sound event, by filename */
|
|
Packit |
3ae693 |
ret = ca_context_play(c, 2,
|
|
Packit |
3ae693 |
CA_PROP_MEDIA_FILENAME, "/usr/share/sounds/freedesktop/stereo/audio-channel-front-left.ogg",
|
|
Packit |
3ae693 |
CA_PROP_MEDIA_NAME, "Front Left",
|
|
Packit |
3ae693 |
CA_PROP_MEDIA_LANGUAGE, "en_EN",
|
|
Packit |
3ae693 |
NULL);
|
|
Packit |
3ae693 |
fprintf(stderr, "play (by filename): %s\n", ca_strerror(ret));
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
fprintf(stderr, "Sleep half a second ...\n");
|
|
Packit |
3ae693 |
usleep(500000);
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
/* Stop one sound */
|
|
Packit |
3ae693 |
/* ret = ca_context_cancel(c, 0); */
|
|
Packit |
3ae693 |
/* fprintf(stderr, "cancel: %s\n", ca_strerror(ret)); */
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
fprintf(stderr, "Sleep 2s ...\n");
|
|
Packit |
3ae693 |
sleep(2);
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
/* .. */
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
ret = ca_context_destroy(c);
|
|
Packit |
3ae693 |
fprintf(stderr, "destroy: %s\n", ca_strerror(ret));
|
|
Packit |
3ae693 |
|
|
Packit |
3ae693 |
return 0;
|
|
Packit |
3ae693 |
}
|