st/xorg: Fix two leeks
authorJakob Bornecrantz <wallbraker@gmail.com>
Tue, 22 Sep 2009 17:59:26 +0000 (10:59 -0700)
committerJakob Bornecrantz <wallbraker@gmail.com>
Tue, 22 Sep 2009 18:06:57 +0000 (11:06 -0700)
We where leaking both surfaces in the composit code
and textures from pixmaps.

src/gallium/state_trackers/xorg/xorg_composite.c
src/gallium/state_trackers/xorg/xorg_exa.c

index 66ca4cb59050a1cc9545d5f1268bc8862718e402..ed649a9d6525cb5d8b9653033f19cd95c2e479c4 100644 (file)
@@ -359,6 +359,9 @@ bind_framebuffer_state(struct exa_context *exa, struct exa_pixmap_priv *pDst)
    state.zsbuf = 0;
 
    cso_set_framebuffer(exa->cso, &state);
+
+   /* we do fire and forget for the framebuffer, this is the forget part */
+   pipe_surface_reference(&surface, NULL);
 }
 
 enum AxisOrientation {
index dea9f4c2bc3fa54b902dde2fd1bf5a3bccba3e2e..6507b2950e2c27617c050e3fdb1198d2d711eba1 100644 (file)
@@ -671,6 +671,8 @@ ExaModifyPixmapHeader(PixmapPtr pPixmap, int width, int height,
 #endif
 
        pipe_texture_reference(&priv->tex, texture);
+       /* the texture we create has one reference */
+       pipe_texture_reference(&texture, NULL);
     }
 
     return TRUE;