mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
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:
parent
f641c57cfa
commit
310d8d189d
3 changed files with 41 additions and 0 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue