From 6da6347a41b52e2593c47fb30eaa4e02a7823819 Mon Sep 17 00:00:00 2001 From: raster Date: Tue, 2 Feb 2010 05:30:19 +0000 Subject: [PATCH] fix! broek egl compositing. fixed now. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@45792 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/modules/engines/gl_common/evas_gl_context.c | 4 ++-- src/modules/engines/gl_x11/evas_engine.c | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/modules/engines/gl_common/evas_gl_context.c b/src/modules/engines/gl_common/evas_gl_context.c index 49821a3..de1c197 100644 --- a/src/modules/engines/gl_common/evas_gl_context.c +++ b/src/modules/engines/gl_common/evas_gl_context.c @@ -916,7 +916,7 @@ shader_array_flush(Evas_GL_Context *gc) } if (gc->array.im) { - if (!gc->array.im->native.func.bind) + if (!gc->array.im->native.loose) { if (gc->array.im->native.func.bind) gc->array.im->native.func.bind(gc->array.im->native.func.data, @@ -1054,7 +1054,7 @@ shader_array_flush(Evas_GL_Context *gc) } if (gc->array.im) { - if (!gc->array.im->native.func.bind) + if (!gc->array.im->native.loose) { if (gc->array.im->native.func.unbind) gc->array.im->native.func.unbind(gc->array.im->native.func.data, diff --git a/src/modules/engines/gl_x11/evas_engine.c b/src/modules/engines/gl_x11/evas_engine.c index 91da824..5fd1cfe 100644 --- a/src/modules/engines/gl_x11/evas_engine.c +++ b/src/modules/engines/gl_x11/evas_engine.c @@ -429,6 +429,11 @@ eng_output_redraws_next_update_push(void *data, void *surface __UNUSED__, int x re->win->draw.redraw = 0; re->win->draw.drew = 1; evas_gl_common_context_flush(re->win->gl_context); +#if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) + eglWaitGL(); // previous rendering should be done and swapped +#else + glXWaitGL(); +#endif //x// printf("frame -> push\n"); } @@ -444,8 +449,8 @@ eng_output_flush(void *data) eng_window_use(re->win); #if defined (GLES_VARIETY_S3C6410) || defined (GLES_VARIETY_SGX) -// glFlush(); eglSwapBuffers(re->win->egl_disp, re->win->egl_surface[0]); + eglWaitGL(); // excessive - swapbuffers should wait in windowed mode #else #ifdef VSYNC_TO_SCREEN if (re->info->vsync) @@ -461,13 +466,11 @@ eng_output_flush(void *data) # endif if (re->info->callback.pre_swap) { - glFinish(); re->info->callback.pre_swap(re->info->callback.data, re->evas); } glXSwapBuffers(re->win->disp, re->win->win); if (re->info->callback.post_swap) { - glXWaitGL(); re->info->callback.post_swap(re->info->callback.data, re->evas); } #endif @@ -1285,6 +1288,8 @@ eng_image_native_set(void *data, void *image, void *native) im->native.func.bind = _native_bind_cb; im->native.func.unbind = _native_unbind_cb; im->native.func.free = _native_free_cb; + im->native.target = GL_TEXTURE_2D; + im->native.mipmap = 0; #if 0 // old texfrompixmap n->egl_surface = eglCreatePixmapSurface(re->win->egl_disp, egl_config, pm, -- 2.7.4