mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-05-05 19:18:03 +02:00
glamor: Free Xv put image data immediately after use
The Xv StopVideo callback is not invoked on textured video ports, so the temporary pixmaps allocated for the video planes are never freed. Freeing the storage immediately after use is a simple solution to this problem which doesn't appear to have any visible performance impact. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
c47ee880e7
commit
d4111239e6
1 changed files with 10 additions and 3 deletions
|
|
@ -135,6 +135,11 @@ glamor_init_xv_shader(ScreenPtr screen)
|
|||
|
||||
void
|
||||
glamor_xv_stop_video(glamor_port_private *port_priv)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
glamor_xv_free_port_data(glamor_port_private *port_priv)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
|
@ -144,6 +149,8 @@ glamor_xv_stop_video(glamor_port_private *port_priv)
|
|||
port_priv->src_pix[i] = NULL;
|
||||
}
|
||||
}
|
||||
RegionUninit(&port_priv->clip);
|
||||
RegionNull(&port_priv->clip);
|
||||
}
|
||||
|
||||
int
|
||||
|
|
@ -381,6 +388,8 @@ glamor_xv_render(glamor_port_private *port_priv)
|
|||
glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE);
|
||||
|
||||
DamageDamageRegion(port_priv->pDraw, &port_priv->clip);
|
||||
|
||||
glamor_xv_free_port_data(port_priv);
|
||||
}
|
||||
|
||||
int
|
||||
|
|
@ -468,9 +477,7 @@ glamor_xv_put_image(glamor_port_private *port_priv,
|
|||
else
|
||||
port_priv->pPixmap = (PixmapPtr) pDrawable;
|
||||
|
||||
if (!RegionEqual(&port_priv->clip, clipBoxes)) {
|
||||
RegionCopy(&port_priv->clip, clipBoxes);
|
||||
}
|
||||
RegionCopy(&port_priv->clip, clipBoxes);
|
||||
|
||||
port_priv->src_x = src_x;
|
||||
port_priv->src_y = src_y;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue