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>
This commit is contained in:
Junyan He 2012-07-20 05:52:57 +08:00 committed by Eric Anholt
parent 9f78e22fa6
commit 5512c14e34
2 changed files with 6 additions and 6 deletions

View File

@ -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);

View File

@ -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);
}