dbus: fix card profile change signals

The "profile->card != c->card" check always evaluated to false, so the
CardProfileUpdated signal was never sent. The reason: call_data was
assigned to a pa_card_profile pointer, but the correct type is a pa_card
pointer.
This commit is contained in:
Tanu Kaskinen 2017-02-18 18:40:42 +02:00
parent 6022a1ee99
commit 0ced45265c

View file

@ -457,27 +457,27 @@ static void check_card_proplist(pa_dbusiface_card *c) {
} }
static pa_hook_result_t card_profile_changed_cb(void *hook_data, void *call_data, void *slot_data) { static pa_hook_result_t card_profile_changed_cb(void *hook_data, void *call_data, void *slot_data) {
pa_dbusiface_card *c = slot_data; pa_dbusiface_card *dbus_card = slot_data;
pa_card_profile *profile = call_data; pa_card *core_card = call_data;
const char *object_path; const char *object_path;
DBusMessage *signal_msg; DBusMessage *signal_msg;
if (profile->card != c->card) if (dbus_card->card != core_card)
return PA_HOOK_OK; return PA_HOOK_OK;
c->active_profile = c->card->active_profile; dbus_card->active_profile = dbus_card->card->active_profile;
object_path = pa_dbusiface_card_profile_get_path(pa_hashmap_get(c->profiles, c->active_profile->name)); object_path = pa_dbusiface_card_profile_get_path(pa_hashmap_get(dbus_card->profiles, dbus_card->active_profile->name));
pa_assert_se(signal_msg = dbus_message_new_signal(c->path, pa_assert_se(signal_msg = dbus_message_new_signal(dbus_card->path,
PA_DBUSIFACE_CARD_INTERFACE, PA_DBUSIFACE_CARD_INTERFACE,
signals[SIGNAL_ACTIVE_PROFILE_UPDATED].name)); signals[SIGNAL_ACTIVE_PROFILE_UPDATED].name));
pa_assert_se(dbus_message_append_args(signal_msg, DBUS_TYPE_OBJECT_PATH, &object_path, DBUS_TYPE_INVALID)); pa_assert_se(dbus_message_append_args(signal_msg, DBUS_TYPE_OBJECT_PATH, &object_path, DBUS_TYPE_INVALID));
pa_dbus_protocol_send_signal(c->dbus_protocol, signal_msg); pa_dbus_protocol_send_signal(dbus_card->dbus_protocol, signal_msg);
dbus_message_unref(signal_msg); dbus_message_unref(signal_msg);
check_card_proplist(c); check_card_proplist(dbus_card);
return PA_HOOK_OK; return PA_HOOK_OK;
} }