fix! broek egl compositing. fixed now.
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 2 Feb 2010 05:30:19 +0000 (05:30 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 2 Feb 2010 05:30:19 +0000 (05:30 +0000)
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
src/modules/engines/gl_x11/evas_engine.c

index 49821a3..de1c197 100644 (file)
@@ -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, 
index 91da824..5fd1cfe 100644 (file)
@@ -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,