From 862764947c6a62e27371d0b31660ff41cd70b674 Mon Sep 17 00:00:00 2001 From: Adrian Perez de Castro Date: Sat, 10 Apr 2021 18:29:13 +0300 Subject: [PATCH 11/13] Revert "view-backend-exportable-private: Move ViewBackend::m_destroyClientListener" This reverts commit d7577891d505a3fb037ec14e54568fe59e310941. --- src/view-backend-private.cpp | 14 +++++++------- src/view-backend-private.h | 6 +----- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/view-backend-private.cpp b/src/view-backend-private.cpp index 6ba3fcb..af5472f 100644 --- a/src/view-backend-private.cpp +++ b/src/view-backend-private.cpp @@ -112,16 +112,16 @@ void ViewBackend::registerSurface(uint32_t bridgeId) m_bridgeId = bridgeId; m_client = WS::Instance::singleton().registerViewBackend(m_bridgeId, *this); - struct wl_client_destroy_listener *listener = new wl_client_destroy_listener {this, }; - listener->destroyClientListener.notify = (wl_notify_func_t) [](struct wl_listener* listener, void* data) + this->m_destroyClientListener.notify = (wl_notify_func_t) [](struct wl_listener* listener, void* data) { - struct wl_client_destroy_listener *container; - container = wl_container_of(listener, container, destroyClientListener); - container->backend->m_client = NULL; - delete container; // Release the wl_client_destroy_listener instance since this is not longer needed. + ViewBackend *viewBackend = wl_container_of(listener, viewBackend, m_destroyClientListener); + + struct wl_client* client = (struct wl_client*) data; + g_debug("ViewBackend <%p>: wl_client <%p> destroy notification for fd %d", viewBackend, data, wl_client_get_fd(client)); + viewBackend->m_client = NULL; }; wl_client_add_destroy_listener(m_client, - &listener->destroyClientListener); + &this->m_destroyClientListener); } void ViewBackend::unregisterSurface(uint32_t bridgeId) diff --git a/src/view-backend-private.h b/src/view-backend-private.h index 81b083c..599382b 100644 --- a/src/view-backend-private.h +++ b/src/view-backend-private.h @@ -86,11 +86,7 @@ private: std::unique_ptr m_socket; int m_clientFd { -1 }; -}; - -struct wl_client_destroy_listener { - ViewBackend* backend; - struct wl_listener destroyClientListener; + struct wl_listener m_destroyClientListener; }; struct wpe_view_backend_private { -- 2.31.1