[PATCH 6/9] gles2-renderer: Adds an utility function which calls eglMakeCurrent.
John Kåre Alsaker
john.kare.alsaker at gmail.com
Sat Sep 15 11:34:04 PDT 2012
---
src/gles2-renderer.c | 48 +++++++++++++++++++++++++++++-------------------
1 file changed, 29 insertions(+), 19 deletions(-)
diff --git a/src/gles2-renderer.c b/src/gles2-renderer.c
index 37e9b76..d4a4fc8 100644
--- a/src/gles2-renderer.c
+++ b/src/gles2-renderer.c
@@ -605,6 +605,29 @@ repaint_region(struct weston_surface *es, pixman_region32_t *region,
ec->vtxcnt.size = 0;
}
+static int
+use_output(struct weston_output *output)
+{
+ static int errored;
+ struct gles2_output_state *state = get_output_state(output);
+ struct weston_compositor *ec = output->compositor;
+ EGLBoolean ret;
+
+ ret = eglMakeCurrent(ec->egl_display, state->egl_surface,
+ state->egl_surface, ec->egl_context);
+
+ if (ret == EGL_FALSE) {
+ if(errored)
+ return -1;
+ errored = 1;
+ weston_log("Failed to make EGL context current.\n");
+ print_egl_error_state();
+ return -1;
+ }
+
+ return 0;
+}
+
static void
weston_compositor_use_shader(struct weston_compositor *compositor,
struct weston_shader *shader)
@@ -742,16 +765,8 @@ gles2_renderer_repaint_output(struct weston_output *output,
glViewport(0, 0, width, height);
- ret = eglMakeCurrent(compositor->egl_display, output_state->egl_surface,
- output_state->egl_surface, compositor->egl_context);
- if (ret == EGL_FALSE) {
- if (errored)
- return;
- errored = 1;
- weston_log("Failed to make EGL context current.\n");
- print_egl_error_state();
+ if(use_output(output) < 0)
return;
- }
/* if debugging, redraw everything outside the damage to clean up
* debug lines from the previous draw on this buffer:
@@ -1356,8 +1371,7 @@ gles2_renderer_outputs_ready(struct weston_compositor *ec)
{
const char *extensions;
int has_egl_image_external = 0;
- struct gles2_output_state *output;
- EGLBoolean ret;
+ struct weston_output *output;
static const EGLint context_attribs[] = {
EGL_CONTEXT_CLIENT_VERSION, 2,
@@ -1377,15 +1391,11 @@ gles2_renderer_outputs_ready(struct weston_compositor *ec)
return -1;
}
- output = get_output_state(container_of(ec->output_list.next,
- struct weston_output, link));
- ret = eglMakeCurrent(ec->egl_display, output->egl_surface,
- output->egl_surface, ec->egl_context);
- if (ret == EGL_FALSE) {
- weston_log("Failed to make EGL context current.\n");
- print_egl_error_state();
+ output = container_of(ec->output_list.next,
+ struct weston_output, link);
+
+ if(use_output(output) < 0)
return -1;
- }
log_egl_gl_info(ec->egl_display);
--
1.7.12
More information about the wayland-devel
mailing list