gbm: add gbm_bo_get/set_user_data()

This allows the user to associate some data to a gbm_bo and get a
callback when the bo is destroyed.
This commit is contained in:
Ander Conselvan de Oliveira 2012-04-30 13:27:51 +03:00 committed by Kristian Høgsberg
parent f641c57cfa
commit 310d8d189d
3 changed files with 41 additions and 0 deletions

View file

@ -231,6 +231,35 @@ gbm_bo_get_handle(struct gbm_bo *bo)
return bo->handle;
}
/** Set the user data associated with a buffer object
*
* \param bo The buffer object
* \param data The data to associate to the buffer object
* \param destroy_user_data A callback (which may be %NULL) that will be
* called prior to the buffer destruction
*/
GBM_EXPORT void
gbm_bo_set_user_data(struct gbm_bo *bo, void *data,
void (*destroy_user_data)(struct gbm_bo *, void *))
{
bo->user_data = data;
bo->destroy_user_data = destroy_user_data;
}
/** Get the user data associated with a buffer object
*
* \param bo The buffer object
* \return Returns the user data associated with the buffer object or %NULL
* if no data was associated with it
*
* \sa gbm_bo_set_user_data()
*/
GBM_EXPORT void *
gbm_bo_get_user_data(struct gbm_bo *bo)
{
return bo->user_data;
}
/**
* Destroys the given buffer object and frees all resources associated with
* it.
@ -240,6 +269,9 @@ gbm_bo_get_handle(struct gbm_bo *bo)
GBM_EXPORT void
gbm_bo_destroy(struct gbm_bo *bo)
{
if (bo->destroy_user_data)
bo->destroy_user_data(bo, bo->user_data);
bo->gbm->bo_destroy(bo);
}

View file

@ -245,6 +245,13 @@ gbm_bo_get_format(struct gbm_bo *bo);
union gbm_bo_handle
gbm_bo_get_handle(struct gbm_bo *bo);
void
gbm_bo_set_user_data(struct gbm_bo *bo, void *data,
void (*destroy_user_data)(struct gbm_bo *, void *));
void *
gbm_bo_get_user_data(struct gbm_bo *bo);
void
gbm_bo_destroy(struct gbm_bo *bo);

View file

@ -94,6 +94,8 @@ struct gbm_bo {
uint32_t pitch;
uint32_t format;
union gbm_bo_handle handle;
void *user_data;
void (*destroy_user_data)(struct gbm_bo *, void *);
};
struct gbm_surface {