Bug 794132 - Make the plug-in protocol version part of the plug-in command line

Also clean GPConfig struct from deprecated members and bump the
plug-in protocol version number.
This commit is contained in:
Michael Natterer 2018-05-02 16:35:06 +02:00
parent 3571fc3ae2
commit 7549b6efe4
6 changed files with 30 additions and 61 deletions

View File

@ -218,9 +218,10 @@ gimp_plug_in_open (GimpPlugIn *plug_in,
gint my_read[2];
gint my_write[2];
gchar **envp;
const gchar *args[9];
const gchar *args[10];
gchar **argv;
gint argc;
gchar protocol_version[8];
gchar *interp, *interp_arg;
gchar *his_read_fd, *his_write_fd;
const gchar *mode;
@ -327,8 +328,12 @@ gimp_plug_in_open (GimpPlugIn *plug_in,
if (interp_arg)
args[argc++] = interp_arg;
g_snprintf (protocol_version, sizeof (protocol_version),
"%d", GIMP_PROTOCOL_VERSION);
args[argc++] = progname;
args[argc++] = "-gimp";
args[argc++] = protocol_version;
args[argc++] = his_read_fd;
args[argc++] = his_write_fd;
args[argc++] = mode;

View File

@ -194,7 +194,6 @@ gimp_plug_in_manager_call_run (GimpPlugInManager *manager,
display_ID = display ? gimp_get_display_ID (manager->gimp, display) : -1;
config.version = GIMP_PROTOCOL_VERSION;
config.tile_width = GIMP_PLUG_IN_TILE_WIDTH;
config.tile_height = GIMP_PLUG_IN_TILE_HEIGHT;
config.shm_ID = (manager->shm ?
@ -208,9 +207,7 @@ gimp_plug_in_manager_call_run (GimpPlugInManager *manager,
config.export_exif = core_config->export_metadata_exif;
config.export_xmp = core_config->export_metadata_xmp;
config.export_iptc = core_config->export_metadata_iptc;
config.install_cmap = FALSE;
config.show_tooltips = gui_config->show_tooltips;
config.min_colors = 144;
config.gdisp_ID = display_ID;
config.app_name = (gchar *) g_get_application_name ();
config.wm_class = (gchar *) gimp_get_program_class (manager->gimp);

View File

@ -214,7 +214,6 @@ static gint _tile_height = -1;
static gint _shm_ID = -1;
static guchar *_shm_addr = NULL;
static const gdouble _gamma_val = 2.2;
static gboolean _install_cmap = FALSE;
static gboolean _show_tool_tips = TRUE;
static gboolean _show_help_button = TRUE;
static gboolean _export_exif = FALSE;
@ -222,7 +221,6 @@ static gboolean _export_xmp = FALSE;
static gboolean _export_iptc = FALSE;
static GimpCheckSize _check_size = GIMP_CHECK_SIZE_MEDIUM_CHECKS;
static GimpCheckType _check_type = GIMP_CHECK_TYPE_GRAY_CHECKS;
static gint _min_colors = 144;
static gint _gdisp_ID = -1;
static gchar *_wm_class = NULL;
static gchar *_display_name = NULL;
@ -279,6 +277,7 @@ gimp_main (const GimpPlugInInfo *info,
{
ARG_PROGNAME,
ARG_GIMP,
ARG_PROTOCOL_VERSION,
ARG_READ_FD,
ARG_WRITE_FD,
ARG_MODE,
@ -290,6 +289,7 @@ gimp_main (const GimpPlugInInfo *info,
gchar *basename;
const gchar *env_string;
gchar *debug_string;
gint protocol_version;
#ifdef G_OS_WIN32
gint i, j, k;
@ -455,6 +455,27 @@ gimp_main (const GimpPlugInInfo *info,
g_set_prgname (basename);
protocol_version = atoi (argv[ARG_PROTOCOL_VERSION]);
if (protocol_version < GIMP_PROTOCOL_VERSION)
{
gimp_message (g_strdup_printf ("Could not execute plug-in \"%s\"\n(%s)\n"
"because GIMP is using an older version of the "
"plug-in protocol.",
gimp_filename_to_utf8 (g_get_prgname ()),
gimp_filename_to_utf8 (progname)));
return 1;
}
else if (protocol_version > GIMP_PROTOCOL_VERSION)
{
gimp_message (g_strdup_printf ("Could not execute plug-in \"%s\"\n(%s)\n"
"because it uses an obsolete version of the "
"plug-in protocol.",
gimp_filename_to_utf8 (g_get_prgname ()),
gimp_filename_to_utf8 (progname)));
return 1;
}
env_string = g_getenv ("GIMP_PLUGIN_DEBUG");
if (env_string)
@ -2126,37 +2147,16 @@ gimp_loop (void)
static void
gimp_config (GPConfig *config)
{
if (config->version < GIMP_PROTOCOL_VERSION)
{
g_message ("Could not execute plug-in \"%s\"\n(%s)\n"
"because GIMP is using an older version of the "
"plug-in protocol.",
gimp_filename_to_utf8 (g_get_prgname ()),
gimp_filename_to_utf8 (progname));
gimp_quit ();
}
else if (config->version > GIMP_PROTOCOL_VERSION)
{
g_message ("Could not execute plug-in \"%s\"\n(%s)\n"
"because it uses an obsolete version of the "
"plug-in protocol.",
gimp_filename_to_utf8 (g_get_prgname ()),
gimp_filename_to_utf8 (progname));
gimp_quit ();
}
_tile_width = config->tile_width;
_tile_height = config->tile_height;
_shm_ID = config->shm_ID;
_check_size = config->check_size;
_check_type = config->check_type;
_install_cmap = config->install_cmap ? TRUE : FALSE;
_show_tool_tips = config->show_tooltips ? TRUE : FALSE;
_show_help_button = config->show_help_button ? TRUE : FALSE;
_export_exif = config->export_exif ? TRUE : FALSE;
_export_xmp = config->export_xmp ? TRUE : FALSE;
_export_iptc = config->export_iptc ? TRUE : FALSE;
_min_colors = config->min_colors;
_gdisp_ID = config->gdisp_ID;
_wm_class = g_strdup (config->wm_class);
_display_name = g_strdup (config->display_name);

View File

@ -129,7 +129,6 @@ union _GimpParamData
gchar **d_stringarray;
GimpRGB *d_colorarray;
GimpRGB d_color;
GimpParamRegion d_region; /* deprecated */
gint32 d_display;
gint32 d_image;
gint32 d_item;
@ -139,7 +138,6 @@ union _GimpParamData
gint32 d_drawable;
gint32 d_selection;
gint32 d_boundary;
gint32 d_path; /* deprecated */
gint32 d_vectors;
gint32 d_unit;
GimpParasite d_parasite;

View File

@ -473,9 +473,6 @@ _gp_config_read (GIOChannel *channel,
{
GPConfig *config = g_slice_new0 (GPConfig);
if (! _gimp_wire_read_int32 (channel,
&config->version, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
&config->tile_width, 1, user_data))
goto cleanup;
@ -515,15 +512,9 @@ _gp_config_read (GIOChannel *channel,
(guint8 *) &config->export_iptc, 1,
user_data))
goto cleanup;
if (! _gimp_wire_read_int8 (channel,
(guint8 *) &config->install_cmap, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int8 (channel,
(guint8 *) &config->show_tooltips, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &config->min_colors, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &config->gdisp_ID, 1, user_data))
goto cleanup;
@ -562,9 +553,6 @@ _gp_config_write (GIOChannel *channel,
{
GPConfig *config = msg->data;
if (! _gimp_wire_write_int32 (channel,
&config->version, 1, user_data))
return;
if (! _gimp_wire_write_int32 (channel,
&config->tile_width, 1, user_data))
return;
@ -607,18 +595,10 @@ _gp_config_write (GIOChannel *channel,
(const guint8 *) &config->export_iptc, 1,
user_data))
return;
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) &config->install_cmap, 1,
user_data))
return;
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) &config->show_tooltips, 1,
user_data))
return;
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &config->min_colors, 1,
user_data))
return;
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &config->gdisp_ID, 1,
user_data))

View File

@ -26,7 +26,7 @@ G_BEGIN_DECLS
/* Increment every time the protocol changes
*/
#define GIMP_PROTOCOL_VERSION 0x0016
#define GIMP_PROTOCOL_VERSION 0x0017
enum
@ -61,7 +61,6 @@ typedef struct _GPProcUninstall GPProcUninstall;
struct _GPConfig
{
guint32 version;
guint32 tile_width;
guint32 tile_height;
gint32 shm_ID;
@ -73,9 +72,7 @@ struct _GPConfig
gint8 export_exif;
gint8 export_xmp;
gint8 export_iptc;
gint8 install_cmap;
gint8 show_tooltips;
gint32 min_colors;
gint32 gdisp_ID;
gchar *app_name;
gchar *wm_class;
@ -121,13 +118,6 @@ struct _GPParam
gchar **d_stringarray;
GimpRGB *d_colorarray;
GimpRGB d_color;
struct
{
gint32 x;
gint32 y;
gint32 width;
gint32 height;
} d_region; /* deprecated */
gint32 d_display;
gint32 d_image;
gint32 d_item;
@ -136,7 +126,6 @@ struct _GPParam
gint32 d_drawable;
gint32 d_selection;
gint32 d_boundary;
gint32 d_path; /* deprecated */
gint32 d_vectors;
gint32 d_status;
GimpParasite d_parasite;