Modify canberra wrapper to allow specifying a sound file path

This commit is contained in:
Kovid Goyal 2021-09-24 07:31:02 +05:30
parent 4112061a47
commit bbdfdb978d
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
3 changed files with 8 additions and 6 deletions

View File

@ -343,7 +343,7 @@ void scroll_event(double, double, int, int);
void on_key_input(GLFWkeyevent *ev); void on_key_input(GLFWkeyevent *ev);
void request_window_attention(id_type, bool); void request_window_attention(id_type, bool);
#ifndef __APPLE__ #ifndef __APPLE__
void play_canberra_sound(const char *which_sound, const char *event_id); void play_canberra_sound(const char *which_sound, const char *event_id, bool is_path);
#endif #endif
SPRITE_MAP_HANDLE alloc_sprite_map(unsigned int, unsigned int); SPRITE_MAP_HANDLE alloc_sprite_map(unsigned int, unsigned int);
SPRITE_MAP_HANDLE free_sprite_map(SPRITE_MAP_HANDLE); SPRITE_MAP_HANDLE free_sprite_map(SPRITE_MAP_HANDLE);

View File

@ -145,12 +145,13 @@ load_libcanberra(void) {
} }
void void
play_canberra_sound(const char *which_sound, const char *event_id) { play_canberra_sound(const char *which_sound, const char *event_id, bool is_path) {
load_libcanberra(); load_libcanberra();
if (libcanberra_handle == NULL || canberra_ctx == NULL) return; if (libcanberra_handle == NULL || canberra_ctx == NULL) return;
const char *which_type = is_path ? "media.filename" : "event.id";
ca_context_play( ca_context_play(
canberra_ctx, 0, canberra_ctx, 0,
"event.id", which_sound, which_type, which_sound,
"event.description", event_id, "event.description", event_id,
NULL NULL
); );
@ -159,8 +160,9 @@ play_canberra_sound(const char *which_sound, const char *event_id) {
static PyObject* static PyObject*
play_desktop_sound(PyObject *self UNUSED, PyObject *args) { play_desktop_sound(PyObject *self UNUSED, PyObject *args) {
const char *which, *event_id = "test sound"; const char *which, *event_id = "test sound";
if (!PyArg_ParseTuple(args, "s|s", &which, &event_id)) return NULL; int is_path = 0;
play_canberra_sound(which, event_id); if (!PyArg_ParseTuple(args, "s|sp", &which, &event_id, &is_path)) return NULL;
play_canberra_sound(which, event_id, is_path);
Py_RETURN_NONE; Py_RETURN_NONE;
} }

View File

@ -1117,7 +1117,7 @@ ring_audio_bell(void) {
#ifdef __APPLE__ #ifdef __APPLE__
cocoa_system_beep(); cocoa_system_beep();
#else #else
play_canberra_sound("bell", "kitty bell"); play_canberra_sound("bell", "kitty bell", false);
#endif #endif
} }