Gallium:draw:aaline and aapoint: Restore the old hooks when we destroy our stage.
authorStéphane Marchesin <marcheu@chromium.org>
Wed, 29 Jun 2011 03:45:07 +0000 (20:45 -0700)
committerStéphane Marchesin <marcheu@chromium.org>
Wed, 29 Jun 2011 23:54:28 +0000 (16:54 -0700)
src/gallium/auxiliary/draw/draw_pipe_aaline.c
src/gallium/auxiliary/draw/draw_pipe_aapoint.c

index 32af29ae1444f7dffabe509c213274a083c71601..458f85def2cb8674d18f487c084cd07350e8eab1 100644 (file)
@@ -784,6 +784,14 @@ aaline_destroy(struct draw_stage *stage)
 
    draw_free_temp_verts( stage );
 
+   /* restore the old entry points */
+   pipe->create_fs_state = aaline->driver_create_fs_state;
+   pipe->bind_fs_state = aaline->driver_bind_fs_state;
+   pipe->delete_fs_state = aaline->driver_delete_fs_state;
+
+   pipe->bind_fragment_sampler_states = aaline->driver_bind_sampler_states;
+   pipe->set_fragment_sampler_views = aaline->driver_set_sampler_views;
+
    FREE( stage );
 }
 
index 60f6380c503c795dae612fec0af74e0e1c449393..9265c379de88622be55dd30aba16a4607b998c2c 100644 (file)
@@ -768,7 +768,16 @@ aapoint_reset_stipple_counter(struct draw_stage *stage)
 static void
 aapoint_destroy(struct draw_stage *stage)
 {
+   struct aapoint_stage* aapoint = aapoint_stage(stage);
+   struct pipe_context *pipe = stage->draw->pipe;
+
    draw_free_temp_verts( stage );
+
+   /* restore the old entry points */
+   pipe->create_fs_state = aapoint->driver_create_fs_state;
+   pipe->bind_fs_state = aapoint->driver_bind_fs_state;
+   pipe->delete_fs_state = aapoint->driver_delete_fs_state;
+
    FREE( stage );
 }