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.
This commit is contained in:
Matthias Clasen
2019-06-29 05:06:56 +00:00
parent 194ec5c3eb
commit db2ebb17ff

View File

@@ -775,6 +775,8 @@ gtk_constraint_layout_measure (GtkLayoutManager *manager,
if (solver == NULL)
return;
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
* layout later on
@@ -799,6 +801,8 @@ gtk_constraint_layout_measure (GtkLayoutManager *manager,
update_child_constraint (self, info, child, NAT_HEIGHT, nat_req.height);
}
gtk_constraint_solver_thaw (solver);
switch (orientation)
{
case GTK_ORIENTATION_HORIZONTAL:
@@ -904,6 +908,8 @@ gtk_constraint_layout_allocate (GtkLayoutManager *manager,
gtk_constraint_variable_get_value (layout_width),
gtk_constraint_variable_get_value (layout_height)));
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
*/
@@ -927,6 +933,8 @@ gtk_constraint_layout_allocate (GtkLayoutManager *manager,
update_child_constraint (self, info, child, NAT_HEIGHT, nat_req.height);
}
gtk_constraint_solver_thaw (solver);
for (child = _gtk_widget_get_first_child (widget);
child != NULL;
child = _gtk_widget_get_next_sibling (child))