1 #include "va_dricommon.h"
3 static struct dri_drawable *
4 do_drawable_hash(VADriverContextP ctx, XID drawable)
6 struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
7 int index = drawable % DRAWABLE_HASH_SZ;
8 struct dri_drawable *dri_drawable = dri_state->drawable_hash[index];
10 while (dri_drawable) {
11 if (dri_drawable->x_drawable == drawable)
13 dri_drawable = dri_drawable->next;
16 dri_drawable = dri_state->createDrawable(ctx, drawable);
17 dri_drawable->x_drawable = drawable;
18 dri_drawable->next = dri_state->drawable_hash[index];
19 dri_state->drawable_hash[index] = dri_drawable;
25 free_drawable_hashtable(VADriverContextP ctx)
27 struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
29 struct dri_drawable *dri_drawable, *prev;
31 for (i = 0; i < DRAWABLE_HASH_SZ; i++) {
32 dri_drawable = dri_state->drawable_hash[i];
34 while (dri_drawable) {
36 dri_drawable = prev->next;
37 dri_state->destroyDrawable(ctx, prev);
43 dri_get_drawable(VADriverContextP ctx, XID drawable)
45 return do_drawable_hash(ctx, drawable);
49 dri_swap_buffer(VADriverContextP ctx, struct dri_drawable *dri_drawable)
51 struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
53 dri_state->swapBuffer(ctx, dri_drawable);
57 dri_get_rendering_buffer(VADriverContextP ctx, struct dri_drawable *dri_drawable)
59 struct dri_state *dri_state = (struct dri_state *)ctx->dri_state;
61 return dri_state->getRenderingBuffer(ctx, dri_drawable);