cefsimple: Only instantiate SimpleApp in the browser process (issue #1776)

This commit is contained in:
Marshall Greenblatt 2015-12-03 17:27:32 -05:00
parent b4a159a1da
commit bd6e656747
4 changed files with 21 additions and 17 deletions

View File

@ -33,27 +33,28 @@ int main(int argc, char* argv[]) {
// Provide CEF with command-line arguments. // Provide CEF with command-line arguments.
CefMainArgs main_args(argc, argv); CefMainArgs main_args(argc, argv);
// SimpleApp implements application-level callbacks. It will create the first
// browser instance in OnContextInitialized() after CEF has initialized.
CefRefPtr<SimpleApp> app(new SimpleApp);
// CEF applications have multiple sub-processes (render, plugin, GPU, etc) // CEF applications have multiple sub-processes (render, plugin, GPU, etc)
// that share the same executable. This function checks the command-line and, // that share the same executable. This function checks the command-line and,
// if this is a sub-process, executes the appropriate logic. // if this is a sub-process, executes the appropriate logic.
int exit_code = CefExecuteProcess(main_args, app.get(), NULL); int exit_code = CefExecuteProcess(main_args, NULL, NULL);
if (exit_code >= 0) { if (exit_code >= 0) {
// The sub-process has completed so return here. // The sub-process has completed so return here.
return exit_code; return exit_code;
} }
// Specify CEF global settings here.
CefSettings settings;
// Install xlib error handlers so that the application won't be terminated // Install xlib error handlers so that the application won't be terminated
// on non-fatal errors. // on non-fatal errors.
XSetErrorHandler(XErrorHandlerImpl); XSetErrorHandler(XErrorHandlerImpl);
XSetIOErrorHandler(XIOErrorHandlerImpl); XSetIOErrorHandler(XIOErrorHandlerImpl);
// Specify CEF global settings here.
CefSettings settings;
// SimpleApp implements application-level callbacks for the browser process.
// It will create the first browser instance in OnContextInitialized() after
// CEF has initialized.
CefRefPtr<SimpleApp> app(new SimpleApp);
// Initialize CEF for the browser process. // Initialize CEF for the browser process.
CefInitialize(main_args, settings, app.get(), NULL); CefInitialize(main_args, settings, app.get(), NULL);

View File

@ -111,10 +111,6 @@ int main(int argc, char* argv[]) {
// Provide CEF with command-line arguments. // Provide CEF with command-line arguments.
CefMainArgs main_args(argc, argv); CefMainArgs main_args(argc, argv);
// SimpleApp implements application-level callbacks. It will create the first
// browser instance in OnContextInitialized() after CEF has initialized.
CefRefPtr<SimpleApp> app(new SimpleApp);
// Initialize the AutoRelease pool. // Initialize the AutoRelease pool.
NSAutoreleasePool* autopool = [[NSAutoreleasePool alloc] init]; NSAutoreleasePool* autopool = [[NSAutoreleasePool alloc] init];
@ -124,6 +120,11 @@ int main(int argc, char* argv[]) {
// Specify CEF global settings here. // Specify CEF global settings here.
CefSettings settings; CefSettings settings;
// SimpleApp implements application-level callbacks for the browser process.
// It will create the first browser instance in OnContextInitialized() after
// CEF has initialized.
CefRefPtr<SimpleApp> app(new SimpleApp);
// Initialize CEF for the browser process. // Initialize CEF for the browser process.
CefInitialize(main_args, settings, app.get(), NULL); CefInitialize(main_args, settings, app.get(), NULL);

View File

@ -44,14 +44,10 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
// Provide CEF with command-line arguments. // Provide CEF with command-line arguments.
CefMainArgs main_args(hInstance); CefMainArgs main_args(hInstance);
// SimpleApp implements application-level callbacks. It will create the first
// browser instance in OnContextInitialized() after CEF has initialized.
CefRefPtr<SimpleApp> app(new SimpleApp);
// CEF applications have multiple sub-processes (render, plugin, GPU, etc) // CEF applications have multiple sub-processes (render, plugin, GPU, etc)
// that share the same executable. This function checks the command-line and, // that share the same executable. This function checks the command-line and,
// if this is a sub-process, executes the appropriate logic. // if this is a sub-process, executes the appropriate logic.
int exit_code = CefExecuteProcess(main_args, app.get(), sandbox_info); int exit_code = CefExecuteProcess(main_args, NULL, sandbox_info);
if (exit_code >= 0) { if (exit_code >= 0) {
// The sub-process has completed so return here. // The sub-process has completed so return here.
return exit_code; return exit_code;
@ -64,6 +60,11 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
settings.no_sandbox = true; settings.no_sandbox = true;
#endif #endif
// SimpleApp implements application-level callbacks for the browser process.
// It will create the first browser instance in OnContextInitialized() after
// CEF has initialized.
CefRefPtr<SimpleApp> app(new SimpleApp);
// Initialize CEF. // Initialize CEF.
CefInitialize(main_args, settings, app.get(), sandbox_info); CefInitialize(main_args, settings, app.get(), sandbox_info);

View File

@ -7,6 +7,7 @@
#include "include/cef_app.h" #include "include/cef_app.h"
// Implement application-level callbacks for the browser process.
class SimpleApp : public CefApp, class SimpleApp : public CefApp,
public CefBrowserProcessHandler { public CefBrowserProcessHandler {
public: public: