mirror of https://github.com/GNOME/gimp.git
libgimp: fix legacy plug-ins, which I broke with the big ID removal
- hand out and leak proxy object objects to legacy API like candy, bypassing the factory in GimpPlugIn, because there is no plug-in singleton. - gimpgpcompat.c: image, item etc. are now objects, simply forgot this file.
This commit is contained in:
parent
33601f7a87
commit
37897b13fe
|
@ -160,10 +160,18 @@ gimp_display_get_by_id (gint32 display_id)
|
|||
{
|
||||
if (display_id > 0)
|
||||
{
|
||||
GimpPlugIn *plug_in = gimp_get_plug_in ();
|
||||
GimpProcedure *procedure = _gimp_plug_in_get_procedure (plug_in);
|
||||
GimpPlugIn *plug_in = gimp_get_plug_in ();
|
||||
|
||||
return _gimp_procedure_get_display (procedure, display_id);
|
||||
if (plug_in)
|
||||
{
|
||||
GimpProcedure *procedure = _gimp_plug_in_get_procedure (plug_in);
|
||||
|
||||
return _gimp_procedure_get_display (procedure, display_id);
|
||||
}
|
||||
|
||||
return g_object_new (GIMP_TYPE_DISPLAY,
|
||||
"id", display_id,
|
||||
NULL);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
|
|
@ -457,31 +457,38 @@ _gimp_params_to_value_array (const GimpParam *params,
|
|||
break;
|
||||
|
||||
case GIMP_PDB_ITEM:
|
||||
g_value_set_int (&value, params[i].data.d_item);
|
||||
g_value_set_object (&value,
|
||||
gimp_item_get_by_id (params[i].data.d_item));
|
||||
break;
|
||||
|
||||
case GIMP_PDB_DISPLAY:
|
||||
g_value_set_int (&value, params[i].data.d_display);
|
||||
g_value_set_object (&value,
|
||||
gimp_display_get_by_id (params[i].data.d_display));
|
||||
break;
|
||||
|
||||
case GIMP_PDB_IMAGE:
|
||||
g_value_set_int (&value, params[i].data.d_image);
|
||||
g_value_set_object (&value,
|
||||
gimp_image_get_by_id (params[i].data.d_image));
|
||||
break;
|
||||
|
||||
case GIMP_PDB_LAYER:
|
||||
g_value_set_int (&value, params[i].data.d_layer);
|
||||
g_value_set_object (&value,
|
||||
gimp_item_get_by_id (params[i].data.d_layer));
|
||||
break;
|
||||
|
||||
case GIMP_PDB_CHANNEL:
|
||||
g_value_set_int (&value, params[i].data.d_channel);
|
||||
g_value_set_object (&value,
|
||||
gimp_item_get_by_id (params[i].data.d_channel));
|
||||
break;
|
||||
|
||||
case GIMP_PDB_DRAWABLE:
|
||||
g_value_set_int (&value, params[i].data.d_drawable);
|
||||
g_value_set_object (&value,
|
||||
gimp_item_get_by_id (params[i].data.d_drawable));
|
||||
break;
|
||||
|
||||
case GIMP_PDB_SELECTION:
|
||||
g_value_set_int (&value, params[i].data.d_selection);
|
||||
g_value_set_object (&value,
|
||||
gimp_item_get_by_id (params[i].data.d_selection));
|
||||
break;
|
||||
|
||||
case GIMP_PDB_COLORARRAY:
|
||||
|
@ -538,7 +545,8 @@ _gimp_value_array_to_params (GimpValueArray *args,
|
|||
|
||||
for (i = 0; i < length; i++)
|
||||
{
|
||||
GValue *value = gimp_value_array_index (args, i);
|
||||
GValue *value = gimp_value_array_index (args, i);
|
||||
GObject *object;
|
||||
|
||||
params[i].type = _gimp_pdb_gtype_to_arg_type (G_VALUE_TYPE (value));
|
||||
|
||||
|
@ -620,31 +628,45 @@ _gimp_value_array_to_params (GimpValueArray *args,
|
|||
break;
|
||||
|
||||
case GIMP_PDB_ITEM:
|
||||
params[i].data.d_item = g_value_get_int (value);
|
||||
object = g_value_get_object (value);
|
||||
params[i].data.d_item =
|
||||
object ? gimp_item_get_id (GIMP_ITEM (object)) : -1;
|
||||
break;
|
||||
|
||||
case GIMP_PDB_DISPLAY:
|
||||
params[i].data.d_display = g_value_get_int (value);
|
||||
object = g_value_get_object (value);
|
||||
params[i].data.d_display =
|
||||
object ? gimp_display_get_id (GIMP_DISPLAY (object)) : -1;
|
||||
break;
|
||||
|
||||
case GIMP_PDB_IMAGE:
|
||||
params[i].data.d_image = g_value_get_int (value);
|
||||
object = g_value_get_object (value);
|
||||
params[i].data.d_image =
|
||||
object ? gimp_image_get_id (GIMP_IMAGE (object)) : -1;
|
||||
break;
|
||||
|
||||
case GIMP_PDB_LAYER:
|
||||
params[i].data.d_layer = g_value_get_int (value);
|
||||
object = g_value_get_object (value);
|
||||
params[i].data.d_layer =
|
||||
object ? gimp_item_get_id (GIMP_ITEM (object)) : -1;
|
||||
break;
|
||||
|
||||
case GIMP_PDB_CHANNEL:
|
||||
params[i].data.d_channel = g_value_get_int (value);
|
||||
object = g_value_get_object (value);
|
||||
params[i].data.d_channel =
|
||||
object ? gimp_item_get_id (GIMP_ITEM (object)) : -1;
|
||||
break;
|
||||
|
||||
case GIMP_PDB_DRAWABLE:
|
||||
params[i].data.d_drawable = g_value_get_int (value);
|
||||
object = g_value_get_object (value);
|
||||
params[i].data.d_drawable =
|
||||
object ? gimp_item_get_id (GIMP_ITEM (object)) : -1;
|
||||
break;
|
||||
|
||||
case GIMP_PDB_SELECTION:
|
||||
params[i].data.d_selection = g_value_get_int (value);
|
||||
object = g_value_get_object (value);
|
||||
params[i].data.d_selection =
|
||||
object ? gimp_item_get_id (GIMP_ITEM (object)) : -1;
|
||||
break;
|
||||
|
||||
case GIMP_PDB_COLORARRAY:
|
||||
|
|
|
@ -158,10 +158,18 @@ gimp_image_get_by_id (gint32 image_id)
|
|||
{
|
||||
if (image_id > 0)
|
||||
{
|
||||
GimpPlugIn *plug_in = gimp_get_plug_in ();
|
||||
GimpProcedure *procedure = _gimp_plug_in_get_procedure (plug_in);
|
||||
GimpPlugIn *plug_in = gimp_get_plug_in ();
|
||||
|
||||
return _gimp_procedure_get_image (procedure, image_id);
|
||||
if (plug_in)
|
||||
{
|
||||
GimpProcedure *procedure = _gimp_plug_in_get_procedure (plug_in);
|
||||
|
||||
return _gimp_procedure_get_image (procedure, image_id);
|
||||
}
|
||||
|
||||
return g_object_new (GIMP_TYPE_IMAGE,
|
||||
"id", image_id,
|
||||
NULL);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
|
|
@ -163,10 +163,45 @@ gimp_item_get_by_id (gint32 item_id)
|
|||
{
|
||||
if (item_id > 0)
|
||||
{
|
||||
GimpPlugIn *plug_in = gimp_get_plug_in ();
|
||||
GimpProcedure *procedure = _gimp_plug_in_get_procedure (plug_in);
|
||||
GimpPlugIn *plug_in = gimp_get_plug_in ();
|
||||
|
||||
return _gimp_procedure_get_item (procedure, item_id);
|
||||
if (plug_in)
|
||||
{
|
||||
GimpProcedure *procedure = _gimp_plug_in_get_procedure (plug_in);
|
||||
|
||||
return _gimp_procedure_get_item (procedure, item_id);
|
||||
}
|
||||
|
||||
if (gimp_item_id_is_layer (item_id))
|
||||
{
|
||||
return g_object_new (GIMP_TYPE_LAYER,
|
||||
"id", item_id,
|
||||
NULL);
|
||||
}
|
||||
else if (gimp_item_id_is_layer_mask (item_id))
|
||||
{
|
||||
return g_object_new (GIMP_TYPE_LAYER_MASK,
|
||||
"id", item_id,
|
||||
NULL);
|
||||
}
|
||||
else if (gimp_item_id_is_selection (item_id))
|
||||
{
|
||||
return g_object_new (GIMP_TYPE_SELECTION,
|
||||
"id", item_id,
|
||||
NULL);
|
||||
}
|
||||
else if (gimp_item_id_is_channel (item_id))
|
||||
{
|
||||
return g_object_new (GIMP_TYPE_CHANNEL,
|
||||
"id", item_id,
|
||||
NULL);
|
||||
}
|
||||
else if (gimp_item_id_is_vectors (item_id))
|
||||
{
|
||||
return g_object_new (GIMP_TYPE_VECTORS,
|
||||
"id", item_id,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
|
Loading…
Reference in New Issue