summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cairo-gl-private.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/cairo-gl-private.h b/src/cairo-gl-private.h
index daba72a3..2cb1425d 100644
--- a/src/cairo-gl-private.h
+++ b/src/cairo-gl-private.h
@@ -223,15 +223,28 @@ typedef struct _cairo_gl_composite {
cairo_private extern const cairo_surface_backend_t _cairo_gl_surface_backend;
+static cairo_always_inline GLenum
+_cairo_gl_get_error (void)
+{
+ GLenum err = glGetError();
+
+ if (unlikely (err))
+ while (glGetError ());
+
+ return err;
+}
+
static cairo_always_inline cairo_status_t
_cairo_gl_check_error (void)
{
- cairo_status_t status = CAIRO_STATUS_SUCCESS;
+ cairo_status_t status;
GLenum err;
- while (unlikely ((err = glGetError ()))) {
+ err = _cairo_gl_get_error ();
+ if (unlikely (err))
status = _cairo_error (CAIRO_STATUS_DEVICE_ERROR);
- }
+ else
+ status = CAIRO_STATUS_SUCCESS;
return status;
}