raster pushed a commit to branch master.
commit d32758e2dedf412f7598b5e78dcf3a29af2d9a0e
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date: Wed Jun 5 18:07:29 2013 +0900
evas: mirror partial swap fix in wl egl and move to alloca for rect buf.
---
src/modules/evas/engines/gl_x11/evas_engine.c | 8 +++-----
src/modules/evas/engines/wayland_egl/evas_engine.c | 7 +++----
2 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/src/modules/evas/engines/gl_x11/evas_engine.c
b/src/modules/evas/engines/gl_x11/evas_engine.c
index 4fb9f06..7312e11 100644
--- a/src/modules/evas/engines/gl_x11/evas_engine.c
+++ b/src/modules/evas/engines/gl_x11/evas_engine.c
@@ -1444,15 +1444,14 @@ eng_output_flush(void *data, Evas_Render_Mode
render_mode)
}
if ((glsym_eglSwapBuffersRegion) && (re->mode != MODE_FULL))
{
- EGLint num = 0, *rects = NULL, i;
+ EGLint num = 0, *rects = NULL, i = 0;
Tilebuf_Rect *r;
// if partial swaps can be done use re->rects
EINA_INLIST_FOREACH(EINA_INLIST_GET(re->rects), r) num++;
- if (num > 0) rects = malloc(sizeof(EGLint) * 4 * num);
- if (rects)
+ if (num > 0)
{
- i = 0;
+ rects = alloca(sizeof(EGLint) * 4 * num);
EINA_INLIST_FOREACH(EINA_INLIST_GET(re->rects), r)
{
int gw, gh;
@@ -1497,7 +1496,6 @@ eng_output_flush(void *data, Evas_Render_Mode render_mode)
glsym_eglSwapBuffersRegion(re->win->egl_disp,
re->win->egl_surface[0],
num, rects);
- free(rects);
}
}
else
diff --git a/src/modules/evas/engines/wayland_egl/evas_engine.c
b/src/modules/evas/engines/wayland_egl/evas_engine.c
index feafa14..21a87b9 100644
--- a/src/modules/evas/engines/wayland_egl/evas_engine.c
+++ b/src/modules/evas/engines/wayland_egl/evas_engine.c
@@ -1197,9 +1197,9 @@ eng_output_flush(void *data, Evas_Render_Mode render_mode)
// if partial swaps can be done use re->rects
EINA_INLIST_FOREACH(EINA_INLIST_GET(re->rects), r) num++;
- if (num > 0) rects = malloc(sizeof(EGLint) * 4 * num);
- if (rects)
+ if (num > 0)
{
+ rects = alloca(sizeof(EGLint) * 4 * num);
EINA_INLIST_FOREACH(EINA_INLIST_GET(re->rects), r)
{
int gw, gh;
@@ -1216,7 +1216,7 @@ eng_output_flush(void *data, Evas_Render_Mode render_mode)
break;
case 90:
rects[i + 0] = r->y;
- rects[i + 1] = gh - (r->x + r->w);
+ rects[i + 1] = gw - (r->x + r->w);
rects[i + 2] = r->h;
rects[i + 3] = r->w;
break;
@@ -1243,7 +1243,6 @@ eng_output_flush(void *data, Evas_Render_Mode render_mode)
}
glsym_eglSwapBuffersRegion(re->win->egl_disp,
re->win->egl_surface[0], num, rects);
- free(rects);
}
}
else
--
------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j