diff options
author | Brian Paul <brianp@vmware.com> | 2011-01-23 11:47:03 -0700 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2011-01-24 18:12:49 -0700 |
commit | 99c67f27d35a4bbbbefada8117d5972c7583cf42 (patch) | |
tree | 4bb72cd2585d317b49894a06e13f488b2664c836 /src/gallium/state_trackers/vega/vg_context.c | |
parent | f3e6edc70b7a8e3a642c9d666863901653105893 (diff) |
vega: implement handler/pointer conversion using a hash table
Before, we were just casting between 32-bit VGHandles and 64-bit pointers.
Diffstat (limited to 'src/gallium/state_trackers/vega/vg_context.c')
-rw-r--r-- | src/gallium/state_trackers/vega/vg_context.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/gallium/state_trackers/vega/vg_context.c b/src/gallium/state_trackers/vega/vg_context.c index a573577fa2..cd251838e0 100644 --- a/src/gallium/state_trackers/vega/vg_context.c +++ b/src/gallium/state_trackers/vega/vg_context.c @@ -183,6 +183,15 @@ void vg_init_object(struct vg_object *obj, struct vg_context *ctx, enum vg_objec { obj->type = type; obj->ctx = ctx; + obj->handle = create_handle(obj); +} + +/** free object resources, but not the object itself */ +void vg_free_object(struct vg_object *obj) +{ + obj->type = 0; + obj->ctx = NULL; + destroy_handle(obj->handle); } VGboolean vg_context_is_object_valid(struct vg_context *ctx, @@ -416,7 +425,7 @@ void vg_validate_state(struct vg_context *ctx) VGboolean vg_object_is_valid(VGHandle object, enum vg_object_type type) { struct vg_object *obj = handle_to_object(object); - if (object && is_aligned(obj) && obj->type == type) + if (obj && is_aligned(obj) && obj->type == type) return VG_TRUE; else return VG_FALSE; |