From 5512c14e346a988f6eb8cdf9385a868ef705450c Mon Sep 17 00:00:00 2001 From: Junyan He Date: Fri, 20 Jul 2012 05:52:57 +0800 Subject: [PATCH] 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 --- glamor/glamor_render.c | 6 +++--- glamor/glamor_trapezoid.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/glamor/glamor_render.c b/glamor/glamor_render.c index 6dacd4466..9b80295e5 100644 --- a/glamor/glamor_render.c +++ b/glamor/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/glamor/glamor_trapezoid.c b/glamor/glamor_trapezoid.c index 5c02a8ce0..fd63062f6 100644 --- a/glamor/glamor_trapezoid.c +++ b/glamor/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); }