StIcon: use g_signal_connect_object() for safety
Prevent a crash in case an icon is destroyed before the texture finishes loading, and something else is keeping the texture alive for any reason. https://bugzilla.gnome.org/show_bug.cgi?id=696720
This commit is contained in:
parent
5d50b08351
commit
ef9c50e63a
@ -410,8 +410,8 @@ st_icon_finish_update (StIcon *icon)
|
|||||||
st_icon_update_shadow_material (icon);
|
st_icon_update_shadow_material (icon);
|
||||||
|
|
||||||
/* "pixbuf-change" is actually a misnomer for "texture-changed" */
|
/* "pixbuf-change" is actually a misnomer for "texture-changed" */
|
||||||
g_signal_connect (priv->icon_texture, "pixbuf-change",
|
g_signal_connect_object (priv->icon_texture, "pixbuf-change",
|
||||||
G_CALLBACK (on_pixbuf_changed), icon);
|
G_CALLBACK (on_pixbuf_changed), icon, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -469,7 +469,7 @@ st_icon_update (StIcon *icon)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Will be shown when fully loaded */
|
/* Will be shown when fully loaded */
|
||||||
priv->opacity_handler_id = g_signal_connect (priv->pending_texture, "notify::opacity", G_CALLBACK (opacity_changed_cb), icon);
|
priv->opacity_handler_id = g_signal_connect_object (priv->pending_texture, "notify::opacity", G_CALLBACK (opacity_changed_cb), icon, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (priv->icon_texture)
|
else if (priv->icon_texture)
|
||||||
|
Loading…
Reference in New Issue
Block a user