[gtk/wip/chergert/glproto: 323/526] check initial flag and count in setters
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/chergert/glproto: 323/526] check initial flag and count in setters
- Date: Tue, 16 Feb 2021 01:14:33 +0000 (UTC)
commit c7b1bf8fd0b9ebe64802114cedc98263fe71fe1b
Author: Christian Hergert <chergert redhat com>
Date: Wed Jan 27 12:48:47 2021 -0800
check initial flag and count in setters
this helps to ensure we send initial values to the driver which could be
important if something changes state outside of our frame driver.
gsk/next/gskgluniformstate.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
---
diff --git a/gsk/next/gskgluniformstate.c b/gsk/next/gskgluniformstate.c
index d0f558e10f..02de791d20 100644
--- a/gsk/next/gskgluniformstate.c
+++ b/gsk/next/gskgluniformstate.c
@@ -632,7 +632,7 @@ gsk_gl_uniform_state_set_color (GskGLUniformState *state,
if (color == NULL)
color = &transparent;
- if (!gdk_rgba_equal (u, color))
+ if (info->initial || !gdk_rgba_equal (u, color))
{
REPLACE_UNIFORM (info, u, GSK_GL_UNIFORM_FORMAT_COLOR, 1);
memcpy (u, color, sizeof *color);
@@ -653,10 +653,11 @@ gsk_gl_uniform_state_set1fv (GskGLUniformState *state,
g_assert (state != NULL);
g_assert (program > 0);
+ g_assert (count > 0);
if ((u = get_uniform (state, program, GSK_GL_UNIFORM_FORMAT_1FV, count, location, &info)))
{
- gboolean changed = memcmp (u, value, sizeof (Uniform1f) * count) != 0;
+ gboolean changed = info->initial || memcmp (u, value, sizeof *u * count) != 0;
if (changed)
{
@@ -679,10 +680,11 @@ gsk_gl_uniform_state_set2fv (GskGLUniformState *state,
g_assert (state != NULL);
g_assert (program > 0);
+ g_assert (count > 0);
if ((u = get_uniform (state, program, GSK_GL_UNIFORM_FORMAT_2FV, count, location, &info)))
{
- gboolean changed = memcmp (u, value, sizeof (Uniform2f) * count) != 0;
+ gboolean changed = info->initial || memcmp (u, value, sizeof *u * count) != 0;
if (changed)
{
@@ -705,10 +707,11 @@ gsk_gl_uniform_state_set3fv (GskGLUniformState *state,
g_assert (state != NULL);
g_assert (program > 0);
+ g_assert (count > 0);
if ((u = get_uniform (state, program, GSK_GL_UNIFORM_FORMAT_3FV, count, location, &info)))
{
- gboolean changed = memcmp (u, value, sizeof (Uniform3f) * count) != 0;
+ gboolean changed = info->initial || memcmp (u, value, sizeof *u * count) != 0;
if (changed)
{
@@ -731,10 +734,11 @@ gsk_gl_uniform_state_set4fv (GskGLUniformState *state,
g_assert (state != NULL);
g_assert (program > 0);
+ g_assert (count > 0);
if ((u = get_uniform (state, program, GSK_GL_UNIFORM_FORMAT_4FV, count, location, &info)))
{
- gboolean changed = memcmp (u, value, sizeof (Uniform4f) * count) != 0;
+ gboolean changed = info->initial || memcmp (u, value, sizeof *u * count) != 0;
if (changed)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]