Compare commits

...

2 Commits

Author SHA1 Message Date
Marshall Greenblatt d96e29b528 mac: cefclient: Fix zombie NSWindow object on exit (fixes #3602)
- Don't create a TempWindow when using Views.
- Don't call `close` on an NSWindow that is never opened.
2024-07-15 17:08:41 -04:00
Marshall Greenblatt c4ddda42fb Call SetIsShutdown after CefInitialize (fixes #3738)
Delay shutdown checking until after CefInitialize has drained existing
task pools.
2024-07-15 17:08:34 -04:00
6 changed files with 22 additions and 21 deletions

View File

@ -9,7 +9,7 @@
// implementations. See the translator.README.txt file in the tools directory // implementations. See the translator.README.txt file in the tools directory
// for more information. // for more information.
// //
// $hash=bc230d77e2985959bc5a6a2af80b500eec070384$ // $hash=4a4490df4b9440aeb853d6625fddb7de5741f5b0$
// //
#include "include/capi/cef_app_capi.h" #include "include/capi/cef_app_capi.h"
@ -131,12 +131,12 @@ CEF_EXPORT int cef_get_exit_code() {
CEF_EXPORT void cef_shutdown() { CEF_EXPORT void cef_shutdown() {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
// Execute
CefShutdown();
#if DCHECK_IS_ON() #if DCHECK_IS_ON()
shutdown_checker::SetIsShutdown(); shutdown_checker::SetIsShutdown();
#endif #endif
// Execute
CefShutdown();
} }
CEF_EXPORT void cef_do_message_loop_work() { CEF_EXPORT void cef_do_message_loop_work() {

View File

@ -9,7 +9,7 @@
// implementations. See the translator.README.txt file in the tools directory // implementations. See the translator.README.txt file in the tools directory
// for more information. // for more information.
// //
// $hash=16d4e51ecbe1fd8eb6915d951a84f707f73dfb1a$ // $hash=e9099c29c9695cabcedfde25b85c1f77f14cb516$
// //
#include "include/capi/cef_app_capi.h" #include "include/capi/cef_app_capi.h"
@ -119,12 +119,12 @@ NO_SANITIZE("cfi-icall") CEF_GLOBAL int CefGetExitCode() {
NO_SANITIZE("cfi-icall") CEF_GLOBAL void CefShutdown() { NO_SANITIZE("cfi-icall") CEF_GLOBAL void CefShutdown() {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
// Execute
cef_shutdown();
#if DCHECK_IS_ON() #if DCHECK_IS_ON()
shutdown_checker::SetIsShutdown(); shutdown_checker::SetIsShutdown();
#endif #endif
// Execute
cef_shutdown();
} }
NO_SANITIZE("cfi-icall") CEF_GLOBAL void CefDoMessageLoopWork() { NO_SANITIZE("cfi-icall") CEF_GLOBAL void CefDoMessageLoopWork() {

View File

@ -147,8 +147,9 @@ scoped_refptr<RootWindow> RootWindowManager::CreateRootWindowAsPopup(
SanityCheckWindowConfig(is_devtools, use_views, use_alloy_style, with_osr); SanityCheckWindowConfig(is_devtools, use_views, use_alloy_style, with_osr);
if (!temp_window_) { if (!temp_window_ && !use_views) {
// TempWindow must be created on the UI thread. // TempWindow must be created on the UI thread. It is only used with
// native (non-Views) parent windows.
temp_window_.reset(new TempWindow()); temp_window_.reset(new TempWindow());
} }

View File

@ -29,7 +29,7 @@ class TempWindowMacImpl {
} }
~TempWindowMacImpl() { ~TempWindowMacImpl() {
DCHECK(window_); DCHECK(window_);
[window_ close]; window_ = nil;
} }
private: private:

View File

@ -320,11 +320,6 @@ def make_cpptoc_function_impl_new(cls, name, func, defined_names, base_scoped):
result += '\n' result += '\n'
result_len = len(result) result_len = len(result)
if is_cef_shutdown:
result += '\n\n#if DCHECK_IS_ON()'\
'\n shutdown_checker::SetIsShutdown();'\
'\n#endif\n'
# execution # execution
result += '\n // Execute\n ' result += '\n // Execute\n '
@ -355,6 +350,11 @@ def make_cpptoc_function_impl_new(cls, name, func, defined_names, base_scoped):
result += ');\n' result += ');\n'
if is_cef_shutdown:
result += '\n\n#if DCHECK_IS_ON()'\
'\n shutdown_checker::SetIsShutdown();'\
'\n#endif\n'
result_len = len(result) result_len = len(result)
# parameter restoration # parameter restoration

View File

@ -335,11 +335,6 @@ def make_ctocpp_function_impl_new(clsname, name, func, base_scoped):
result += '\n' result += '\n'
result_len = len(result) result_len = len(result)
if is_cef_shutdown:
result += '\n\n#if DCHECK_IS_ON()'\
'\n shutdown_checker::SetIsShutdown();'\
'\n#endif\n'
# execution # execution
result += '\n // Execute\n ' result += '\n // Execute\n '
@ -369,6 +364,11 @@ def make_ctocpp_function_impl_new(clsname, name, func, base_scoped):
result += ');\n' result += ');\n'
if is_cef_shutdown:
result += '\n\n#if DCHECK_IS_ON()'\
'\n shutdown_checker::SetIsShutdown();'\
'\n#endif\n'
result_len = len(result) result_len = len(result)
# parameter restoration # parameter restoration