Skip to content

st-bin: Disallow st_bin_set_child with already-parented children

Not checking for this would result in clutter_actor_add_child failing, but StBin keeping a copy in priv->child. So later on, st_bin_remove would never be called on it and this assertion would fail and crash the whole shell:

static void
st_bin_destroy (ClutterActor *actor)
{
  StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (actor));

  if (priv->child)
    clutter_actor_destroy (priv->child);
  g_assert (priv->child == NULL);

By disallowing spurious st_bin_set_child calls we now prevent StBin from entering such a corrupt state and the above assertion won't fail anymore.

https://bugs.launchpad.net/bugs/1898005
https://bugs.launchpad.net/bugs/1898910

Merge request reports