Accepting request 726752 from home:iznogood:branches:GNOME:Factory
New stable release OBS-URL: https://build.opensuse.org/request/show/726752 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/webkit2gtk3?expand=0&rev=228
This commit is contained in:
@@ -1,125 +0,0 @@
|
||||
Subversion Revision: 247135
|
||||
# diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
|
||||
# index 07cd6ac5cbeb6bd3bc7f3289a272d6dfed27db49..686f59f42f1914746c3e74d18b7491e947475237 100644
|
||||
# --- a/Source/WebCore/ChangeLog
|
||||
# +++ b/Source/WebCore/ChangeLog
|
||||
# @@ -1,3 +1,34 @@
|
||||
# +2019-07-04 Charlie Turner <cturner@igalia.com>
|
||||
# +
|
||||
# + REGRESSION(r243197): [GStreamer] Web process hangs when scrolling twitter timeline which contains HLS videos
|
||||
# + https://bugs.webkit.org/show_bug.cgi?id=197558
|
||||
# +
|
||||
# + Reviewed by NOBODY (OOPS!).
|
||||
# +
|
||||
# + Not covered, I have a test locally that would probably trigger the
|
||||
# + deadlock if the network requests took a realistic amount of time,
|
||||
# + but from a local webserver the window of time to hit this deadlock
|
||||
# + is too narrow.
|
||||
# +
|
||||
# + * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
|
||||
# + (webkit_web_src_init): Make the websrc start asynchronously, this
|
||||
# + allows the main thread to be free to complete resource loader
|
||||
# + setup.
|
||||
# + (webKitWebSrcCreate): Calling start() from the create() vfunc is a
|
||||
# + recipe for deadlock, since BaseSrc holds the streaming lock during
|
||||
# + seeks, and then calls create(). In these cases, we do not want to
|
||||
# + notify async-completion, since we've already completed from the
|
||||
# + necessarily preceeding start() vfunc, and calling it again would
|
||||
# + require the stream-lock and deadlock us.
|
||||
# + (webKitWebSrcStart): Refactor to use webKitWebSrcMakeRequest, but
|
||||
# + ensuring that we do perform an async-complete notification.
|
||||
# + (webKitWebSrcMakeRequest): What Start() used to be, but now can be
|
||||
# + toggled when to notify of async-completion. Start() no longer
|
||||
# + blocks, since the return value of initiating a resource loader is
|
||||
# + of no interest to the callers.
|
||||
# + (webKitWebSrcCloseSession): Similarly to Start(), we do not need
|
||||
# + to wait for the completion of cancelled net requests.
|
||||
# +
|
||||
# 2019-07-03 Eric Carlson <eric.carlson@apple.com>
|
||||
#
|
||||
# [MSE] Add more debug and error logging
|
||||
diff --git a/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp b/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
|
||||
index 121884a10ad51151f97ac07c550c236e95e6ded9..12b21ae3bfd3c67691a5c5ba567f9b06c1a2f372 100644
|
||||
--- a/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
|
||||
+++ b/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
|
||||
@@ -156,6 +156,7 @@ static void webKitWebSrcSetProperty(GObject*, guint propertyID, const GValue*, G
|
||||
static void webKitWebSrcGetProperty(GObject*, guint propertyID, GValue*, GParamSpec*);
|
||||
static GstStateChangeReturn webKitWebSrcChangeState(GstElement*, GstStateChange);
|
||||
static GstFlowReturn webKitWebSrcCreate(GstPushSrc*, GstBuffer**);
|
||||
+static gboolean webKitWebSrcMakeRequest(GstBaseSrc*, bool);
|
||||
static gboolean webKitWebSrcStart(GstBaseSrc*);
|
||||
static gboolean webKitWebSrcStop(GstBaseSrc*);
|
||||
static gboolean webKitWebSrcGetSize(GstBaseSrc*, guint64* size);
|
||||
@@ -260,6 +261,7 @@ static void webkit_web_src_init(WebKitWebSrc* src)
|
||||
|
||||
webkitWebSrcReset(src);
|
||||
gst_base_src_set_automatic_eos(GST_BASE_SRC_CAST(src), FALSE);
|
||||
+ gst_base_src_set_async(GST_BASE_SRC_CAST(src), TRUE);
|
||||
}
|
||||
|
||||
static void webKitWebSrcDispose(GObject* object)
|
||||
@@ -361,7 +363,12 @@ static GstFlowReturn webKitWebSrcCreate(GstPushSrc* pushSrc, GstBuffer** buffer)
|
||||
uint64_t requestedPosition = priv->requestedPosition;
|
||||
webKitWebSrcStop(baseSrc);
|
||||
priv->requestedPosition = requestedPosition;
|
||||
- webKitWebSrcStart(baseSrc);
|
||||
+ // Do not notify async-completion, in seeking flows, we will
|
||||
+ // be called from GstBaseSrc's perform_seek vfunc, which holds
|
||||
+ // a streaming lock in our frame. Hence, we would deadlock
|
||||
+ // trying to notify async completion, since that also requires
|
||||
+ // the streaming lock.
|
||||
+ webKitWebSrcMakeRequest(baseSrc, false);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -496,6 +503,14 @@ static gboolean webKitWebSrcProcessExtraHeaders(GQuark fieldId, const GValue* va
|
||||
}
|
||||
|
||||
static gboolean webKitWebSrcStart(GstBaseSrc* baseSrc)
|
||||
+{
|
||||
+ // This method should only be called by BaseSrc, do not call it
|
||||
+ // from ourselves unless you ensure the streaming lock is not
|
||||
+ // held. If it is, you will deadlock the WebProcess.
|
||||
+ return webKitWebSrcMakeRequest(baseSrc, true);
|
||||
+}
|
||||
+
|
||||
+static gboolean webKitWebSrcMakeRequest(GstBaseSrc* baseSrc, bool notifyAsyncCompletion)
|
||||
{
|
||||
WebKitWebSrc* src = WEBKIT_WEB_SRC(baseSrc);
|
||||
WebKitWebSrcPrivate* priv = src->priv;
|
||||
@@ -582,7 +597,7 @@ static gboolean webKitWebSrcStart(GstBaseSrc* baseSrc)
|
||||
request.setHTTPHeaderField(HTTPHeaderName::IcyMetadata, "1");
|
||||
|
||||
GRefPtr<WebKitWebSrc> protector = WTF::ensureGRef(src);
|
||||
- priv->notifier->notifyAndWait(MainThreadSourceNotification::Start, [protector, request = WTFMove(request)] {
|
||||
+ priv->notifier->notify(MainThreadSourceNotification::Start, [protector, request = WTFMove(request), src, notifyAsyncCompletion] {
|
||||
WebKitWebSrcPrivate* priv = protector->priv;
|
||||
if (!priv->loader)
|
||||
priv->loader = priv->player->createResourceLoader();
|
||||
@@ -594,13 +609,16 @@ static gboolean webKitWebSrcStart(GstBaseSrc* baseSrc)
|
||||
if (priv->resource) {
|
||||
priv->resource->setClient(std::make_unique<CachedResourceStreamingClient>(protector.get(), ResourceRequest(request)));
|
||||
GST_DEBUG_OBJECT(protector.get(), "Started request");
|
||||
+ if (notifyAsyncCompletion)
|
||||
+ gst_base_src_start_complete(GST_BASE_SRC(src), GST_FLOW_OK);
|
||||
} else {
|
||||
GST_ERROR_OBJECT(protector.get(), "Failed to setup streaming client");
|
||||
+ if (notifyAsyncCompletion)
|
||||
+ gst_base_src_start_complete(GST_BASE_SRC(src), GST_FLOW_ERROR);
|
||||
priv->loader = nullptr;
|
||||
}
|
||||
});
|
||||
|
||||
- GST_DEBUG_OBJECT(src, "Resource loader started");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -609,7 +627,7 @@ static void webKitWebSrcCloseSession(WebKitWebSrc* src)
|
||||
WebKitWebSrcPrivate* priv = src->priv;
|
||||
GRefPtr<WebKitWebSrc> protector = WTF::ensureGRef(src);
|
||||
|
||||
- priv->notifier->notifyAndWait(MainThreadSourceNotification::Stop, [protector, keepAlive = priv->keepAlive] {
|
||||
+ priv->notifier->notify(MainThreadSourceNotification::Stop, [protector, keepAlive = priv->keepAlive] {
|
||||
WebKitWebSrcPrivate* priv = protector->priv;
|
||||
|
||||
GST_DEBUG_OBJECT(protector.get(), "Stopping resource loader");
|
@@ -1,3 +1,23 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 28 12:40:21 UTC 2019 - Bjørn Lie <bjorn.lie@gmail.com>
|
||||
|
||||
- Update to version 2.24.4:
|
||||
+ Updated the user agent string to make happy certain websites
|
||||
which would claim that the browser being used was unsupported.
|
||||
+ Improve loading of multimedia streams to avoid memory
|
||||
exhaustion due to excessive caching.
|
||||
+ Fix display of documents with MIME type application/xml in the
|
||||
Web Inspector, when loaded using XmlHttpRequest.
|
||||
+ Fix a hang while scrolling certain websites which include HLS
|
||||
video content (Twitter, for example).
|
||||
+ Fix rounding artifacts in volume levels for media playback.
|
||||
+ Fix several crashes and rendering issues.
|
||||
+ Fix the build with video track support disabled.
|
||||
+ Fix the build with OpenGL support disabled.
|
||||
+ Fix build issue which would cause media controls to disappear
|
||||
when Python 3.x was used during the build process.
|
||||
- Drop webkit2gtk3-bwo197558-hang.patch: Fixed upstream.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Jul 14 14:21:58 UTC 2019 - Rich Coe <rcoe@wi.rr.com>
|
||||
|
||||
|
@@ -42,7 +42,7 @@
|
||||
%bcond_with python3
|
||||
%endif
|
||||
Name: webkit2gtk3
|
||||
Version: 2.24.3
|
||||
Version: 2.24.4
|
||||
Release: 0
|
||||
Summary: Library for rendering web content, GTK+ Port
|
||||
License: LGPL-2.0-or-later AND BSD-3-Clause
|
||||
@@ -53,8 +53,6 @@ Source1: https://webkitgtk.org/releases/%{_name}-%{version}.tar.xz.asc
|
||||
Source98: baselibs.conf
|
||||
Source99: webkit2gtk3.keyring
|
||||
|
||||
Patch1: webkit2gtk3-bwo197558-hang.patch
|
||||
|
||||
BuildRequires: Mesa-libEGL-devel
|
||||
BuildRequires: Mesa-libGL-devel
|
||||
BuildRequires: Mesa-libGLESv1_CM-devel
|
||||
|
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:940d746d7e82c357222feb5b3f44c4b201e81df7d81ddca5ca2bf3ae0acf6c51
|
||||
size 17912032
|
@@ -1,6 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iF0EABEDAB0WIQTX/PYc+aLeqzHYG9Pz0yLQ7EWCwwUCXRshVwAKCRDz0yLQ7EWC
|
||||
w2yRAJ4nOx/Y5x5kVs2Pe5EJA66Vvgzn4ACbBGLGKPomAHV1bZ85cbCGUU5U+qk=
|
||||
=u5xC
|
||||
-----END PGP SIGNATURE-----
|
3
webkitgtk-2.24.4.tar.xz
Normal file
3
webkitgtk-2.24.4.tar.xz
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8668b129c026624ec226a4cccf4995f9d26f3e88fc28ab75b0e965f3c32b7dd8
|
||||
size 17575784
|
6
webkitgtk-2.24.4.tar.xz.asc
Normal file
6
webkitgtk-2.24.4.tar.xz.asc
Normal file
@@ -0,0 +1,6 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iF0EABECAB0WIQRao7wzT9fjNp58d7KRxVnb5MkSOwUCXWWtkwAKCRCRxVnb5MkS
|
||||
O6HfAJ9Uamig8eAP6nI4j6caUicNHdJThgCfWmchw0oUYANxNHuqyjt/cEgktt8=
|
||||
=dhcx
|
||||
-----END PGP SIGNATURE-----
|
Reference in New Issue
Block a user