WebKit Bugzilla
Attachment 372054 Details for
Bug 198831
: [Flatpak][JHBuild] Update build environments to use WPEBackend-fdo 1.3.1
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-198831-20190613180604.patch (text/plain), 22.57 KB, created by
Adrian Perez
on 2019-06-13 08:06:05 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Adrian Perez
Created:
2019-06-13 08:06:05 PDT
Size:
22.57 KB
patch
obsolete
>Subversion Revision: 246402 >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index e1ab018beccdf46679dbf9426a8698bc512e3a61..5d215eb1ef06f4b0acde24af928cfb6c0749618f 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,18 @@ >+2019-06-13 Adrian Perez de Castro <aperez@igalia.com> >+ >+ [Flatpak][JHBuild] Update build environments to use WPEBackend-fdo 1.3.1 >+ https://bugs.webkit.org/show_bug.cgi?id=198831 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * flatpak/org.webkit.WPEModules.yaml: Bump version of WPEBackend-fdo to 1.3.1 >+ * gtk/jhbuild.modules: Ditto. >+ * gtk/patches/wpebackend-fdo-Handle-the-case-of-new-target-created-for-the-same-v.patch: Removed. >+ * gtk/wpebackend-fdo-view-backend-exportable-private-don-t-double-free-ca.patch: Removed. >+ * wpe/jhbuild.modules: Bump version of WPEBackend-fdo to 1.3.1 >+ * wpe/patches/wpebackend-fdo-Handle-the-case-of-new-target-created-for-the-same-v.patch: Removed. >+ * wpe/wpebackend-fdo-view-backend-exportable-private-don-t-double-free-ca.patch: Removed. >+ > 2019-06-12 Aakash Jain <aakash_jain@apple.com> > > Replace double-quotes with single quotes in loadConfig.py >diff --git a/Tools/flatpak/org.webkit.WPEModules.yaml b/Tools/flatpak/org.webkit.WPEModules.yaml >index 5155ae2535d7c211de3ae408e4580392e06709cc..88741537e46e2b636eb76f3f8c3ab5374fb7eead 100644 >--- a/Tools/flatpak/org.webkit.WPEModules.yaml >+++ b/Tools/flatpak/org.webkit.WPEModules.yaml >@@ -8,9 +8,5 @@ > buildsystem: cmake-ninja > sources: > - type: archive >- url: https://wpewebkit.org/releases/wpebackend-fdo-1.3.0.tar.xz >- sha256: fed9ab29f5d53cf465188da80d014f3aa067c77704f8508c6bd17971fded359d >- - type: patch >- path: ../gtk/patches/wpebackend-fdo-Handle-the-case-of-new-target-created-for-the-same-v.patch >- - type: patch >- path: ../gtk/wpebackend-fdo-view-backend-exportable-private-don-t-double-free-ca.patch >+ url: https://wpewebkit.org/releases/wpebackend-fdo-1.3.1.tar.xz >+ sha256: b0d136aa9ce9f94b1d06b258ed68c4a7b588b2e692d448d9c6eedb72edf56739 >diff --git a/Tools/gtk/jhbuild.modules b/Tools/gtk/jhbuild.modules >index d496c91b838de1f6729de311a2a16a01860f2864..15f3d5d3607d1061d989be7b0d507b3610b5880c 100644 >--- a/Tools/gtk/jhbuild.modules >+++ b/Tools/gtk/jhbuild.modules >@@ -474,12 +474,8 @@ > <dep package="libwpe"/> > <dep package="glib"/> > </dependencies> >- <branch repo="wpewebkit" module="wpebackend-fdo-1.3.0.tar.xz" version="1.3.0" >- hash="sha256:fed9ab29f5d53cf465188da80d014f3aa067c77704f8508c6bd17971fded359d"> >- <!-- Remove this when updating to 1.3.1 --> >- <patch file="wpebackend-fdo-Handle-the-case-of-new-target-created-for-the-same-v.patch" strip="1"/> >- <patch file="wpebackend-fdo-view-backend-exportable-private-don-t-double-free-ca.patch" strip="1"/> >- </branch> >+ <branch repo="wpewebkit" module="wpebackend-fdo-1.3.1.tar.xz" version="1.3.1" >+ hash="sha256:b0d136aa9ce9f94b1d06b258ed68c4a7b588b2e692d448d9c6eedb72edf56739"/> > </cmake> > > <!-- Dependencies listed below this point are not thought to affect test results, and are only >diff --git a/Tools/gtk/patches/wpebackend-fdo-Handle-the-case-of-new-target-created-for-the-same-v.patch b/Tools/gtk/patches/wpebackend-fdo-Handle-the-case-of-new-target-created-for-the-same-v.patch >deleted file mode 100644 >index 46a6189b958e4e8ca2fc250beb5ff8bce08049c3..0000000000000000000000000000000000000000 >--- a/Tools/gtk/patches/wpebackend-fdo-Handle-the-case-of-new-target-created-for-the-same-v.patch >+++ /dev/null >@@ -1,198 +0,0 @@ >-From 13cae95a3b38899f8fd5fc39a5d25fcc9500e09a Mon Sep 17 00:00:00 2001 >-From: Carlos Garcia Campos <cgarcia@igalia.com> >-Date: Thu, 30 May 2019 14:04:29 +0200 >-Subject: [PATCH] Handle the case of new target created for the same view >- backend >- >-The client can remove a target and create a new one for the same view >-backend. In that case we need to unregister the current view backend in >-the wayland compositor before registering the new one. This patch renames >-WS::Instance::createSurface as registerSurface to clarify that it's not >-creating a new surface but registering a new one for the given id. Also >-ViewBackend::m_id has been renamed as m_surfaceId to clarify that's not >-the backend identifier, but the current surface identifier. >---- >- src/renderer-backend-egl.cpp | 8 +++++- >- src/view-backend-exportable-private.cpp | 35 +++++++++++++++++++++---- >- src/view-backend-exportable-private.h | 5 +++- >- src/ws.cpp | 12 ++++----- >- src/ws.h | 2 +- >- 5 files changed, 48 insertions(+), 14 deletions(-) >- >-diff --git a/src/renderer-backend-egl.cpp b/src/renderer-backend-egl.cpp >-index 726d61c..7e11d5e 100644 >---- a/src/renderer-backend-egl.cpp >-+++ b/src/renderer-backend-egl.cpp >-@@ -139,6 +139,11 @@ public: >- >- ~Target() >- { >-+ if (m_wl.wpeBridgeId && m_glib.socket) { >-+ uint32_t message[] = { 0x43, m_wl.wpeBridgeId }; >-+ g_socket_send(m_glib.socket, reinterpret_cast<gchar*>(message), 2 * sizeof(uint32_t), nullptr, nullptr); >-+ } >-+ >- g_clear_pointer(&m_wl.frameCallback, wl_callback_destroy); >- g_clear_pointer(&m_wl.window, wl_egl_window_destroy); >- g_clear_pointer(&m_wl.surface, wl_surface_destroy); >-@@ -223,6 +228,7 @@ public: >- >- void bridgeConnected(uint32_t bridgeID) >- { >-+ m_wl.wpeBridgeId = bridgeID; >- uint32_t message[] = { 0x42, bridgeID }; >- if (m_glib.socket) >- g_socket_send(m_glib.socket, reinterpret_cast<gchar*>(message), 2 * sizeof(uint32_t), nullptr, nullptr); >-@@ -246,11 +252,11 @@ private: >- } m_glib; >- >- struct { >-- struct wl_display* displayWrapper { nullptr }; >- struct wl_event_queue* eventQueue { nullptr }; >- struct wl_registry* registry { nullptr }; >- struct wl_compositor* compositor { nullptr }; >- struct wpe_bridge* wpeBridge { nullptr }; >-+ uint32_t wpeBridgeId { 0 }; >- >- struct wl_surface* surface { nullptr }; >- struct wl_egl_window* window { nullptr }; >-diff --git a/src/view-backend-exportable-private.cpp b/src/view-backend-exportable-private.cpp >-index d73102f..d10679b 100644 >---- a/src/view-backend-exportable-private.cpp >-+++ b/src/view-backend-exportable-private.cpp >-@@ -39,7 +39,7 @@ ViewBackend::~ViewBackend() >- for (auto* resource : m_callbackResources) >- wl_resource_destroy(resource); >- >-- WS::Instance::singleton().unregisterViewBackend(m_id); >-+ unregisterSurface(m_surfaceId); >- >- if (m_clientFd != -1) >- close(m_clientFd); >-@@ -117,6 +117,24 @@ void ViewBackend::releaseBuffer(struct wl_resource* buffer_resource) >- wl_client_flush(m_client); >- } >- >-+void ViewBackend::registerSurface(uint32_t surfaceId) >-+{ >-+ m_surfaceId = surfaceId; >-+ m_client = WS::Instance::singleton().registerViewBackend(m_surfaceId, *this); >-+} >-+ >-+void ViewBackend::unregisterSurface(uint32_t surfaceId) >-+{ >-+ if (!surfaceId || m_surfaceId != surfaceId) >-+ return; >-+ >-+ for (auto* resource : m_callbackResources) >-+ wl_resource_destroy(resource); >-+ m_callbackResources.clear(); >-+ WS::Instance::singleton().unregisterViewBackend(m_surfaceId); >-+ m_surfaceId = 0; >-+} >-+ >- gboolean ViewBackend::s_socketCallback(GSocket* socket, GIOCondition condition, gpointer data) >- { >- if (!(condition & G_IO_IN)) >-@@ -128,10 +146,17 @@ gboolean ViewBackend::s_socketCallback(GSocket* socket, GIOCondition condition, >- if (len == -1) >- return FALSE; >- >-- if (len == sizeof(uint32_t) * 2 && message[0] == 0x42) { >-- auto& viewBackend = *static_cast<ViewBackend*>(data); >-- viewBackend.m_id = message[1]; >-- viewBackend.m_client = WS::Instance::singleton().registerViewBackend(viewBackend.m_id, viewBackend); >-+ if (len != sizeof(uint32_t) * 2) >-+ return TRUE; >-+ >-+ auto& viewBackend = *static_cast<ViewBackend*>(data); >-+ switch (message[0]) { >-+ case 0x42: >-+ viewBackend.registerSurface(message[1]); >-+ break; >-+ case 0x43: >-+ viewBackend.unregisterSurface(message[1]); >-+ break; >- } >- >- return TRUE; >-diff --git a/src/view-backend-exportable-private.h b/src/view-backend-exportable-private.h >-index b27494e..73f3497 100644 >---- a/src/view-backend-exportable-private.h >-+++ b/src/view-backend-exportable-private.h >-@@ -67,9 +67,12 @@ public: >- void releaseBuffer(struct wl_resource* buffer_resource); >- >- private: >-+ void registerSurface(uint32_t); >-+ void unregisterSurface(uint32_t); >-+ >- static gboolean s_socketCallback(GSocket*, GIOCondition, gpointer); >- >-- uint32_t m_id { 0 }; >-+ uint32_t m_surfaceId { 0 }; >- struct wl_client* m_client { nullptr }; >- >- ClientBundle* m_clientBundle; >-diff --git a/src/ws.cpp b/src/ws.cpp >-index a856e0b..1aac351 100644 >---- a/src/ws.cpp >-+++ b/src/ws.cpp >-@@ -231,7 +231,7 @@ static const struct wpe_bridge_interface s_wpeBridgeInterface = { >- static uint32_t bridgeID = 0; >- ++bridgeID; >- wpe_bridge_send_connected(resource, bridgeID); >-- Instance::singleton().createSurface(bridgeID, surface); >-+ Instance::singleton().registerSurface(bridgeID, surface); >- }, >- }; >- >-@@ -393,7 +393,7 @@ int Instance::createClient() >- return clientFd; >- } >- >--void Instance::createSurface(uint32_t id, Surface* surface) >-+void Instance::registerSurface(uint32_t id, Surface* surface) >- { >- m_viewBackendMap.insert({ id, surface }); >- } >-@@ -538,9 +538,9 @@ void Instance::foreachDmaBufModifier(std::function<void (int format, uint64_t mo >- } >- } >- >--struct wl_client* Instance::registerViewBackend(uint32_t id, ExportableClient& exportableClient) >-+struct wl_client* Instance::registerViewBackend(uint32_t surfaceId, ExportableClient& exportableClient) >- { >-- auto it = m_viewBackendMap.find(id); >-+ auto it = m_viewBackendMap.find(surfaceId); >- if (it == m_viewBackendMap.end()) >- std::abort(); >- >-@@ -548,9 +548,9 @@ struct wl_client* Instance::registerViewBackend(uint32_t id, ExportableClient& e >- return it->second->client; >- } >- >--void Instance::unregisterViewBackend(uint32_t id) >-+void Instance::unregisterViewBackend(uint32_t surfaceId) >- { >-- auto it = m_viewBackendMap.find(id); >-+ auto it = m_viewBackendMap.find(surfaceId); >- if (it != m_viewBackendMap.end()) { >- it->second->exportableClient = nullptr; >- m_viewBackendMap.erase(it); >-diff --git a/src/ws.h b/src/ws.h >-index d4c2bff..5cb88e7 100644 >---- a/src/ws.h >-+++ b/src/ws.h >-@@ -53,7 +53,7 @@ public: >- >- int createClient(); >- >-- void createSurface(uint32_t, Surface*); >-+ void registerSurface(uint32_t, Surface*); >- struct wl_client* registerViewBackend(uint32_t, ExportableClient&); >- void unregisterViewBackend(uint32_t); >- >--- >-2.20.1 >- >diff --git a/Tools/gtk/wpebackend-fdo-view-backend-exportable-private-don-t-double-free-ca.patch b/Tools/gtk/wpebackend-fdo-view-backend-exportable-private-don-t-double-free-ca.patch >deleted file mode 100644 >index 966fd59cca2bdbaa537c8d3e18f184eb6cc53b10..0000000000000000000000000000000000000000 >--- a/Tools/gtk/wpebackend-fdo-view-backend-exportable-private-don-t-double-free-ca.patch >+++ /dev/null >@@ -1,35 +0,0 @@ >-From d95588908bbdd4ba6b0fab0b98d2dcedd73a7343 Mon Sep 17 00:00:00 2001 >-From: Zan Dobersek <zdobersek@igalia.com> >-Date: Mon, 10 Jun 2019 09:09:48 +0200 >-Subject: [PATCH] view-backend-exportable-private: don't double-free callback >- resources during destruction. >- >---- >- src/view-backend-exportable-private.cpp | 4 +--- >- 1 file changed, 1 insertion(+), 3 deletions(-) >- >-diff --git a/src/view-backend-exportable-private.cpp b/src/view-backend-exportable-private.cpp >-index 3a1559c..8a84359 100644 >---- a/src/view-backend-exportable-private.cpp >-+++ b/src/view-backend-exportable-private.cpp >-@@ -38,9 +38,6 @@ ViewBackend::ViewBackend(ClientBundle* clientBundle, struct wpe_view_backend* ba >- >- ViewBackend::~ViewBackend() >- { >-- for (auto* resource : m_callbackResources) >-- wl_resource_destroy(resource); >-- >- unregisterSurface(m_surfaceId); >- >- if (m_clientFd != -1) >-@@ -119,6 +116,7 @@ void ViewBackend::unregisterSurface(uint32_t surfaceId) >- for (auto* resource : m_callbackResources) >- wl_resource_destroy(resource); >- m_callbackResources.clear(); >-+ >- WS::Instance::singleton().unregisterViewBackend(m_surfaceId); >- m_surfaceId = 0; >- } >--- >-2.20.1 >- >diff --git a/Tools/wpe/jhbuild.modules b/Tools/wpe/jhbuild.modules >index d0fd4edb1ddc84cfdc58743a07f78ee85716242d..949b841d394527c4bbf434cbbd0def2861e7c8b9 100644 >--- a/Tools/wpe/jhbuild.modules >+++ b/Tools/wpe/jhbuild.modules >@@ -204,12 +204,8 @@ > <dep package="libwpe"/> > <dep package="glib"/> > </dependencies> >- <branch repo="wpewebkit" module="wpebackend-fdo-1.3.0.tar.xz" version="1.3.0" >- hash="sha256:fed9ab29f5d53cf465188da80d014f3aa067c77704f8508c6bd17971fded359d"> >- <!-- Remove this when updating to 1.3.1 --> >- <patch file="wpebackend-fdo-Handle-the-case-of-new-target-created-for-the-same-v.patch" strip="1"/> >- <patch file="wpebackend-fdo-view-backend-exportable-private-don-t-double-free-ca.patch" strip="1"/> >- </branch> >+ <branch repo="wpewebkit" module="wpebackend-fdo-1.3.1.tar.xz" version="1.3.1" >+ hash="sha256:b0d136aa9ce9f94b1d06b258ed68c4a7b588b2e692d448d9c6eedb72edf56739"/> > </cmake> > > <autotools id="libgpg-error" autogen-sh="configure"> >diff --git a/Tools/wpe/patches/wpebackend-fdo-Handle-the-case-of-new-target-created-for-the-same-v.patch b/Tools/wpe/patches/wpebackend-fdo-Handle-the-case-of-new-target-created-for-the-same-v.patch >deleted file mode 100644 >index 46a6189b958e4e8ca2fc250beb5ff8bce08049c3..0000000000000000000000000000000000000000 >--- a/Tools/wpe/patches/wpebackend-fdo-Handle-the-case-of-new-target-created-for-the-same-v.patch >+++ /dev/null >@@ -1,198 +0,0 @@ >-From 13cae95a3b38899f8fd5fc39a5d25fcc9500e09a Mon Sep 17 00:00:00 2001 >-From: Carlos Garcia Campos <cgarcia@igalia.com> >-Date: Thu, 30 May 2019 14:04:29 +0200 >-Subject: [PATCH] Handle the case of new target created for the same view >- backend >- >-The client can remove a target and create a new one for the same view >-backend. In that case we need to unregister the current view backend in >-the wayland compositor before registering the new one. This patch renames >-WS::Instance::createSurface as registerSurface to clarify that it's not >-creating a new surface but registering a new one for the given id. Also >-ViewBackend::m_id has been renamed as m_surfaceId to clarify that's not >-the backend identifier, but the current surface identifier. >---- >- src/renderer-backend-egl.cpp | 8 +++++- >- src/view-backend-exportable-private.cpp | 35 +++++++++++++++++++++---- >- src/view-backend-exportable-private.h | 5 +++- >- src/ws.cpp | 12 ++++----- >- src/ws.h | 2 +- >- 5 files changed, 48 insertions(+), 14 deletions(-) >- >-diff --git a/src/renderer-backend-egl.cpp b/src/renderer-backend-egl.cpp >-index 726d61c..7e11d5e 100644 >---- a/src/renderer-backend-egl.cpp >-+++ b/src/renderer-backend-egl.cpp >-@@ -139,6 +139,11 @@ public: >- >- ~Target() >- { >-+ if (m_wl.wpeBridgeId && m_glib.socket) { >-+ uint32_t message[] = { 0x43, m_wl.wpeBridgeId }; >-+ g_socket_send(m_glib.socket, reinterpret_cast<gchar*>(message), 2 * sizeof(uint32_t), nullptr, nullptr); >-+ } >-+ >- g_clear_pointer(&m_wl.frameCallback, wl_callback_destroy); >- g_clear_pointer(&m_wl.window, wl_egl_window_destroy); >- g_clear_pointer(&m_wl.surface, wl_surface_destroy); >-@@ -223,6 +228,7 @@ public: >- >- void bridgeConnected(uint32_t bridgeID) >- { >-+ m_wl.wpeBridgeId = bridgeID; >- uint32_t message[] = { 0x42, bridgeID }; >- if (m_glib.socket) >- g_socket_send(m_glib.socket, reinterpret_cast<gchar*>(message), 2 * sizeof(uint32_t), nullptr, nullptr); >-@@ -246,11 +252,11 @@ private: >- } m_glib; >- >- struct { >-- struct wl_display* displayWrapper { nullptr }; >- struct wl_event_queue* eventQueue { nullptr }; >- struct wl_registry* registry { nullptr }; >- struct wl_compositor* compositor { nullptr }; >- struct wpe_bridge* wpeBridge { nullptr }; >-+ uint32_t wpeBridgeId { 0 }; >- >- struct wl_surface* surface { nullptr }; >- struct wl_egl_window* window { nullptr }; >-diff --git a/src/view-backend-exportable-private.cpp b/src/view-backend-exportable-private.cpp >-index d73102f..d10679b 100644 >---- a/src/view-backend-exportable-private.cpp >-+++ b/src/view-backend-exportable-private.cpp >-@@ -39,7 +39,7 @@ ViewBackend::~ViewBackend() >- for (auto* resource : m_callbackResources) >- wl_resource_destroy(resource); >- >-- WS::Instance::singleton().unregisterViewBackend(m_id); >-+ unregisterSurface(m_surfaceId); >- >- if (m_clientFd != -1) >- close(m_clientFd); >-@@ -117,6 +117,24 @@ void ViewBackend::releaseBuffer(struct wl_resource* buffer_resource) >- wl_client_flush(m_client); >- } >- >-+void ViewBackend::registerSurface(uint32_t surfaceId) >-+{ >-+ m_surfaceId = surfaceId; >-+ m_client = WS::Instance::singleton().registerViewBackend(m_surfaceId, *this); >-+} >-+ >-+void ViewBackend::unregisterSurface(uint32_t surfaceId) >-+{ >-+ if (!surfaceId || m_surfaceId != surfaceId) >-+ return; >-+ >-+ for (auto* resource : m_callbackResources) >-+ wl_resource_destroy(resource); >-+ m_callbackResources.clear(); >-+ WS::Instance::singleton().unregisterViewBackend(m_surfaceId); >-+ m_surfaceId = 0; >-+} >-+ >- gboolean ViewBackend::s_socketCallback(GSocket* socket, GIOCondition condition, gpointer data) >- { >- if (!(condition & G_IO_IN)) >-@@ -128,10 +146,17 @@ gboolean ViewBackend::s_socketCallback(GSocket* socket, GIOCondition condition, >- if (len == -1) >- return FALSE; >- >-- if (len == sizeof(uint32_t) * 2 && message[0] == 0x42) { >-- auto& viewBackend = *static_cast<ViewBackend*>(data); >-- viewBackend.m_id = message[1]; >-- viewBackend.m_client = WS::Instance::singleton().registerViewBackend(viewBackend.m_id, viewBackend); >-+ if (len != sizeof(uint32_t) * 2) >-+ return TRUE; >-+ >-+ auto& viewBackend = *static_cast<ViewBackend*>(data); >-+ switch (message[0]) { >-+ case 0x42: >-+ viewBackend.registerSurface(message[1]); >-+ break; >-+ case 0x43: >-+ viewBackend.unregisterSurface(message[1]); >-+ break; >- } >- >- return TRUE; >-diff --git a/src/view-backend-exportable-private.h b/src/view-backend-exportable-private.h >-index b27494e..73f3497 100644 >---- a/src/view-backend-exportable-private.h >-+++ b/src/view-backend-exportable-private.h >-@@ -67,9 +67,12 @@ public: >- void releaseBuffer(struct wl_resource* buffer_resource); >- >- private: >-+ void registerSurface(uint32_t); >-+ void unregisterSurface(uint32_t); >-+ >- static gboolean s_socketCallback(GSocket*, GIOCondition, gpointer); >- >-- uint32_t m_id { 0 }; >-+ uint32_t m_surfaceId { 0 }; >- struct wl_client* m_client { nullptr }; >- >- ClientBundle* m_clientBundle; >-diff --git a/src/ws.cpp b/src/ws.cpp >-index a856e0b..1aac351 100644 >---- a/src/ws.cpp >-+++ b/src/ws.cpp >-@@ -231,7 +231,7 @@ static const struct wpe_bridge_interface s_wpeBridgeInterface = { >- static uint32_t bridgeID = 0; >- ++bridgeID; >- wpe_bridge_send_connected(resource, bridgeID); >-- Instance::singleton().createSurface(bridgeID, surface); >-+ Instance::singleton().registerSurface(bridgeID, surface); >- }, >- }; >- >-@@ -393,7 +393,7 @@ int Instance::createClient() >- return clientFd; >- } >- >--void Instance::createSurface(uint32_t id, Surface* surface) >-+void Instance::registerSurface(uint32_t id, Surface* surface) >- { >- m_viewBackendMap.insert({ id, surface }); >- } >-@@ -538,9 +538,9 @@ void Instance::foreachDmaBufModifier(std::function<void (int format, uint64_t mo >- } >- } >- >--struct wl_client* Instance::registerViewBackend(uint32_t id, ExportableClient& exportableClient) >-+struct wl_client* Instance::registerViewBackend(uint32_t surfaceId, ExportableClient& exportableClient) >- { >-- auto it = m_viewBackendMap.find(id); >-+ auto it = m_viewBackendMap.find(surfaceId); >- if (it == m_viewBackendMap.end()) >- std::abort(); >- >-@@ -548,9 +548,9 @@ struct wl_client* Instance::registerViewBackend(uint32_t id, ExportableClient& e >- return it->second->client; >- } >- >--void Instance::unregisterViewBackend(uint32_t id) >-+void Instance::unregisterViewBackend(uint32_t surfaceId) >- { >-- auto it = m_viewBackendMap.find(id); >-+ auto it = m_viewBackendMap.find(surfaceId); >- if (it != m_viewBackendMap.end()) { >- it->second->exportableClient = nullptr; >- m_viewBackendMap.erase(it); >-diff --git a/src/ws.h b/src/ws.h >-index d4c2bff..5cb88e7 100644 >---- a/src/ws.h >-+++ b/src/ws.h >-@@ -53,7 +53,7 @@ public: >- >- int createClient(); >- >-- void createSurface(uint32_t, Surface*); >-+ void registerSurface(uint32_t, Surface*); >- struct wl_client* registerViewBackend(uint32_t, ExportableClient&); >- void unregisterViewBackend(uint32_t); >- >--- >-2.20.1 >- >diff --git a/Tools/wpe/wpebackend-fdo-view-backend-exportable-private-don-t-double-free-ca.patch b/Tools/wpe/wpebackend-fdo-view-backend-exportable-private-don-t-double-free-ca.patch >deleted file mode 100644 >index 966fd59cca2bdbaa537c8d3e18f184eb6cc53b10..0000000000000000000000000000000000000000 >--- a/Tools/wpe/wpebackend-fdo-view-backend-exportable-private-don-t-double-free-ca.patch >+++ /dev/null >@@ -1,35 +0,0 @@ >-From d95588908bbdd4ba6b0fab0b98d2dcedd73a7343 Mon Sep 17 00:00:00 2001 >-From: Zan Dobersek <zdobersek@igalia.com> >-Date: Mon, 10 Jun 2019 09:09:48 +0200 >-Subject: [PATCH] view-backend-exportable-private: don't double-free callback >- resources during destruction. >- >---- >- src/view-backend-exportable-private.cpp | 4 +--- >- 1 file changed, 1 insertion(+), 3 deletions(-) >- >-diff --git a/src/view-backend-exportable-private.cpp b/src/view-backend-exportable-private.cpp >-index 3a1559c..8a84359 100644 >---- a/src/view-backend-exportable-private.cpp >-+++ b/src/view-backend-exportable-private.cpp >-@@ -38,9 +38,6 @@ ViewBackend::ViewBackend(ClientBundle* clientBundle, struct wpe_view_backend* ba >- >- ViewBackend::~ViewBackend() >- { >-- for (auto* resource : m_callbackResources) >-- wl_resource_destroy(resource); >-- >- unregisterSurface(m_surfaceId); >- >- if (m_clientFd != -1) >-@@ -119,6 +116,7 @@ void ViewBackend::unregisterSurface(uint32_t surfaceId) >- for (auto* resource : m_callbackResources) >- wl_resource_destroy(resource); >- m_callbackResources.clear(); >-+ >- WS::Instance::singleton().unregisterViewBackend(m_surfaceId); >- m_surfaceId = 0; >- } >--- >-2.20.1 >-
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 198831
:
372054
|
372244