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:
2019-08-30 11:24:23 +00:00
committed by Git OBS Bridge
parent f6089e1057
commit e939e9daff
7 changed files with 30 additions and 137 deletions

View File

@@ -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");

View File

@@ -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>

View File

@@ -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

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:940d746d7e82c357222feb5b3f44c4b201e81df7d81ddca5ca2bf3ae0acf6c51
size 17912032

View File

@@ -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
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8668b129c026624ec226a4cccf4995f9d26f3e88fc28ab75b0e965f3c32b7dd8
size 17575784

View File

@@ -0,0 +1,6 @@
-----BEGIN PGP SIGNATURE-----
iF0EABECAB0WIQRao7wzT9fjNp58d7KRxVnb5MkSOwUCXWWtkwAKCRCRxVnb5MkS
O6HfAJ9Uamig8eAP6nI4j6caUicNHdJThgCfWmchw0oUYANxNHuqyjt/cEgktt8=
=dhcx
-----END PGP SIGNATURE-----