cef/patch
Marshall Greenblatt dea4daffd7 Implement off-screen rendering support using delegated rendering (issue #1257).
This implementation supports both GPU compositing and software compositing (used when GPU is not supported or when passing `--disable-gpu --disable-gpu-compositing` command-line flags). GPU-accelerated features (WebGL and 3D CSS) that did not work with the previous off-screen rendering implementation do work with this implementation when GPU support is available.

Rendering now operates on a per-frame basis. The frame rate is configurable via CefBrowserSettings.windowless_frame_rate up to a maximum of 60fps (potentially limited by how fast the system can generate new frames). CEF generates a bitmap from the compositor backing and passes it to CefRenderHandler::OnPaint.

The previous CefRenderHandler/CefBrowserHost API for off-screen rendering has been restored mostly as-is with some minor changes:

- CefBrowserHost::Invalidate no longer accepts a CefRect region argument. Instead of invalidating a specific region it now triggers generation of a new frame.
- The |dirtyRects| argument to CefRenderHandler::OnPaint will now always be a single CefRect representing the whole view (frame) size. Previously, invalidated regions were listed separately.
- Linux: CefBrowserHost::SendKeyEvent now expects X11 event information instead of GTK event information. See cefclient for an example of converting GTK events to the necessary format.
- Sizes passed to the CefRenderHandler OnPaint and OnPopupSize methods are now already DPI scaled. Previously, the client had to perform DPI scaling.
- Includes drag&drop implementation from issue #1032.
- Includes unit test fixes from issue #1245.

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1751 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
2014-06-30 22:30:29 +00:00
..
patches Implement off-screen rendering support using delegated rendering (issue #1257). 2014-06-30 22:30:29 +00:00
patch.cfg Implement off-screen rendering support using delegated rendering (issue #1257). 2014-06-30 22:30:29 +00:00
README.txt Branch CEF3 files from /branches/cef3 to /trunk/cef3 (issue #564). 2012-04-03 01:34:16 +00:00

There may be instances where CEF requires changes to the Chromium/WebKit code
base that are not desired by the Chromium/WebKit projects as a whole. To address
this situation the CEF project adds a patch capability as part of the CEF GYP
project generation step. The patch capability works as follows:

1. The CEF developer creates one or more patch files containing all required
   changes to the Chromium/WebKit code base and places those patch files in the
   "patches" subdirectory.
2. The CEF developer adds an entry for each patch file in the "patch.cfg" file.
3. CEF applies the patches to the Chromium/WebKit source tree using the
   patcher.py tool in the tools directory.  If necessary the patcher.py tool
   also rewrites the "patch_state.h" file which defines the CEF_PATCHES_APPLIED
   preprocessor value.

To disable automatic application of patches to the Chromium/WebKit code base
create an empty "NOPATCH" file in the "patch" directory. Sections of the CEF
code base that otherwise require patches will be disabled using the
CEF_PATCHES_APPLIED preprocessor value defined in the "patch_state.h" file. Be
warned that not applying all required patches may break important CEF
functionality.