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.patch This adds a 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 a5a5cfcb4abda8c4642d2904728a882e1e85db23..f238d61c8e78ffdae82613133ba67b2a6a640b04 100644 --- a/content/gpu/gpu_main.cc +++ b/content/gpu/gpu_main.cc @@ -260,6 +260,10 @@ int GpuMain(MainFunctionParams parameters) { // to the GpuProcessHost once the GpuServiceImpl has started. viz::GpuServiceImpl::InstallPreInitializeLogHandler(); + 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 @@ -344,7 +348,6 @@ int GpuMain(MainFunctionParams parameters) { const_cast(&command_line), gpu_preferences); const bool dead_on_arrival = !init_success; - auto* client = GetContentClient()->gpu(); if (client) { client->PostSandboxInitialized(); } diff --git a/content/public/gpu/content_gpu_client.h b/content/public/gpu/content_gpu_client.h index 3020e59f491f95740983b01c16e2a5be01d60f67..b25140275ce636717ca60a3cb17eb2f35f50d8be 100644 --- a/content/public/gpu/content_gpu_client.h +++ b/content/public/gpu/content_gpu_client.h @@ -30,6 +30,10 @@ class CONTENT_EXPORT ContentGpuClient { public: virtual ~ContentGpuClient() {} + // Allows the embedder to perform platform-specific initialization before + // creating the message loop. + virtual void PreCreateMessageLoop() {} + // Called during initialization once the GpuService has been initialized. virtual void GpuServiceInitialized() {}