[gtk/wip/ebassi/constraint-layout: 58/69] constraint layout: freeze/thaw on mass ops



commit f62fc4e2f2b793f95750cc02a21f6af5793e339b
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Jun 29 05:06:56 2019 +0000

    constraint layout: freeze/thaw on mass ops
    
    In measure and allocate we are potentially
    changing quite a few constraints. Don't
    optimize at every step.

 gtk/gtkconstraintlayout.c | 6 ++++++
 1 file changed, 6 insertions(+)
---
diff --git a/gtk/gtkconstraintlayout.c b/gtk/gtkconstraintlayout.c
index aa5280d8fd..a746491ccb 100644
--- a/gtk/gtkconstraintlayout.c
+++ b/gtk/gtkconstraintlayout.c
@@ -710,6 +710,7 @@ gtk_constraint_layout_measure (GtkLayoutManager *manager,
     return;
 
   size_constraints = g_ptr_array_new ();
+  gtk_constraint_solver_freeze (solver);
 
   /* We measure each child in the layout and impose restrictions on the
    * minimum and natural size, so we can solve the size of the overall
@@ -763,6 +764,8 @@ gtk_constraint_layout_measure (GtkLayoutManager *manager,
       g_ptr_array_add (size_constraints, constraint);
     }
 
+  gtk_constraint_solver_thaw (solver);
+
   switch (orientation)
     {
     case GTK_ORIENTATION_HORIZONTAL:
@@ -879,6 +882,7 @@ gtk_constraint_layout_allocate (GtkLayoutManager *manager,
                      gtk_constraint_variable_get_value (layout_height)));
 
   size_constraints = g_ptr_array_new ();
+  gtk_constraint_solver_freeze (solver);
 
   /* We reset the constraints on the size of each child, so we are sure the
    * layout is up to date
@@ -931,6 +935,8 @@ gtk_constraint_layout_allocate (GtkLayoutManager *manager,
       g_ptr_array_add (size_constraints, constraint);
     }
 
+  gtk_constraint_solver_thaw (solver);
+
   for (child = _gtk_widget_get_first_child (widget);
        child != NULL;
        child = _gtk_widget_get_next_sibling (child))


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