• Tim-Philipp Müller's avatar
    decodebin2: fix pad leak and problem with GWeakRef code · cd42611c
    Tim-Philipp Müller authored
    Follow-up to !160 and commit 6a99ad2c.
    
    Firstly, don't leak the sinkpad. g_weak_ref_get() returns
    a strong reference (unless it returns NULL), so that must
    be unrefed, as detected by the playbin-complex and
    discoverer unit tests.
    
    Next, if we do that we get invalid memory access when the
    final pad ref is dropped a few lines below after the
    request pad is released. The reason for this is that
    GWeakRefs are not movable once they're in use, because
    their address will be stored inside the object. In this
    case the GWeakRef was embedded inside the GstDemuxerPad
    struct which in turn was embedded inside the GArray data
    section, and when the GArray gets resized, the structs
    move. Just KISS and use a list with individual allocations
    for each DemuxerPad instead.
    cd42611c
Name
Last commit
Last update
..
adder Loading commit data...
app Loading commit data...
audioconvert Loading commit data...
audiomixer Loading commit data...
audiorate Loading commit data...
audioresample Loading commit data...
audiotestsrc Loading commit data...
encoding Loading commit data...
gio Loading commit data...
pbtypes Loading commit data...
playback Loading commit data...
rawparse Loading commit data...
subparse Loading commit data...
tcp Loading commit data...
typefind Loading commit data...
videoconvert Loading commit data...
videorate Loading commit data...
videoscale Loading commit data...
videotestsrc Loading commit data...
volume Loading commit data...
Makefile.am Loading commit data...
meson.build Loading commit data...