Save and restore the cliprect

This commit is contained in:
Sylvain 2021-04-03 20:53:19 +02:00
parent 3552e131a9
commit 6b5cfe5f2b
No known key found for this signature in database
GPG Key ID: 5F87E02E5BC0939E

View File

@ -107,9 +107,13 @@ nk_sdl_render(enum nk_anti_aliasing AA)
nk_buffer_init_default(&vbuf); nk_buffer_init_default(&vbuf);
nk_buffer_init_default(&ebuf); nk_buffer_init_default(&ebuf);
nk_convert(&sdl.ctx, &dev->cmds, &vbuf, &ebuf, &config); nk_convert(&sdl.ctx, &dev->cmds, &vbuf, &ebuf, &config);
/* iterate over and execute each draw command */ /* iterate over and execute each draw command */
offset = (const nk_draw_index*)nk_buffer_memory_const(&ebuf); offset = (const nk_draw_index*)nk_buffer_memory_const(&ebuf);
SDL_Rect saved_clip;
SDL_RenderGetClipRect(sdl.renderer, &saved_clip);
nk_draw_foreach(cmd, &sdl.ctx, &dev->cmds) nk_draw_foreach(cmd, &sdl.ctx, &dev->cmds)
{ {
if (!cmd->elem_count) continue; if (!cmd->elem_count) continue;
@ -125,8 +129,8 @@ nk_sdl_render(enum nk_anti_aliasing AA)
const void *vertices = nk_buffer_memory_const(&vbuf); const void *vertices = nk_buffer_memory_const(&vbuf);
int ret = SDL_RenderGeometryRaw(sdl.renderer, int ret = SDL_RenderGeometryRaw(sdl.renderer,
(SDL_Texture *)cmd->texture.ptr, (SDL_Texture *)cmd->texture.ptr,
(const void*)((const nk_byte*)vertices + vp), vs, (const void*)((const nk_byte*)vertices + vp), vs,
(const void*)((const nk_byte*)vertices + vc), vs, (const void*)((const nk_byte*)vertices + vc), vs,
(const void*)((const nk_byte*)vertices + vt), vs, (const void*)((const nk_byte*)vertices + vt), vs,
@ -136,6 +140,9 @@ nk_sdl_render(enum nk_anti_aliasing AA)
offset += cmd->elem_count; offset += cmd->elem_count;
} }
SDL_RenderSetClipRect(sdl.renderer, &saved_clip);
nk_clear(&sdl.ctx); nk_clear(&sdl.ctx);
nk_buffer_clear(&dev->cmds); nk_buffer_clear(&dev->cmds);
nk_buffer_free(&vbuf); nk_buffer_free(&vbuf);