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/base/cef_logging.h"
|
||||||
#include "include/cef_cookie.h"
|
#include "include/cef_cookie.h"
|
||||||
|
#include "cefclient/common/client_switches.h"
|
||||||
|
|
||||||
namespace client {
|
namespace client {
|
||||||
|
|
||||||
ClientAppBrowser::ClientAppBrowser() {
|
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() {
|
void ClientAppBrowser::OnContextInitialized() {
|
||||||
CreateDelegates(delegates_);
|
CreateDelegates(delegates_);
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,9 @@ class ClientAppBrowser : public ClientApp,
|
||||||
static CefRefPtr<CefPrintHandler> CreatePrintHandler();
|
static CefRefPtr<CefPrintHandler> CreatePrintHandler();
|
||||||
|
|
||||||
// CefApp methods.
|
// CefApp methods.
|
||||||
|
void OnBeforeCommandLineProcessing(
|
||||||
|
const CefString& process_type,
|
||||||
|
CefRefPtr<CefCommandLine> command_line) OVERRIDE;
|
||||||
CefRefPtr<CefBrowserProcessHandler> GetBrowserProcessHandler() OVERRIDE {
|
CefRefPtr<CefBrowserProcessHandler> GetBrowserProcessHandler() OVERRIDE {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ const char kShowUpdateRect[] = "show-update-rect";
|
||||||
const char kMouseCursorChangeDisabled[] = "mouse-cursor-change-disabled";
|
const char kMouseCursorChangeDisabled[] = "mouse-cursor-change-disabled";
|
||||||
const char kRequestContextPerBrowser[] = "request-context-per-browser";
|
const char kRequestContextPerBrowser[] = "request-context-per-browser";
|
||||||
const char kBackgroundColor[] = "background-color";
|
const char kBackgroundColor[] = "background-color";
|
||||||
|
const char kEnableGPU[] = "enable-gpu";
|
||||||
|
|
||||||
} // namespace switches
|
} // namespace switches
|
||||||
} // namespace client
|
} // namespace client
|
||||||
|
|
|
@ -21,6 +21,7 @@ extern const char kShowUpdateRect[];
|
||||||
extern const char kMouseCursorChangeDisabled[];
|
extern const char kMouseCursorChangeDisabled[];
|
||||||
extern const char kRequestContextPerBrowser[];
|
extern const char kRequestContextPerBrowser[];
|
||||||
extern const char kBackgroundColor[];
|
extern const char kBackgroundColor[];
|
||||||
|
extern const char kEnableGPU[];
|
||||||
|
|
||||||
} // namespace switches
|
} // namespace switches
|
||||||
} // namespace client
|
} // namespace client
|
||||||
|
|
Loading…
Reference in New Issue