feat: support ELECTRON_DEFAULT_ERROR_MODE in the GPU process (#17728)
This commit is contained in:
parent
d87b3ead76
commit
fcf0af15de
8 changed files with 110 additions and 0 deletions
|
@ -0,0 +1,48 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Milan Burda <milan.burda@gmail.com>
|
||||
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 39e87967360a9c7a2856ce4df9c182c782efb2a5..ade3e7905d01b25128f477c68c10edd0f96626c3 100644
|
||||
--- a/content/gpu/gpu_main.cc
|
||||
+++ b/content/gpu/gpu_main.cc
|
||||
@@ -234,6 +234,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 message loop and listeners
|
||||
// registered to it. Create the message loop on the heap to guard against
|
||||
@@ -329,7 +333,6 @@ int GpuMain(const MainFunctionParams& parameters) {
|
||||
|
||||
GpuProcess gpu_process(io_thread_priority);
|
||||
|
||||
- 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
|
Loading…
Add table
Add a link
Reference in a new issue