GitLab repository storage has been migrated to hashed layout. Please contact Infrastructure team if you notice any issues with repositories or hooks.

Commit 7549b6ef authored by Michael Natterer's avatar Michael Natterer 😴

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.
parent 3571fc3a
......@@ -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;
......
......@@ -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);
......
......@@ -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);
......
......@@ -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;
......
......@@ -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))
......
......@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment