Browse Source

dbus: dbus: delete event on error

When a second tracklist (append or remove) event was queued to the dbus
thread, it detected that an existing event was already there and
discarded the event without destroying it, despite the ownership being
transferred.

By checking whether the event was transferred or not and release it if
not, we don't risk leaking the event structures and the underlying items
hold by them.

No functional changes since those events were not discarded anymore.
pull/162/head
Alexandre Janniaux 3 years ago
committed by Jean-Baptiste Kempf
parent
commit
3db58145f1
  1. 8
      modules/control/dbus/dbus.c

8
modules/control/dbus/dbus.c

@ -1071,9 +1071,11 @@ playlist_on_items_added(vlc_playlist_t *playlist, size_t index,
void *data)
{
tracklist_append_event_t *append_event = tracklist_append_event_create(index, items, count);
add_event_signal(data,
bool added = add_event_signal(data,
&(callback_info_t){ .signal = SIGNAL_PLAYLIST_ITEM_APPEND,
.items_appended = append_event });
if (!added)
tracklist_append_event_destroy(append_event);
(void) playlist;
}
@ -1082,9 +1084,11 @@ playlist_on_items_removed(vlc_playlist_t *playlist,
size_t index, size_t count, void *data)
{
tracklist_remove_event_t *remove_event = tracklist_remove_event_create(index, count);
add_event_signal(data,
bool added = add_event_signal(data,
&(callback_info_t){ .signal = SIGNAL_PLAYLIST_ITEM_DELETED,
.items_removed = remove_event });
if (!added)
tracklist_remove_event_destroy(remove_event);
(void) playlist;
}

Loading…
Cancel
Save