static void st_icon_style_changed (StWidget *widget) { StIcon *self = ST_ICON (widget); StThemeNode *theme_node = st_widget_get_theme_node (widget); StIconPrivate *priv = self->priv; if (priv->shadow_spec) { st_shadow_unref (priv->shadow_spec); priv->shadow_spec = NULL; } if (priv->shadow_material) { cogl_handle_unref (priv->shadow_material); priv->shadow_material = COGL_INVALID_HANDLE; } priv->shadow_spec = st_theme_node_get_shadow (theme_node, "icon-shadow"); if (priv->shadow_spec && priv->shadow_spec->inset) { g_warning ("The icon-shadow property does not support inset shadows"); st_shadow_unref (priv->shadow_spec); priv->shadow_spec = NULL; } priv->theme_icon_size = (int)(0.5 + st_theme_node_get_length (theme_node, "icon-size")); st_icon_update_icon_size (self); st_icon_update (self); }
static void st_icon_dispose (GObject *gobject) { StIconPrivate *priv = ST_ICON (gobject)->priv; if (priv->icon_texture) { clutter_actor_destroy (priv->icon_texture); priv->icon_texture = NULL; } if (priv->pending_texture) { clutter_actor_destroy (priv->pending_texture); g_object_unref (priv->pending_texture); priv->pending_texture = NULL; } if (priv->gicon) { g_object_unref (priv->gicon); priv->gicon = NULL; } if (priv->shadow_material) { cogl_handle_unref (priv->shadow_material); priv->shadow_material = COGL_INVALID_HANDLE; } if (priv->shadow_spec) { st_shadow_unref (priv->shadow_spec); priv->shadow_spec = NULL; } G_OBJECT_CLASS (st_icon_parent_class)->dispose (gobject); }
static void st_icon_style_changed (StWidget *widget) { StIcon *self = ST_ICON (widget); StThemeNode *theme_node = st_widget_get_theme_node (widget); StIconPrivate *priv = self->priv; g_clear_pointer (&priv->shadow_pipeline, cogl_object_unref); g_clear_pointer (&priv->shadow_spec, st_shadow_unref); priv->shadow_spec = st_theme_node_get_shadow (theme_node, "icon-shadow"); if (priv->shadow_spec && priv->shadow_spec->inset) { g_warning ("The icon-shadow property does not support inset shadows"); st_shadow_unref (priv->shadow_spec); priv->shadow_spec = NULL; } priv->theme_icon_size = (int)(0.5 + st_theme_node_get_length (theme_node, "icon-size")); st_icon_update_icon_size (self); st_icon_update (self); }