Skip to content

Commit

Permalink
Cherry-pick 276621@main (d148232). https://bugs.webkit.org/show_bug.c…
Browse files Browse the repository at this point in the history
…gi?id=271611

    [GStreamer][MSE] Leaks seek events
    https://bugs.webkit.org/show_bug.cgi?id=271611

    Reviewed by Alicia Boya Garcia.

    The event ref passed to the send_event vfunc is transfer-full, so it needs to be adopted. When
    chaining to the parent class we transfer it back.

    * Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
    (webKitMediaSrcSendEvent):

    Canonical link: https://commits.webkit.org/276621@main
  • Loading branch information
philn authored and aperezdc committed Mar 27, 2024
1 parent 5e86ad7 commit 357e650
Showing 1 changed file with 7 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -745,25 +745,26 @@ static GstStateChangeReturn webKitMediaSrcChangeState(GstElement* element, GstSt
return GST_ELEMENT_CLASS(webkit_media_src_parent_class)->change_state(element, transition);
}

static gboolean webKitMediaSrcSendEvent(GstElement* element, GstEvent* event)
static gboolean webKitMediaSrcSendEvent(GstElement* element, GstEvent* eventTransferFull)
{
switch (GST_EVENT_TYPE(event)) {
auto event = adoptGRef(eventTransferFull);
switch (GST_EVENT_TYPE(event.get())) {
case GST_EVENT_SEEK: {
double rate;
GstFormat format;
GstSeekType startType;
int64_t start;
gst_event_parse_seek(event, &rate, &format, nullptr, &startType, &start, nullptr, nullptr);
gst_event_parse_seek(event.get(), &rate, &format, nullptr, &startType, &start, nullptr, nullptr);
if (format != GST_FORMAT_TIME || startType != GST_SEEK_TYPE_SET) {
GST_ERROR_OBJECT(element, "Rejecting unsupported seek event: %" GST_PTR_FORMAT, event);
GST_ERROR_OBJECT(element, "Rejecting unsupported seek event: %" GST_PTR_FORMAT, event.get());
return false;
}
GST_DEBUG_OBJECT(element, "Handling seek event: %" GST_PTR_FORMAT, event);
GST_DEBUG_OBJECT(element, "Handling seek event: %" GST_PTR_FORMAT, event.get());
webKitMediaSrcSeek(WEBKIT_MEDIA_SRC(element), start, rate);
return true;
}
default:
return GST_ELEMENT_CLASS(webkit_media_src_parent_class)->send_event(element, event);
return GST_ELEMENT_CLASS(webkit_media_src_parent_class)->send_event(element, event.leakRef());
}
}

Expand Down

0 comments on commit 357e650

Please sign in to comment.