forked from AuroraMiddleware/gtk
ngl: Fix a rare assertion violation
When we clean up the uniform allocations after a frame, it can happen that our space requirements actually increase, due to padding that depends on the order of allocations. Instead of asserting that it doesn't happen, just make it work by growing our allocation. Fixes: #3853
This commit is contained in:
parent
442f485591
commit
c66b030427
@ -215,7 +215,17 @@ gsk_ngl_uniform_state_end_frame (GskNglUniformState *state)
|
|||||||
|
|
||||||
state->values_pos = allocator;
|
state->values_pos = allocator;
|
||||||
|
|
||||||
g_assert (allocator <= state->values_len);
|
/* It can happen that our space requirements grow due to
|
||||||
|
* difference in order increasing padding. As a pragmatic
|
||||||
|
* solution to this, just increase the allocation to cover
|
||||||
|
* the predefined mappins.
|
||||||
|
*/
|
||||||
|
if (allocator > state->values_len)
|
||||||
|
{
|
||||||
|
while (allocator > state->values_len)
|
||||||
|
state->values_len *= 2;
|
||||||
|
state->values_buf = g_realloc (state->values_buf, state->values_len);
|
||||||
|
}
|
||||||
|
|
||||||
memset (state->apply_hash, 0, sizeof state->apply_hash);
|
memset (state->apply_hash, 0, sizeof state->apply_hash);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user