From 39f15ddced5ab8abee41eaeefb0d18fcbfa31b45 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 19 Mar 2023 17:21:39 +0000 Subject: [PATCH] browser/client: keep on stack --- src/browser/client.hxx | 12 +++++++++--- src/main.cxx | 3 ++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/browser/client.hxx b/src/browser/client.hxx index ada4063..dc3a6af 100644 --- a/src/browser/client.hxx +++ b/src/browser/client.hxx @@ -5,15 +5,21 @@ #include "include/cef_client.h" namespace Browser { + /// Implementation of CefClient. Store on the stack, but access only via CefRefPtr. + /// https://github.com/chromiumembedded/cef/blob/5563/include/cef_client.h struct Client: public CefClient { CefRefPtr life_span_handler; Client(CefRefPtr); CefRefPtr GetLifeSpanHandler() override; - private: - IMPLEMENT_REFCOUNTING(Client); - DISALLOW_COPY_AND_ASSIGN(Client); + Client(const Client&) = delete; + Client& operator=(const Client&) = delete; + void AddRef() const override { this->ref_count.AddRef(); } + bool Release() const override { return this->ref_count.Release(); } + bool HasOneRef() const override { return this->ref_count.HasOneRef(); } + bool HasAtLeastOneRef() const override { return this->ref_count.HasAtLeastOneRef(); } + private: CefRefCount ref_count; }; } diff --git a/src/main.cxx b/src/main.cxx index 5bb16fb..ec072a1 100644 --- a/src/main.cxx +++ b/src/main.cxx @@ -85,7 +85,8 @@ int main(int argc, char* argv[]) { // Our CEF client and the various things it needs pointers to CefRefPtr life_span_handler = new Browser::LifeSpanHandler; - CefRefPtr client = new Browser::Client(life_span_handler); + Browser::Client client_(life_span_handler); + CefRefPtr client = &client_; // Spawn a window using the "views" pipeline Browser::Details details = {