cefclient: Set recommended command-line switches for off-screen rendering
This commit is contained in:
parent
4b491c3a77
commit
aef9fd486a
|
@ -6,12 +6,49 @@
|
|||
|
||||
#include "include/base/cef_logging.h"
|
||||
#include "include/cef_cookie.h"
|
||||
#include "cefclient/common/client_switches.h"
|
||||
|
||||
namespace client {
|
||||
|
||||
ClientAppBrowser::ClientAppBrowser() {
|
||||
}
|
||||
|
||||
void ClientAppBrowser::OnBeforeCommandLineProcessing(
|
||||
const CefString& process_type,
|
||||
CefRefPtr<CefCommandLine> command_line) {
|
||||
// Pass additional command-line flags to the browser process.
|
||||
if (process_type.empty()) {
|
||||
// Pass additional command-line flags when off-screen rendering is enabled.
|
||||
if (command_line->HasSwitch(switches::kOffScreenRenderingEnabled)) {
|
||||
// If the PDF extension is enabled then cc Surfaces must be disabled for
|
||||
// PDFs to render correctly.
|
||||
// See https://bitbucket.org/chromiumembedded/cef/issues/1689 for details.
|
||||
if (!command_line->HasSwitch("disable-extensions") &&
|
||||
!command_line->HasSwitch("disable-pdf-extension")) {
|
||||
command_line->AppendSwitch("disable-surfaces");
|
||||
}
|
||||
|
||||
// Use software rendering and compositing (disable GPU) for increased FPS
|
||||
// and decreased CPU usage. This will also disable WebGL so remove these
|
||||
// switches if you need that capability.
|
||||
// See https://bitbucket.org/chromiumembedded/cef/issues/1257 for details.
|
||||
if (!command_line->HasSwitch(switches::kEnableGPU)) {
|
||||
command_line->AppendSwitch("disable-gpu");
|
||||
command_line->AppendSwitch("disable-gpu-compositing");
|
||||
}
|
||||
|
||||
// Synchronize the frame rate between all processes. This results in
|
||||
// decreased CPU usage by avoiding the generation of extra frames that
|
||||
// would otherwise be discarded. The frame rate can be set at browser
|
||||
// creation time via CefBrowserSettings.windowless_frame_rate or changed
|
||||
// dynamically using CefBrowserHost::SetWindowlessFrameRate. In cefclient
|
||||
// it can be set via the command-line using `--off-screen-frame-rate=XX`.
|
||||
// See https://bitbucket.org/chromiumembedded/cef/issues/1368 for details.
|
||||
command_line->AppendSwitch("enable-begin-frame-scheduling");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ClientAppBrowser::OnContextInitialized() {
|
||||
CreateDelegates(delegates_);
|
||||
|
||||
|
|
|
@ -46,6 +46,9 @@ class ClientAppBrowser : public ClientApp,
|
|||
static CefRefPtr<CefPrintHandler> CreatePrintHandler();
|
||||
|
||||
// CefApp methods.
|
||||
void OnBeforeCommandLineProcessing(
|
||||
const CefString& process_type,
|
||||
CefRefPtr<CefCommandLine> command_line) OVERRIDE;
|
||||
CefRefPtr<CefBrowserProcessHandler> GetBrowserProcessHandler() OVERRIDE {
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ const char kShowUpdateRect[] = "show-update-rect";
|
|||
const char kMouseCursorChangeDisabled[] = "mouse-cursor-change-disabled";
|
||||
const char kRequestContextPerBrowser[] = "request-context-per-browser";
|
||||
const char kBackgroundColor[] = "background-color";
|
||||
const char kEnableGPU[] = "enable-gpu";
|
||||
|
||||
} // namespace switches
|
||||
} // namespace client
|
||||
|
|
|
@ -21,6 +21,7 @@ extern const char kShowUpdateRect[];
|
|||
extern const char kMouseCursorChangeDisabled[];
|
||||
extern const char kRequestContextPerBrowser[];
|
||||
extern const char kBackgroundColor[];
|
||||
extern const char kEnableGPU[];
|
||||
|
||||
} // namespace switches
|
||||
} // namespace client
|
||||
|
|
Loading…
Reference in New Issue