summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYounes Manton <[email protected]>2010-05-24 13:44:06 -0400
committerYounes Manton <[email protected]>2010-05-24 13:44:06 -0400
commit2798958d896dfc9dc6244bc3dce3db8a2f50b589 (patch)
tree22dfb4ca97729ac66019beb286d188df35f01325
parent0a51e8633287b97b4d88e0cb553854535f2fa5e7 (diff)
vl: Dec sampler view refs instead of destroying them.
Gets rid of a bunch of double frees and the crash at shutdown.
-rw-r--r--src/gallium/auxiliary/vl/vl_compositor.c6
-rw-r--r--src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c6
2 files changed, 6 insertions, 6 deletions
diff --git a/src/gallium/auxiliary/vl/vl_compositor.c b/src/gallium/auxiliary/vl/vl_compositor.c
index b128af19ba3..8203bf79ee0 100644
--- a/src/gallium/auxiliary/vl/vl_compositor.c
+++ b/src/gallium/auxiliary/vl/vl_compositor.c
@@ -258,14 +258,14 @@ texview_map_delete(const struct keymap *map,
const void *key, void *data,
void *user)
{
- struct pipe_context *pipe = (struct pipe_context*)user;
+ struct pipe_sampler_view *sv = (struct pipe_sampler_view*)data;
assert(map);
assert(key);
assert(data);
assert(user);
- pipe->sampler_view_destroy(pipe, data);
+ pipe_sampler_view_reference(&sv, NULL);
}
bool vl_compositor_init(struct vl_compositor *compositor, struct pipe_context *pipe)
@@ -506,7 +506,7 @@ static void draw_layers(struct vl_compositor *c,
c->pipe->draw_arrays(c->pipe, PIPE_PRIM_TRIANGLES, i * 6, 6);
if (delete_view) {
- c->pipe->sampler_view_destroy(c->pipe, surface_view);
+ pipe_sampler_view_reference(&surface_view, NULL);
}
}
}
diff --git a/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c b/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c
index 1e9a02c270d..bafe4861fa5 100644
--- a/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c
+++ b/src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c
@@ -675,7 +675,7 @@ cleanup_buffers(struct vl_mpeg12_mc_renderer *r)
pipe_resource_reference(&r->vs_const_buf, NULL);
for (i = 0; i < 3; ++i) {
- r->pipe->sampler_view_destroy(r->pipe, r->sampler_views.all[i]);
+ pipe_sampler_view_reference(&r->sampler_views.all[i], NULL);
r->pipe->delete_vertex_elements_state(r->pipe, r->vertex_elems_state.all[i]);
pipe_resource_reference(&r->vertex_bufs.all[i].buffer, NULL);
pipe_resource_reference(&r->textures.all[i], NULL);
@@ -1311,14 +1311,14 @@ texview_map_delete(const struct keymap *map,
const void *key, void *data,
void *user)
{
- struct pipe_context *pipe = (struct pipe_context*)user;
+ struct pipe_sampler_view *sv = (struct pipe_sampler_view*)data;
assert(map);
assert(key);
assert(data);
assert(user);
- pipe->sampler_view_destroy(pipe, data);
+ pipe_sampler_view_reference(&sv, NULL);
}
bool