mirror of
https://github.com/brl/mutter.git
synced 2024-11-29 11:30:45 -05:00
framebuffer: validate width/height in _set_viewport
This validates that the viewport width and height arguments are positive values in _cogl_framebuffer_set_viewport. In addition, just before calling glViewport we also assert that something else hasn't gone amiss and that the internal viewport width/height values we track are still positive before passing to glViewport which generates an error for negative values.
This commit is contained in:
parent
5a9b92a4a5
commit
1e3f4f62e0
@ -513,6 +513,8 @@ _cogl_framebuffer_set_viewport (CoglFramebuffer *framebuffer,
|
|||||||
float width,
|
float width,
|
||||||
float height)
|
float height)
|
||||||
{
|
{
|
||||||
|
g_return_if_fail (width > 0 && height > 0);
|
||||||
|
|
||||||
if (framebuffer->viewport_x == x &&
|
if (framebuffer->viewport_x == x &&
|
||||||
framebuffer->viewport_y == y &&
|
framebuffer->viewport_y == y &&
|
||||||
framebuffer->viewport_width == width &&
|
framebuffer->viewport_width == width &&
|
||||||
@ -976,8 +978,10 @@ _cogl_onscreen_new (void)
|
|||||||
ctx,
|
ctx,
|
||||||
COGL_FRAMEBUFFER_TYPE_ONSCREEN,
|
COGL_FRAMEBUFFER_TYPE_ONSCREEN,
|
||||||
COGL_PIXEL_FORMAT_RGBA_8888_PRE,
|
COGL_PIXEL_FORMAT_RGBA_8888_PRE,
|
||||||
0xdeadbeef, /* width */
|
0x1eadbeef, /* width */
|
||||||
0xdeadbeef); /* height */
|
0x1eadbeef); /* height */
|
||||||
|
/* NB: make sure to pass positive width/height numbers here
|
||||||
|
* because otherwise we'll hit input validation assertions!*/
|
||||||
|
|
||||||
COGL_FRAMEBUFFER (onscreen)->allocated = TRUE;
|
COGL_FRAMEBUFFER (onscreen)->allocated = TRUE;
|
||||||
|
|
||||||
@ -1413,9 +1417,8 @@ _cogl_framebuffer_flush_state (CoglFramebuffer *draw_buffer,
|
|||||||
{
|
{
|
||||||
float gl_viewport_y;
|
float gl_viewport_y;
|
||||||
|
|
||||||
if (draw_buffer->viewport_width < 0
|
g_assert (draw_buffer->viewport_width >=0 &&
|
||||||
|| draw_buffer->viewport_height < 0)
|
draw_buffer->viewport_height >=0);
|
||||||
return;
|
|
||||||
|
|
||||||
/* Convert the Cogl viewport y offset to an OpenGL viewport y offset
|
/* Convert the Cogl viewport y offset to an OpenGL viewport y offset
|
||||||
* NB: OpenGL defines its window and viewport origins to be bottom
|
* NB: OpenGL defines its window and viewport origins to be bottom
|
||||||
|
Loading…
Reference in New Issue
Block a user