Data blocks represents a large block of data. Some resources use a data block as a source of data. The same data block may be used together with many resources.
RenDataBlock* ren_data_block_new( |
ren_size size, |
RenUsage usage); |
Define a new data block. The data will be internally allocated, with the
size as specified. The parameter usage specifies
how often the data block is intended to be used and modified, which may
allow the implementation to be more efficient.
RenUsage
REN_USAGE_DONT_CARELet backend choose a generally good solution. Not recommended.
REN_USAGE_IMMUTABLEData cannot be changed and thus never is changed.
REN_USAGE_STATICData is modified very seldom or never, and used many times.
REN_USAGE_DYNAMICData is modified often, but also used many times between modifications.
REN_USAGE_STREAMData is modified almost as often as it is used.
RenDataBlock* ren_data_block_ref( |
RenDataBlock* data_block); |
Increases the reference count of the DataBlock instance and then returns it.
void ren_data_block_unref( |
RenDataBlock* data_block); |
Decreases the reference count of the DataBlock instance. When its reference count drops to 0, it will be destroyed automatically.
void* ren_data_block_begin_edit( |
RenDataBlock* data_block); |
Get the internal data of the data block with the intention of modifying it. This function may lock while some other thread is already using the data.
void ren_data_block_end_edit( |
RenDataBlock* data_block); |
Mark an end of modifying the internal data. The pointer received with
ren_data block_begin_edit must not be used anymore.
void ren_data_block_changed( |
RenDataBlock* data_block, |
| ren_size from, | |
ren_size count); |
Notify that a part of the data has been changed. This is done between
ren_data_block_begin_edit and
ren_data_block_end_edit. The parameter
count may be 0 to denote everything to the end.