[gtk] snapshot: Get new GArray item directly



commit f4f0f0e6a0488146518266e20d07eb37aeb9b558
Author: Timm Bäder <tbaeder redhat com>
Date:   Fri Jan 11 10:05:44 2019 +0100

    snapshot: Get new GArray item directly
    
    Instead of building it up ourselves, then coping it into the GArray and
    then getting the last element of that array.

 gtk/gtksnapshot.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)
---
diff --git a/gtk/gtksnapshot.c b/gtk/gtksnapshot.c
index 81e7419207..3bc18cd4e8 100644
--- a/gtk/gtksnapshot.c
+++ b/gtk/gtksnapshot.c
@@ -112,17 +112,19 @@ gtk_snapshot_push_state (GtkSnapshot            *snapshot,
                          int                     translate_y,
                          GtkSnapshotCollectFunc  collect_func)
 {
-  GtkSnapshotState state = { 0, };
+  const gsize n_states = snapshot->state_stack->len;
+  GtkSnapshotState *state;
 
-  state.translate_x = translate_x;
-  state.translate_y = translate_y;
-  state.collect_func = collect_func;
-  state.start_node_index = snapshot->nodes->len;
-  state.n_nodes = 0;
+  g_array_set_size (snapshot->state_stack, n_states + 1);
+  state = &g_array_index (snapshot->state_stack, GtkSnapshotState, n_states);
 
-  g_array_append_val (snapshot->state_stack, state);
+  state->translate_x = translate_x;
+  state->translate_y = translate_y;
+  state->collect_func = collect_func;
+  state->start_node_index = snapshot->nodes->len;
+  state->n_nodes = 0;
 
-  return &g_array_index (snapshot->state_stack, GtkSnapshotState, snapshot->state_stack->len - 1);
+  return state;
 }
 
 static GtkSnapshotState *


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]