Blame src/test-canberra.c

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
}