GPU: utility function to unregister presets

This commit is contained in:
Campbell Barton 2018-09-11 13:17:30 +10:00
parent 0b597bf7b9
commit 58a8277098
Notes: blender-bot 2023-02-14 09:34:18 +01:00
Referenced by issue #56752, Tooltip flicker alpha on redraw
2 changed files with 14 additions and 2 deletions

View File

@ -49,6 +49,7 @@ struct GPUBatch *GPU_batch_preset_sphere_wire(int lod) ATTR_WARN_UNUSED_RESULT;
void gpu_batch_presets_init(void);
void gpu_batch_presets_register(struct GPUBatch *preset_batch);
bool gpu_batch_presets_unregister(struct GPUBatch *preset_batch);
void gpu_batch_presets_reset(void);
void gpu_batch_presets_exit(void);

View File

@ -221,12 +221,23 @@ void gpu_batch_presets_register(GPUBatch *preset_batch)
BLI_addtail(&presets_list, BLI_genericNodeN(preset_batch));
}
bool gpu_batch_presets_unregister(GPUBatch *preset_batch)
{
for (LinkData *link = presets_list.last; link; link = link->prev) {
if (preset_batch == link->data) {
BLI_remlink(&presets_list, link);
MEM_freeN(link);
return true;
}
}
return false;
}
void gpu_batch_presets_reset(void)
{
/* Reset vao caches for these every time we switch opengl context.
* This way they will draw correctly for each window. */
LinkData *link = presets_list.first;
for (link = presets_list.first; link; link = link->next) {
for (LinkData *link = presets_list.first; link; link = link->next) {
GPUBatch *preset = link->data;
GPU_batch_vao_cache_clear(preset);
}