gl renderer: Increase GArray size by 2 up front
authorTimm Bäder <mail@baedert.org>
Thu, 12 Apr 2018 07:47:17 +0000 (09:47 +0200)
committerTimm Bäder <mail@baedert.org>
Sat, 14 Apr 2018 09:47:02 +0000 (11:47 +0200)
Since we know we will add two elements anyway.

gsk/gl/gskglrenderops.c

index d05ec61a0fa210d6ef9de94f959fce378c2fa33f..21223ee1570ec27b081db3151de433fe4e9aeb1a 100644 (file)
@@ -407,17 +407,21 @@ ops_draw (RenderOpBuilder     *builder,
     }
   else
     {
-      RenderOp op;
+      const gsize n_ops = builder->render_ops->len;
+      RenderOp *op;
       gsize offset = builder->buffer_size / sizeof (GskQuadVertex);
 
-      op.op = OP_CHANGE_VAO;
-      memcpy (&op.vertex_data, vertex_data, sizeof(GskQuadVertex) * GL_N_VERTICES);
-      g_array_append_val (builder->render_ops, op);
+      /* We will add two render ops here. */
+      g_array_set_size (builder->render_ops, n_ops + 2);
 
-      op.op = OP_DRAW;
-      op.draw.vao_offset = offset;
-      op.draw.vao_size = GL_N_VERTICES;
-      g_array_append_val (builder->render_ops, op);
+      op = &g_array_index (builder->render_ops, RenderOp, n_ops);
+      op->op = OP_CHANGE_VAO;
+      memcpy (&op->vertex_data, vertex_data, sizeof(GskQuadVertex) * GL_N_VERTICES);
+
+      op = &g_array_index (builder->render_ops, RenderOp, n_ops + 1);
+      op->op = OP_DRAW;
+      op->draw.vao_offset = offset;
+      op->draw.vao_size = GL_N_VERTICES;
     }
 
   /* We added new vertex data in both cases so increase the buffer size */