It seems CEF can't be trusted to store valid cache between shutdowns or
system updates, which leads to infrequent reports of SKIA shader
compilation errors, the only fix for which is to delete CefCache or
GPUCache. If that's the case, I won't let it store anything at all. This
doesn't appear to affect startup time.
This was long overdue, there were two almost-identical copies of the
same function in so/main.c and dll/main.c but with the latter growing
more and more outdated.
Using a completely different object name appears to be the only way to
stop the render process from getting an error on MapViewOfFile
sometimes. This is at least the third time I've thought I've fixed this
bug, so it'll probably happen again...
Seemed to be working correctly somehow but with a few compiler warnings.
The format-string needs to be wide, and a narrow-string as a paramater
needs to be passed using %hs rather than %s.
There are three main benefits to this.
1. SwapBuffers event will now be fired after input events for each
frame, instead of before. The control flow previously was confusing,
incorrect, and undocumented.
2. Screen capture APIs (planned feature) will no longer capture things
rendered by the plugin itself - nor, for that matter, by others.
3. Plugins can now call drawtoscreen APIs at any time, not necessarily
in a SwapBuffers callback, since the draw will be buffered anyway.
Instead of heap-allocating and sending all the data in one chunk, do
multiple sends with a mutex preventing any interleaving. Potentially
slightly faster, and fixes a plethora of bugs.
Previously only supported MSAA, and even that level of support was hacky
and poorly-researched. This commit adds support for, and notes about,
all known rendering pipelines for OpenGL.
window.close() is completely broken in CEF, it destroys the browser and
calls OnBeforeClose before calling CanClose, which generally leads to
segmentation faults no matter how you handle it. So don't use it. Close
via the Bolt API instead.