void gim_destroy_buffer_manager(GUINT buffer_manager_id) { GBUFFER_MANAGER_DATA * bm_data; gim_get_buffer_manager_data(buffer_manager_id,&bm_data); if(bm_data == 0) return; //Destroy all buffers GBUFFER_DATA * buffers = GIM_DYNARRAY_POINTER(GBUFFER_DATA,bm_data->m_buffer_array); GUINT i, buffer_count = bm_data->m_buffer_array.m_size; for (i=0;i<buffer_count ;i++ ) { if(buffers[i].m_buffer_handle!=0) //Is active { // free handle bm_data->m_prototype.free_fn(buffers[i].m_buffer_handle,buffers[i].m_size); } } //destroy buffer array GIM_DYNARRAY_DESTROY(bm_data->m_buffer_array); //destroy free positions GIM_DYNARRAY_DESTROY(bm_data->m_free_positions); //Mark as innactive bm_data->m_active = 0; }
void gim_destroy_buffer_manager(GBUFFER_MANAGER_DATA buffer_managers[], GUINT32 buffer_manager_id) { GBUFFER_MANAGER_DATA * bm_data; gim_get_buffer_manager_data(buffer_managers,buffer_manager_id,&bm_data); if(bm_data == 0) return; //Destroy all buffers GBUFFER_DATA * buffers = GIM_DYNARRAY_POINTER(GBUFFER_DATA,bm_data->m_buffer_array); GUINT32 i, buffer_count = bm_data->m_buffer_array.m_size; for (i=0;i<buffer_count ;i++ ) { GBUFFER_DATA * current_buffer = buffers + i; if(current_buffer->m_buffer_handle!=0) //Is active { // free handle bm_data->m_prototype->free_fn(current_buffer->m_buffer_handle,current_buffer->m_size); } } //destroy buffer array GIM_DYNARRAY_DESTROY(bm_data->m_buffer_array); //destroy free positions GIM_DYNARRAY_DESTROY(bm_data->m_free_positions); }