From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Milan Burda Date: Thu, 11 Apr 2019 14:49:20 +0200 Subject: Add ContentGpuClient::PreCreateMessageLoop() callback Invoke in GpuMain after SetErrorMode, before starting the message loop. Allows Electron to restore WER when ELECTRON_DEFAULT_ERROR_MODE is set. This should be upstreamed diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc index 69cb584e3b99a6989dbb2906bfa5bdf1c5cd3df5..7d1d9f871f7a0676b040651cf5a7122ee6cf2732 100644 --- a/content/gpu/gpu_main.cc +++ b/content/gpu/gpu_main.cc @@ -235,6 +235,10 @@ int GpuMain(const MainFunctionParams& parameters) { logging::SetLogMessageHandler(GpuProcessLogMessageHandler); + auto* client = GetContentClient()->gpu(); + if (client) + client->PreCreateMessageLoop(); + // We are experiencing what appear to be memory-stomp issues in the GPU // process. These issues seem to be impacting the task executor and listeners // registered to it. Create the task executor on the heap to guard against @@ -348,7 +352,6 @@ int GpuMain(const MainFunctionParams& parameters) { GpuProcess gpu_process(io_thread_priority); #endif - auto* client = GetContentClient()->gpu(); if (client) client->PostIOThreadCreated(gpu_process.io_task_runner()); diff --git a/content/public/gpu/content_gpu_client.h b/content/public/gpu/content_gpu_client.h index 20e31e1bd96395cb4350aa6ae84cc16c4ca2116b..d89af81ef9426c197a62027b514011afd10ea3ce 100644 --- a/content/public/gpu/content_gpu_client.h +++ b/content/public/gpu/content_gpu_client.h @@ -35,6 +35,10 @@ class CONTENT_EXPORT ContentGpuClient { public: virtual ~ContentGpuClient() {} + // Allows the embedder to perform platform-specific initialization before + // creating the message loop. + virtual void PreCreateMessageLoop() {} + // Initializes the registry. |registry| will be passed to a ConnectionFilter // (which lives on the IO thread). Unlike other childthreads, the client must // register additional interfaces on this registry rather than just creating