Index: libcanberra-0.29/src/driver-order.c =================================================================== --- libcanberra-0.29.orig/src/driver-order.c +++ libcanberra-0.29/src/driver-order.c @@ -30,6 +30,7 @@ #include "driver-order.h" const char* const ca_driver_order[] = { + "multi", #ifdef HAVE_PULSE "pulse", #endif Index: libcanberra-0.29/src/multi.c =================================================================== --- libcanberra-0.29.orig/src/multi.c +++ libcanberra-0.29/src/multi.c @@ -107,8 +107,7 @@ int driver_open(ca_context *c) { int ret = CA_SUCCESS; ca_return_val_if_fail(c, CA_ERROR_INVALID); - ca_return_val_if_fail(c->driver, CA_ERROR_NODRIVER); - ca_return_val_if_fail(!strncmp(c->driver, "multi", 5), CA_ERROR_NODRIVER); + ca_return_val_if_fail(!c->driver || strncmp(c->driver, "multi", 5) == 0, CA_ERROR_NODRIVER); ca_return_val_if_fail(!PRIVATE(c), CA_ERROR_STATE); if (!(c->private = p = ca_new0(struct private, 1))) @@ -212,8 +211,7 @@ int driver_change_props(ca_context *c, c struct backend *b; ca_return_val_if_fail(c, CA_ERROR_INVALID); - ca_return_val_if_fail(changed, CA_ERROR_INVALID); - ca_return_val_if_fail(merged, CA_ERROR_INVALID); + ca_return_val_if_fail(!c->driver || strncmp(c->driver, "multi", 5) == 0, CA_ERROR_NODRIVER); ca_return_val_if_fail(c->private, CA_ERROR_STATE); p = PRIVATE(c);