diff options
author | Chia-I Wu <[email protected]> | 2009-10-15 11:08:33 +0800 |
---|---|---|
committer | Brian Paul <[email protected]> | 2009-10-15 12:53:58 -0600 |
commit | bbfd0e26151bef567c152c8018ecc15f04c70914 (patch) | |
tree | 38db8e09a6fd2d03afebf93fd3f6ba3443e04d01 /src/egl | |
parent | aaa1253b09a6a38e7fcd695aa36e89b9d4bd8dfe (diff) |
egl: Rework error checking in eglSwapBuffers.
Signed-off-by: Chia-I Wu <[email protected]>
Diffstat (limited to 'src/egl')
-rw-r--r-- | src/egl/main/eglapi.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index 1d370db4718..366901889fe 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -31,6 +31,15 @@ * * is generated. * + * Some of the entry points use current display, context, or surface + * implicitly. For such entry points, the implicit objects are also + * checked before calling the driver function. Other than the + * errors listed above, + * + * EGL_BAD_CURRENT_SURFACE + * + * may also be generated. + * * Notes on naming conventions: * * eglFooBar - public EGL function @@ -519,7 +528,13 @@ eglSwapInterval(EGLDisplay dpy, EGLint interval) EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface) { + _EGLContext *ctx = _eglGetCurrentContext(); _EGL_DECLARE_DD_AND_SURFACE(dpy, surface); + + /* surface must be bound to current context in EGL 1.4 */ + if (!ctx || !_eglIsContextLinked(ctx) || surf != ctx->DrawSurface) + return _eglError(EGL_BAD_SURFACE, __FUNCTION__); + return drv->API.SwapBuffers(drv, disp, surf); } |