app: add gimp_item_peek_node() and use it

so we can avoid peeking into the GimpItem struct if we want to get to
the item's node without implicitly creating it if it doesn't already
exist.
This commit is contained in:
Michael Natterer 2010-02-14 13:55:45 +01:00
parent 44d969c146
commit 5f46061830
3 changed files with 15 additions and 3 deletions

View File

@ -355,17 +355,20 @@ static void
gimp_drawable_visibility_changed (GimpItem *item) gimp_drawable_visibility_changed (GimpItem *item)
{ {
GimpDrawable *drawable = GIMP_DRAWABLE (item); GimpDrawable *drawable = GIMP_DRAWABLE (item);
GeglNode *item_node;
/* don't use gimp_item_get_node() because that would create /* don't use gimp_item_get_node() because that would create
* the node. * the node.
*/ */
if (item->node) item_node = gimp_item_peek_node (item);
if (item_node)
{ {
GeglNode *input; GeglNode *input;
GeglNode *output; GeglNode *output;
input = gegl_node_get_input_proxy (item->node, "input"); input = gegl_node_get_input_proxy (item_node, "input");
output = gegl_node_get_output_proxy (item->node, "output"); output = gegl_node_get_output_proxy (item_node, "output");
if (gimp_item_get_visible (item) && if (gimp_item_get_visible (item) &&
! (GIMP_IS_LAYER (item) && ! (GIMP_IS_LAYER (item) &&

View File

@ -1421,6 +1421,14 @@ gimp_item_get_node (GimpItem *item)
return GIMP_ITEM_GET_CLASS (item)->get_node (item); return GIMP_ITEM_GET_CLASS (item)->get_node (item);
} }
GeglNode *
gimp_item_peek_node (GimpItem *item)
{
g_return_val_if_fail (GIMP_IS_ITEM (item), NULL);
return item->node;
}
GeglNode * GeglNode *
gimp_item_get_offset_node (GimpItem *item) gimp_item_get_offset_node (GimpItem *item)
{ {

View File

@ -247,6 +247,7 @@ gboolean gimp_item_stroke (GimpItem *item,
GError **error); GError **error);
GeglNode * gimp_item_get_node (GimpItem *item); GeglNode * gimp_item_get_node (GimpItem *item);
GeglNode * gimp_item_peek_node (GimpItem *item);
GeglNode * gimp_item_get_offset_node (GimpItem *item); GeglNode * gimp_item_get_offset_node (GimpItem *item);