summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunyan He <junyan.he@linux.intel.com>2012-07-20 05:52:57 +0800
committerroot <root@fc17.bj.intel.com>2012-07-23 11:43:30 +0800
commit79d369f161c78185483bf8fdeed77f79430d4a1e (patch)
treef9effc4bd3677568e895b821dc020894fb04ad36
parent1f50d3f368c9e7135576ecb376fbaef34fd22132 (diff)
Fix the problem of VBO leak.
In some cases we allocate the VBO but have no vertex to emit, which cause the VBO fail to be released. Fix it. Signed-off-by: Junyan He <junyan.he@linux.intel.com>
-rw-r--r--src/glamor_render.c6
-rw-r--r--src/glamor_trapezoid.c6
2 files changed, 6 insertions, 6 deletions
diff --git a/src/glamor_render.c b/src/glamor_render.c
index 6dacd44..9b80295 100644
--- a/src/glamor_render.c
+++ b/src/glamor_render.c
@@ -826,9 +826,6 @@ glamor_flush_composite_rects(ScreenPtr screen)
glamor_get_screen_private(screen);
glamor_gl_dispatch *dispatch;
- if (!glamor_priv->render_nr_verts)
- return;
-
dispatch = glamor_get_dispatch(glamor_priv);
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP)
dispatch->glUnmapBuffer(GL_ARRAY_BUFFER);
@@ -840,6 +837,9 @@ glamor_flush_composite_rects(ScreenPtr screen)
glamor_priv->vb, GL_DYNAMIC_DRAW);
}
+ if (!glamor_priv->render_nr_verts)
+ return;
+
dispatch->glDrawElements(GL_TRIANGLES, (glamor_priv->render_nr_verts * 3) / 2,
GL_UNSIGNED_SHORT, NULL);
glamor_put_dispatch(glamor_priv);
diff --git a/src/glamor_trapezoid.c b/src/glamor_trapezoid.c
index 5c02a8c..fd63062 100644
--- a/src/glamor_trapezoid.c
+++ b/src/glamor_trapezoid.c
@@ -199,9 +199,6 @@ glamor_flush_composite_triangles(ScreenPtr screen)
glamor_get_screen_private(screen);
glamor_gl_dispatch *dispatch;
- if (!glamor_priv->render_nr_verts)
- return;
-
dispatch = glamor_get_dispatch(glamor_priv);
if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP)
dispatch->glUnmapBuffer(GL_ARRAY_BUFFER);
@@ -213,6 +210,9 @@ glamor_flush_composite_triangles(ScreenPtr screen)
glamor_priv->vb, GL_DYNAMIC_DRAW);
}
+ if (!glamor_priv->render_nr_verts)
+ return;
+
dispatch->glDrawArrays(GL_TRIANGLES, 0, glamor_priv->render_nr_verts);
glamor_put_dispatch(glamor_priv);
}