wpe: Reintroduce persistent WebContext
authorPhilippe Normand <philn@igalia.com>
Fri, 11 Mar 2022 17:02:55 +0000 (17:02 +0000)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 16 Mar 2022 09:07:21 +0000 (09:07 +0000)
A WebContext leak was introduced in MR
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2252.
If we wanted one WebContext per WebView we should also unref the
WebKitWebContext when destroying the WebView.

This patch reintroduces the persistent WebContext, initially part of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1484.

Fixes #1084

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1933>

subprojects/gst-plugins-bad/ext/wpe/WPEThreadedView.cpp

index b85039c..0c10bc2 100644 (file)
@@ -346,11 +346,13 @@ WPEView* WPEContextThread::createWPEView(GstWpeVideoSrc* src, GstGLContext* cont
 
     WPEView* view = nullptr;
     dispatch([&]() mutable {
-        auto* manager = webkit_website_data_manager_new_ephemeral();
-        auto web_context = webkit_web_context_new_with_website_data_manager(manager);
-        g_object_unref(manager);
-
-        view = new WPEView(web_context, src, context, display, width, height);
+        if (!glib.web_context) {
+            auto *manager = webkit_website_data_manager_new_ephemeral();
+            glib.web_context =
+                webkit_web_context_new_with_website_data_manager(manager);
+            g_object_unref(manager);
+        }
+        view = new WPEView(glib.web_context, src, context, display, width, height);
     });
 
     if (view && view->hasUri()) {