Merge "Set the swap interval of virtual display surfaces to 0"
This commit is contained in:
commit
ff866e7642
@ -64,7 +64,6 @@ DisplayDevice::DisplayDevice(
|
||||
mDisplaySurface(displaySurface),
|
||||
mDisplay(EGL_NO_DISPLAY),
|
||||
mSurface(EGL_NO_SURFACE),
|
||||
mContext(EGL_NO_CONTEXT),
|
||||
mDisplayWidth(), mDisplayHeight(), mFormat(),
|
||||
mFlags(),
|
||||
mPageFlipCount(),
|
||||
@ -80,6 +79,16 @@ DisplayDevice::DisplayDevice(
|
||||
int format;
|
||||
window->query(window, NATIVE_WINDOW_FORMAT, &format);
|
||||
|
||||
// Make sure that composition can never be stalled by a virtual display
|
||||
// consumer that isn't processing buffers fast enough. We have to do this
|
||||
// in two places:
|
||||
// * Here, in case the display is composed entirely by HWC.
|
||||
// * In makeCurrent(), using eglSwapInterval. Some EGL drivers set the
|
||||
// window's swap interval in eglMakeCurrent, so they'll override the
|
||||
// interval we set here.
|
||||
if (mType >= DisplayDevice::DISPLAY_VIRTUAL)
|
||||
window->setSwapInterval(window, 0);
|
||||
|
||||
/*
|
||||
* Create our display's surface
|
||||
*/
|
||||
@ -254,6 +263,8 @@ EGLBoolean DisplayDevice::makeCurrent(EGLDisplay dpy, EGLContext ctx) const {
|
||||
if (sur != mSurface) {
|
||||
result = eglMakeCurrent(dpy, mSurface, mSurface, ctx);
|
||||
if (result == EGL_TRUE) {
|
||||
if (mType >= DisplayDevice::DISPLAY_VIRTUAL)
|
||||
eglSwapInterval(dpy, 0);
|
||||
setViewportAndProjection();
|
||||
}
|
||||
}
|
||||
|
@ -171,7 +171,6 @@ private:
|
||||
|
||||
EGLDisplay mDisplay;
|
||||
EGLSurface mSurface;
|
||||
EGLContext mContext;
|
||||
int mDisplayWidth;
|
||||
int mDisplayHeight;
|
||||
PixelFormat mFormat;
|
||||
|
Loading…
Reference in New Issue
Block a user