aboutsummaryrefslogtreecommitdiff
path: root/render/egl.c
diff options
context:
space:
mode:
Diffstat (limited to 'render/egl.c')
-rw-r--r--render/egl.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/render/egl.c b/render/egl.c
index a2f7bd9a..6df5dac8 100644
--- a/render/egl.c
+++ b/render/egl.c
@@ -411,6 +411,18 @@ bool wlr_egl_is_current(struct wlr_egl *egl) {
return eglGetCurrentContext() == egl->context;
}
+void wlr_egl_save_context(struct wlr_egl_context *context) {
+ context->display = eglGetCurrentDisplay();
+ context->context = eglGetCurrentContext();
+ context->draw_surface = eglGetCurrentSurface(EGL_DRAW);
+ context->read_surface = eglGetCurrentSurface(EGL_READ);
+}
+
+bool wlr_egl_restore_context(struct wlr_egl_context *context) {
+ return eglMakeCurrent(context->display, context->draw_surface,
+ context->read_surface, context->context);
+}
+
bool wlr_egl_swap_buffers(struct wlr_egl *egl, EGLSurface surface,
pixman_region32_t *damage) {
// Never block when swapping buffers on Wayland