gimp/libgimpbase/gimpprotocol.c

1858 lines
58 KiB
C
Raw Normal View History

Makefile.am configure.in added new directory libgimpbase/ 2001-05-21 Michael Natterer <mitch@gimp.org> * Makefile.am * configure.in * gimptool-1.4.in: added new directory libgimpbase/ * app/Makefile.am: link against the new lib. * app/appenums.h: removed the PDB enums which are in libgimpbase/gimpbasetypes.h now. They are all "Gimp" prefixed. * app/apptypes.h: #include "libgimpbase/gimpbasetypes.h" * app/[lots] * app/core/[of] * app/gui/[files] * app/tools/: changed includes and all PDB types. * app/pdb/*: regenerated. * libgimp/Makefile.am: don't build libgimpi.a uglyness any more. * libgimp/gimpenv.[ch] * libgimp/gimplimits.[hh] * libgimp/gimpparasite.[ch] * libgimp/gimpparasiteio.[ch] * libgimp/gimpprotocol.[ch] * libgimp/gimpsignal.[ch] * libgimp/gimpunit.h * libgimp/gimputils.[ch] * libgimp/gimpwire.[ch]: removed... * libgimpbase/*: ...and added here as new library. * libgimp/gimp.[ch] * libgimp/gimpdrawable.[ch] * libgimp/gimpenums.h * libgimp/gimpimage.[ch] * libgimp/gimptile.c * libgimp/gimptypes.h * libgimp/gimpunit.c: changed accordingly. Added the gimp_*_add_new_parasite to gimp.[ch], gimpdrawable.[ch] and gimpimage.[ch]. * libgimpwidgets/gimppatheditor.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpsizeentry.c * libgimpwidgets/gimpunitmenu.c * libgimpwidgets/gimpwidgets.c * libgimpwidgets/gimpwidgetstypes.h: changed includes accordingly. * plug-ins/*/Makefile.am * plug-ins/common/mkgen.pl: link against libgimpbase. * tools/pdbgen/Makefile.am: scan libgimpbase/gimpbasetypes.h, so the enums are known to pdbgen... * tools/pdbgen/enumcode.pl: ...but don't write them out to libgimp/gimpenums.h * tools/pdbgen/app.pl: include libgimp/gimpbase.h in all *_cmds.c files. Added GIMP_ to the type names ganerated in app/. * tools/pdbgen/enums.pl: regenerated. * tools/pdbgen/pdb.pl * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/procedural_db.pdb * tools/pdbgen/pdb/unit.pdb: changed includes.
2001-05-21 21:58:46 +08:00
/* LIBGIMP - The GIMP Library
* Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball
1998-01-25 18:26:47 +08:00
*
* This library is free software: you can redistribute it and/or
1999-11-18 05:13:50 +08:00
* modify it under the terms of the GNU Lesser General Public
1998-01-25 18:26:47 +08:00
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
Makefile.am configure.in added new directory libgimpbase/ 2001-05-21 Michael Natterer <mitch@gimp.org> * Makefile.am * configure.in * gimptool-1.4.in: added new directory libgimpbase/ * app/Makefile.am: link against the new lib. * app/appenums.h: removed the PDB enums which are in libgimpbase/gimpbasetypes.h now. They are all "Gimp" prefixed. * app/apptypes.h: #include "libgimpbase/gimpbasetypes.h" * app/[lots] * app/core/[of] * app/gui/[files] * app/tools/: changed includes and all PDB types. * app/pdb/*: regenerated. * libgimp/Makefile.am: don't build libgimpi.a uglyness any more. * libgimp/gimpenv.[ch] * libgimp/gimplimits.[hh] * libgimp/gimpparasite.[ch] * libgimp/gimpparasiteio.[ch] * libgimp/gimpprotocol.[ch] * libgimp/gimpsignal.[ch] * libgimp/gimpunit.h * libgimp/gimputils.[ch] * libgimp/gimpwire.[ch]: removed... * libgimpbase/*: ...and added here as new library. * libgimp/gimp.[ch] * libgimp/gimpdrawable.[ch] * libgimp/gimpenums.h * libgimp/gimpimage.[ch] * libgimp/gimptile.c * libgimp/gimptypes.h * libgimp/gimpunit.c: changed accordingly. Added the gimp_*_add_new_parasite to gimp.[ch], gimpdrawable.[ch] and gimpimage.[ch]. * libgimpwidgets/gimppatheditor.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpsizeentry.c * libgimpwidgets/gimpunitmenu.c * libgimpwidgets/gimpwidgets.c * libgimpwidgets/gimpwidgetstypes.h: changed includes accordingly. * plug-ins/*/Makefile.am * plug-ins/common/mkgen.pl: link against libgimpbase. * tools/pdbgen/Makefile.am: scan libgimpbase/gimpbasetypes.h, so the enums are known to pdbgen... * tools/pdbgen/enumcode.pl: ...but don't write them out to libgimp/gimpenums.h * tools/pdbgen/app.pl: include libgimp/gimpbase.h in all *_cmds.c files. Added GIMP_ to the type names ganerated in app/. * tools/pdbgen/enums.pl: regenerated. * tools/pdbgen/pdb.pl * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/procedural_db.pdb * tools/pdbgen/pdb/unit.pdb: changed includes.
2001-05-21 21:58:46 +08:00
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1998-01-25 18:26:47 +08:00
* Library General Public License for more details.
*
1999-11-18 05:13:50 +08:00
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see
* <http://www.gnu.org/licenses/>.
Makefile.am configure.in added new directory libgimpbase/ 2001-05-21 Michael Natterer <mitch@gimp.org> * Makefile.am * configure.in * gimptool-1.4.in: added new directory libgimpbase/ * app/Makefile.am: link against the new lib. * app/appenums.h: removed the PDB enums which are in libgimpbase/gimpbasetypes.h now. They are all "Gimp" prefixed. * app/apptypes.h: #include "libgimpbase/gimpbasetypes.h" * app/[lots] * app/core/[of] * app/gui/[files] * app/tools/: changed includes and all PDB types. * app/pdb/*: regenerated. * libgimp/Makefile.am: don't build libgimpi.a uglyness any more. * libgimp/gimpenv.[ch] * libgimp/gimplimits.[hh] * libgimp/gimpparasite.[ch] * libgimp/gimpparasiteio.[ch] * libgimp/gimpprotocol.[ch] * libgimp/gimpsignal.[ch] * libgimp/gimpunit.h * libgimp/gimputils.[ch] * libgimp/gimpwire.[ch]: removed... * libgimpbase/*: ...and added here as new library. * libgimp/gimp.[ch] * libgimp/gimpdrawable.[ch] * libgimp/gimpenums.h * libgimp/gimpimage.[ch] * libgimp/gimptile.c * libgimp/gimptypes.h * libgimp/gimpunit.c: changed accordingly. Added the gimp_*_add_new_parasite to gimp.[ch], gimpdrawable.[ch] and gimpimage.[ch]. * libgimpwidgets/gimppatheditor.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpsizeentry.c * libgimpwidgets/gimpunitmenu.c * libgimpwidgets/gimpwidgets.c * libgimpwidgets/gimpwidgetstypes.h: changed includes accordingly. * plug-ins/*/Makefile.am * plug-ins/common/mkgen.pl: link against libgimpbase. * tools/pdbgen/Makefile.am: scan libgimpbase/gimpbasetypes.h, so the enums are known to pdbgen... * tools/pdbgen/enumcode.pl: ...but don't write them out to libgimp/gimpenums.h * tools/pdbgen/app.pl: include libgimp/gimpbase.h in all *_cmds.c files. Added GIMP_ to the type names ganerated in app/. * tools/pdbgen/enums.pl: regenerated. * tools/pdbgen/pdb.pl * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/procedural_db.pdb * tools/pdbgen/pdb/unit.pdb: changed includes.
2001-05-21 21:58:46 +08:00
*/
#include "config.h"
#include <glib-object.h>
Libgimp cleanup part II (with a little help from Yosh who moved the CVS 2000-05-27 Michael Natterer <mitch@gimp.org> Libgimp cleanup part II (with a little help from Yosh who moved the CVS files). * libgimp/Makefile.am * libgimp/gimpchannel_pdb.c * libgimp/gimpdisplay_pdb.c * libgimp/gimpdrawable_pdb.c * libgimp/gimpgradient_pdb.c * libgimp/gimphelp_pdb.c * libgimp/gimpimage_pdb.c * libgimp/gimplayer_pdb.c * libgimp/gimppalette_pdb.c * libgimp/gimpparasite_pdb.c * libgimp/gimpselection_pdb.c * libgimp/gimpunit_pdb.c: new names of all files which contain PDB wrappers. * modules/Makefile.am * libgimp/gimpcolordisplay.h * libgimp/gimpcolorselector.h * modules/gimpmodregister.[ch]: renamed. * libgimp/gimpparasiteF.h * libgimp/gimpparasiteP.h: removed because gimp.h had to include the private header anyway. * app/color_notebook.c * app/color_select.c * app/gdisplay_color.[ch] * app/gdisplay_color_ui.c * app/gimpbrushpipe.c * app/gimpdrawable.[ch] * app/gimpimage.c * app/gimpimage.h * app/gimpparasite.[ch] * app/gimprc.c * app/image_new.c * app/layer.c * app/parasite_cmds.c * app/parasitelist.[ch] * app/plug_in.c * app/procedural_db.c * app/undo.c * app/xcf.c * libgimp/gimp.[ch] * libgimp/gimpcolordisplay.h * libgimp/gimpparasite.[ch] * modules/cdisplay_gamma.c * modules/cdisplay_highcontrast.c * modules/colorsel_gtk.c * modules/colorsel_triangle.c * modules/colorsel_water.c * plug-ins/FractalExplorer/Dialogs.c * plug-ins/FractalExplorer/Events.c * plug-ins/Lighting/lighting_apply.c * plug-ins/Lighting/lighting_shade.c * plug-ins/MapObject/mapobject_image.c * plug-ins/common/gpb.c * plug-ins/common/psp.c * plug-ins/sel2path/sel2path.c * po-libgimp/POTFILES.in * tools/pdbgen/pdb.pl * tools/pdbgen/pdb/parasite.pdb: changed includes accordingly.
2000-05-27 09:30:21 +08:00
Makefile.am configure.in added new directory libgimpbase/ 2001-05-21 Michael Natterer <mitch@gimp.org> * Makefile.am * configure.in * gimptool-1.4.in: added new directory libgimpbase/ * app/Makefile.am: link against the new lib. * app/appenums.h: removed the PDB enums which are in libgimpbase/gimpbasetypes.h now. They are all "Gimp" prefixed. * app/apptypes.h: #include "libgimpbase/gimpbasetypes.h" * app/[lots] * app/core/[of] * app/gui/[files] * app/tools/: changed includes and all PDB types. * app/pdb/*: regenerated. * libgimp/Makefile.am: don't build libgimpi.a uglyness any more. * libgimp/gimpenv.[ch] * libgimp/gimplimits.[hh] * libgimp/gimpparasite.[ch] * libgimp/gimpparasiteio.[ch] * libgimp/gimpprotocol.[ch] * libgimp/gimpsignal.[ch] * libgimp/gimpunit.h * libgimp/gimputils.[ch] * libgimp/gimpwire.[ch]: removed... * libgimpbase/*: ...and added here as new library. * libgimp/gimp.[ch] * libgimp/gimpdrawable.[ch] * libgimp/gimpenums.h * libgimp/gimpimage.[ch] * libgimp/gimptile.c * libgimp/gimptypes.h * libgimp/gimpunit.c: changed accordingly. Added the gimp_*_add_new_parasite to gimp.[ch], gimpdrawable.[ch] and gimpimage.[ch]. * libgimpwidgets/gimppatheditor.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpsizeentry.c * libgimpwidgets/gimpunitmenu.c * libgimpwidgets/gimpwidgets.c * libgimpwidgets/gimpwidgetstypes.h: changed includes accordingly. * plug-ins/*/Makefile.am * plug-ins/common/mkgen.pl: link against libgimpbase. * tools/pdbgen/Makefile.am: scan libgimpbase/gimpbasetypes.h, so the enums are known to pdbgen... * tools/pdbgen/enumcode.pl: ...but don't write them out to libgimp/gimpenums.h * tools/pdbgen/app.pl: include libgimp/gimpbase.h in all *_cmds.c files. Added GIMP_ to the type names ganerated in app/. * tools/pdbgen/enums.pl: regenerated. * tools/pdbgen/pdb.pl * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/procedural_db.pdb * tools/pdbgen/pdb/unit.pdb: changed includes.
2001-05-21 21:58:46 +08:00
#include "gimpbasetypes.h"
app/Makefile.am app/channel_pvt.h app/drawable_pvt.h app/gdisplayF.h 2000-12-29 Michael Natterer <mitch@gimp.org> * app/Makefile.am * app/channel_pvt.h * app/drawable_pvt.h * app/gdisplayF.h * app/gimpdrawableP.h * app/gimpimageP.h * app/layer_pvt.h * app/toolsF.h: removed these files. * app/apptypes.h * tools/pdbgen/enums.pl: added tons of opaque typedefs and enums. * tools/pdbgen/pdb/brush_select.pdb * tools/pdbgen/pdb/brushes.pdb * tools/pdbgen/pdb/channel.pdb * tools/pdbgen/pdb/color.pdb * tools/pdbgen/pdb/convert.pdb * tools/pdbgen/pdb/display.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/gradient_select.pdb * tools/pdbgen/pdb/gradients.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/image.pdb * tools/pdbgen/pdb/layer.pdb * tools/pdbgen/pdb/pattern_select.pdb * tools/pdbgen/pdb/patterns.pdb * tools/pdbgen/pdb/selection.pdb * tools/pdbgen/pdb/tools.pdb * app/*: chainsaw #include cleanup: - Never (never!!) include stuff in header files except where we need access to structures' contents (like derived objects). - Added prototypes and proper formating in many files. - The #include order in *all* *.c files is as follows: #include "config.h" #include <system stuff> #include <gtk/gtk.h> #include "apptypes.h" #include "gimp stuff" #include "libgimp stuff" #include "libgimp/gimpintl.h" By following this scheme we can easily see a file's dependencies from it's #include's and can grep for the inclusion to find out where a file is used. * tools/pdbgen/app.pl: changed to follow the include scheme above. * libgimp/Makefile.am * libgimp/gimpuitypes.h: new file, included from libgimp/gimpui.h and from app/apptypes.h. * libgimp/gimpcolorbutton.[ch] * libgimp/gimpdialog.[ch] * libgimp/gimphelpui.[ch] * libgimp/gimpparasite.[ch] * libgimp/gimppatheditor.[ch] * libgimp/gimpprotocol.c * libgimp/gimpquerybox.[ch] * libgimp/gimpsizeentry.[ch] * libgimp/gimptypes.h * libgimp/gimpui.h * libgimp/gimpunit.h * libgimp/gimpunitmenu.[ch] * libgimp/gimpwidgets.[ch]: changed accordingly. * plug-ins/FractalExplorer/Dialogs.c * plug-ins/gdyntext/message_window.c * plug-ins/imagemap/imap_default_dialog.c * plug-ins/imagemap/imap_file.c: these files used to include "libgimp/gimpui.h" without including "libgimp/gimp.h". This is no longer possible because the libgimpui headers don't inlcude "libgimp/gimpunit.h" any more.
2000-12-29 23:22:01 +08:00
Libgimp cleanup part II (with a little help from Yosh who moved the CVS 2000-05-27 Michael Natterer <mitch@gimp.org> Libgimp cleanup part II (with a little help from Yosh who moved the CVS files). * libgimp/Makefile.am * libgimp/gimpchannel_pdb.c * libgimp/gimpdisplay_pdb.c * libgimp/gimpdrawable_pdb.c * libgimp/gimpgradient_pdb.c * libgimp/gimphelp_pdb.c * libgimp/gimpimage_pdb.c * libgimp/gimplayer_pdb.c * libgimp/gimppalette_pdb.c * libgimp/gimpparasite_pdb.c * libgimp/gimpselection_pdb.c * libgimp/gimpunit_pdb.c: new names of all files which contain PDB wrappers. * modules/Makefile.am * libgimp/gimpcolordisplay.h * libgimp/gimpcolorselector.h * modules/gimpmodregister.[ch]: renamed. * libgimp/gimpparasiteF.h * libgimp/gimpparasiteP.h: removed because gimp.h had to include the private header anyway. * app/color_notebook.c * app/color_select.c * app/gdisplay_color.[ch] * app/gdisplay_color_ui.c * app/gimpbrushpipe.c * app/gimpdrawable.[ch] * app/gimpimage.c * app/gimpimage.h * app/gimpparasite.[ch] * app/gimprc.c * app/image_new.c * app/layer.c * app/parasite_cmds.c * app/parasitelist.[ch] * app/plug_in.c * app/procedural_db.c * app/undo.c * app/xcf.c * libgimp/gimp.[ch] * libgimp/gimpcolordisplay.h * libgimp/gimpparasite.[ch] * modules/cdisplay_gamma.c * modules/cdisplay_highcontrast.c * modules/colorsel_gtk.c * modules/colorsel_triangle.c * modules/colorsel_water.c * plug-ins/FractalExplorer/Dialogs.c * plug-ins/FractalExplorer/Events.c * plug-ins/Lighting/lighting_apply.c * plug-ins/Lighting/lighting_shade.c * plug-ins/MapObject/mapobject_image.c * plug-ins/common/gpb.c * plug-ins/common/psp.c * plug-ins/sel2path/sel2path.c * po-libgimp/POTFILES.in * tools/pdbgen/pdb.pl * tools/pdbgen/pdb/parasite.pdb: changed includes accordingly.
2000-05-27 09:30:21 +08:00
#include "gimpparasite.h"
1997-11-25 06:05:25 +08:00
#include "gimpprotocol.h"
#include "gimpwire.h"
static void _gp_quit_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_quit_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_quit_destroy (GimpWireMessage *msg);
static void _gp_config_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_config_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_config_destroy (GimpWireMessage *msg);
static void _gp_tile_req_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_tile_req_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_tile_req_destroy (GimpWireMessage *msg);
static void _gp_tile_ack_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_tile_ack_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_tile_ack_destroy (GimpWireMessage *msg);
static void _gp_tile_data_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_tile_data_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_tile_data_destroy (GimpWireMessage *msg);
static void _gp_proc_run_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_proc_run_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_proc_run_destroy (GimpWireMessage *msg);
static void _gp_proc_return_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_proc_return_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_proc_return_destroy (GimpWireMessage *msg);
static void _gp_temp_proc_run_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_temp_proc_run_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_temp_proc_run_destroy (GimpWireMessage *msg);
static void _gp_temp_proc_return_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_temp_proc_return_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_temp_proc_return_destroy (GimpWireMessage *msg);
static void _gp_proc_install_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_proc_install_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_proc_install_destroy (GimpWireMessage *msg);
static void _gp_proc_uninstall_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_proc_uninstall_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_proc_uninstall_destroy (GimpWireMessage *msg);
static void _gp_extension_ack_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_extension_ack_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_extension_ack_destroy (GimpWireMessage *msg);
static void _gp_params_read (GIOChannel *channel,
GPParam **params,
guint *nparams,
gpointer user_data);
static void _gp_params_write (GIOChannel *channel,
GPParam *params,
gint nparams,
gpointer user_data);
static void _gp_has_init_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_has_init_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data);
static void _gp_has_init_destroy (GimpWireMessage *msg);
1997-11-25 06:05:25 +08:00
void
gp_init (void)
1997-11-25 06:05:25 +08:00
{
gimp_wire_register (GP_QUIT,
_gp_quit_read,
_gp_quit_write,
_gp_quit_destroy);
gimp_wire_register (GP_CONFIG,
_gp_config_read,
_gp_config_write,
_gp_config_destroy);
gimp_wire_register (GP_TILE_REQ,
_gp_tile_req_read,
_gp_tile_req_write,
_gp_tile_req_destroy);
gimp_wire_register (GP_TILE_ACK,
_gp_tile_ack_read,
_gp_tile_ack_write,
_gp_tile_ack_destroy);
gimp_wire_register (GP_TILE_DATA,
_gp_tile_data_read,
_gp_tile_data_write,
_gp_tile_data_destroy);
gimp_wire_register (GP_PROC_RUN,
_gp_proc_run_read,
_gp_proc_run_write,
_gp_proc_run_destroy);
gimp_wire_register (GP_PROC_RETURN,
_gp_proc_return_read,
_gp_proc_return_write,
_gp_proc_return_destroy);
gimp_wire_register (GP_TEMP_PROC_RUN,
_gp_temp_proc_run_read,
_gp_temp_proc_run_write,
_gp_temp_proc_run_destroy);
gimp_wire_register (GP_TEMP_PROC_RETURN,
_gp_temp_proc_return_read,
_gp_temp_proc_return_write,
_gp_temp_proc_return_destroy);
gimp_wire_register (GP_PROC_INSTALL,
_gp_proc_install_read,
_gp_proc_install_write,
_gp_proc_install_destroy);
gimp_wire_register (GP_PROC_UNINSTALL,
_gp_proc_uninstall_read,
_gp_proc_uninstall_write,
_gp_proc_uninstall_destroy);
gimp_wire_register (GP_EXTENSION_ACK,
_gp_extension_ack_read,
_gp_extension_ack_write,
_gp_extension_ack_destroy);
gimp_wire_register (GP_HAS_INIT,
_gp_has_init_read,
_gp_has_init_write,
_gp_has_init_destroy);
1997-11-25 06:05:25 +08:00
}
gboolean
gp_quit_write (GIOChannel *channel,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GimpWireMessage msg;
1997-11-25 06:05:25 +08:00
msg.type = GP_QUIT;
msg.data = NULL;
if (! gimp_wire_write_msg (channel, &msg, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
if (! gimp_wire_flush (channel, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
1997-11-25 06:05:25 +08:00
return TRUE;
}
gboolean
1999-03-07 20:56:03 +08:00
gp_config_write (GIOChannel *channel,
GPConfig *config,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GimpWireMessage msg;
1997-11-25 06:05:25 +08:00
msg.type = GP_CONFIG;
msg.data = config;
if (! gimp_wire_write_msg (channel, &msg, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
if (! gimp_wire_flush (channel, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
1997-11-25 06:05:25 +08:00
return TRUE;
}
gboolean
1999-03-07 20:56:03 +08:00
gp_tile_req_write (GIOChannel *channel,
GPTileReq *tile_req,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GimpWireMessage msg;
1997-11-25 06:05:25 +08:00
msg.type = GP_TILE_REQ;
msg.data = tile_req;
if (! gimp_wire_write_msg (channel, &msg, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
if (! gimp_wire_flush (channel, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
1997-11-25 06:05:25 +08:00
return TRUE;
}
gboolean
gp_tile_ack_write (GIOChannel *channel,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GimpWireMessage msg;
1997-11-25 06:05:25 +08:00
msg.type = GP_TILE_ACK;
msg.data = NULL;
if (! gimp_wire_write_msg (channel, &msg, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
if (! gimp_wire_flush (channel, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
1997-11-25 06:05:25 +08:00
return TRUE;
}
gboolean
1999-03-07 20:56:03 +08:00
gp_tile_data_write (GIOChannel *channel,
GPTileData *tile_data,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GimpWireMessage msg;
1997-11-25 06:05:25 +08:00
msg.type = GP_TILE_DATA;
msg.data = tile_data;
if (! gimp_wire_write_msg (channel, &msg, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
if (! gimp_wire_flush (channel, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
1997-11-25 06:05:25 +08:00
return TRUE;
}
gboolean
1999-03-07 20:56:03 +08:00
gp_proc_run_write (GIOChannel *channel,
GPProcRun *proc_run,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GimpWireMessage msg;
1997-11-25 06:05:25 +08:00
msg.type = GP_PROC_RUN;
msg.data = proc_run;
if (! gimp_wire_write_msg (channel, &msg, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
if (! gimp_wire_flush (channel, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
1997-11-25 06:05:25 +08:00
return TRUE;
}
gboolean
1999-03-07 20:56:03 +08:00
gp_proc_return_write (GIOChannel *channel,
GPProcReturn *proc_return,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GimpWireMessage msg;
1997-11-25 06:05:25 +08:00
msg.type = GP_PROC_RETURN;
msg.data = proc_return;
if (! gimp_wire_write_msg (channel, &msg, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
if (! gimp_wire_flush (channel, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
1997-11-25 06:05:25 +08:00
return TRUE;
}
gboolean
1999-03-07 20:56:03 +08:00
gp_temp_proc_run_write (GIOChannel *channel,
GPProcRun *proc_run,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GimpWireMessage msg;
1997-11-25 06:05:25 +08:00
msg.type = GP_TEMP_PROC_RUN;
msg.data = proc_run;
if (! gimp_wire_write_msg (channel, &msg, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
if (! gimp_wire_flush (channel, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
1997-11-25 06:05:25 +08:00
return TRUE;
}
gboolean
1999-03-07 20:56:03 +08:00
gp_temp_proc_return_write (GIOChannel *channel,
GPProcReturn *proc_return,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GimpWireMessage msg;
1997-11-25 06:05:25 +08:00
msg.type = GP_TEMP_PROC_RETURN;
msg.data = proc_return;
if (! gimp_wire_write_msg (channel, &msg, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
if (! gimp_wire_flush (channel, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
1997-11-25 06:05:25 +08:00
return TRUE;
}
gboolean
1999-03-07 20:56:03 +08:00
gp_proc_install_write (GIOChannel *channel,
GPProcInstall *proc_install,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GimpWireMessage msg;
1997-11-25 06:05:25 +08:00
msg.type = GP_PROC_INSTALL;
msg.data = proc_install;
if (! gimp_wire_write_msg (channel, &msg, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
if (! gimp_wire_flush (channel, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
1997-11-25 06:05:25 +08:00
return TRUE;
}
gboolean
1999-03-07 20:56:03 +08:00
gp_proc_uninstall_write (GIOChannel *channel,
GPProcUninstall *proc_uninstall,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GimpWireMessage msg;
1997-11-25 06:05:25 +08:00
msg.type = GP_PROC_UNINSTALL;
msg.data = proc_uninstall;
if (! gimp_wire_write_msg (channel, &msg, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
if (! gimp_wire_flush (channel, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
1997-11-25 06:05:25 +08:00
return TRUE;
}
gboolean
gp_extension_ack_write (GIOChannel *channel,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GimpWireMessage msg;
1997-11-25 06:05:25 +08:00
msg.type = GP_EXTENSION_ACK;
msg.data = NULL;
if (! gimp_wire_write_msg (channel, &msg, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
if (! gimp_wire_flush (channel, user_data))
1997-11-25 06:05:25 +08:00
return FALSE;
1997-11-25 06:05:25 +08:00
return TRUE;
}
gboolean
gp_has_init_write (GIOChannel *channel,
gpointer user_data)
{
GimpWireMessage msg;
msg.type = GP_HAS_INIT;
msg.data = NULL;
if (! gimp_wire_write_msg (channel, &msg, user_data))
return FALSE;
if (! gimp_wire_flush (channel, user_data))
return FALSE;
return TRUE;
}
/* quit */
1997-11-25 06:05:25 +08:00
static void
_gp_quit_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
}
static void
_gp_quit_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
}
static void
_gp_quit_destroy (GimpWireMessage *msg)
1997-11-25 06:05:25 +08:00
{
}
/* config */
1997-11-25 06:05:25 +08:00
static void
_gp_config_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
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;
if (! _gimp_wire_read_int32 (channel,
&config->tile_height, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &config->shm_ID, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int8 (channel,
(guint8 *) &config->check_size, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int8 (channel,
(guint8 *) &config->check_type, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int8 (channel,
(guint8 *) &config->show_help_button, 1,
user_data))
goto cleanup;
if (! _gimp_wire_read_int8 (channel,
(guint8 *) &config->use_cpu_accel, 1,
user_data))
goto cleanup;
if (! _gimp_wire_read_int8 (channel,
(guint8 *) &config->gimp_reserved_5, 1,
user_data))
goto cleanup;
if (! _gimp_wire_read_int8 (channel,
(guint8 *) &config->gimp_reserved_6, 1,
user_data))
goto cleanup;
if (! _gimp_wire_read_int8 (channel,
(guint8 *) &config->gimp_reserved_7, 1,
user_data))
goto cleanup;
if (! _gimp_wire_read_int8 (channel,
(guint8 *) &config->gimp_reserved_8, 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))
gimprc.in replaced "color-cube" by "min-colors". 2000-04-30 Michael Natterer <mitch@gimp.org> * gimprc.in * app/gimprc.[ch]: replaced "color-cube" by "min-colors". * app/app_procs.c: read unitrc/gimprc before displaying the splash. * app/colormaps.c: set min_colors and install_cmap before initializing GdkRGB. * app/gimprc.[ch] * app/gimpunit.c: don't call the splash's progress_update function. * app/plug_in.c: pass min_colors instead of color_cube to plugins. * app/preferences_dialog.c: widget for min_colors. * libgimp/gimp.[ch]: s/color_cube/min_colors/ but left gimp_color_cube() there for source level compatibility. * libgimp/gimpprotocol.[ch]: changed the GPConfig message accordinly and increased the gimp protocol version number because the change breaks binary compatibility. Also actually pass the use_xshm variable over the wire (was only in the GPConfig struct before). Was it the right thing to do to increase the version number?? * libgimp/gimpui.c (gimp_ui_init): use the same code as the app for initializing GdkRGB. Never explicitly activate Gdk's SHM usage (only switch it off). * app/main.c * libgimp/gimp.c: reverted the handling of all signals except SIGCHLD back to plain old signal() because those signals are fatal anyway and sigaction() as used by gimp_signal_*() made debugging (stacktrace) impossible. * plug-ins/AlienMap/AlienMap.c * plug-ins/AlienMap2/AlienMap2.c * plug-ins/FractalExplorer/Dialogs.c * plug-ins/bmp/bmp.c * plug-ins/borderaverage/borderaverage.c * plug-ins/dbbrowser/dbbrowser.c * plug-ins/faxg3/faxg3.c * plug-ins/fits/fits.c * plug-ins/flame/flame.c * plug-ins/fp/fp.c * plug-ins/fp/fp_gtk.c * plug-ins/gdyntext/Makefile.am * plug-ins/gdyntext/gdyntext_ui.c * plug-ins/gfig/gfig.c * plug-ins/gflare/gflare.c * plug-ins/gfli/gfli.c * plug-ins/gimpressionist/gimpressionist.c * plug-ins/helpbrowser/helpbrowser.c * plug-ins/ifscompose/ifscompose.c * plug-ins/imagemap/Makefile.am * plug-ins/imagemap/imap_main.c * plug-ins/maze/maze_face.c * plug-ins/mosaic/mosaic.c * plug-ins/pagecurl/pagecurl.c * plug-ins/print/print.c * plug-ins/rcm/rcm_dialog.c * plug-ins/script-fu/script-fu-console.c * plug-ins/script-fu/script-fu-scripts.c * plug-ins/script-fu/script-fu-server.c * plug-ins/sel2path/Makefile.am * plug-ins/sel2path/sel2path.c * plug-ins/sgi/sgi.c * plug-ins/sinus/sinus.c * plug-ins/struc/struc.c * plug-ins/webbrowser/webbrowser.c * plug-ins/winsnap/winsnap.c * plug-ins/xjt/xjt.c: use gimp_ui_init(). * plug-ins/Lighting/lighting_ui.c * plug-ins/MapObject/mapobject_ui.c: only switch Gdk SHM usage off, never on. Don't use gimp_ui_init() here because of libgck.
2000-05-01 02:17:55 +08:00
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;
1997-11-25 06:05:25 +08:00
if (! _gimp_wire_read_string (channel,
&config->app_name, 1, user_data))
added "wm_name", "wm_class", "display_name" and "monitor_number" to the 2003-11-07 Michael Natterer <mitch@gimp.org> * libgimpbase/gimpprotocol.[ch]: added "wm_name", "wm_class", "display_name" and "monitor_number" to the GPConfig message. Increased protocol version number. * libgimp/gimp.[ch] (gimp_config): read them from the GPConfig message and remember them. Added public accessors for the new config values. * libgimp/gimpui.c (gimp_ui_init): pass wm_name and wm_class to gtk_init() and export the display/screen to use to the environment. * app/core/gimp.[ch]: added vtable entries to get the values from the GUI. * app/gui/gui-vtable.c: implement the vtable entries. * app/plug-in/plug-in-run.c: fill in the GPConfig values using the new Gimp vtable functions. * app/display/gimpdisplayshell-layer-select.c * app/display/gimpdisplayshell.c * app/gui/about-dialog.c * app/gui/channels-commands.c * app/gui/color-notebook.c * app/gui/convert-dialog.c * app/gui/file-dialog-utils.[ch] * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor-commands.c * app/gui/gradients-commands.c * app/gui/grid-dialog.c * app/gui/image-commands.c * app/gui/info-dialog.[ch] * app/gui/info-window.c * app/gui/layers-commands.c * app/gui/module-browser.c * app/gui/offset-dialog.c * app/gui/palette-import-dialog.c * app/gui/qmask-commands.c * app/gui/resize-dialog.c * app/gui/splash.c * app/gui/stroke-dialog.c * app/gui/templates-commands.c * app/gui/tips-dialog.c * app/gui/vectors-commands.c * app/tools/gimpcurvestool.c * app/tools/gimplevelstool.c * app/widgets/gimpdock.c * app/widgets/gimperrorconsole.c * app/widgets/gimptexteditor.c * app/widgets/gimptoolbox.c * app/widgets/gimpviewabledialog.[ch] * libgimpwidgets/gimpfileselection.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpunitmenu.c * plug-ins/helpbrowser/dialog.c * plug-ins/ifscompose/ifscompose.c: replaced all calls to gtk_window_set_wmclass() by gtk_window_set_role() and all "const gchar *wmclass_name" parameters by "const gchar *role". Cleaned up the window role strings.
2003-11-08 01:29:02 +08:00
goto cleanup;
if (! _gimp_wire_read_string (channel,
&config->wm_class, 1, user_data))
added "wm_name", "wm_class", "display_name" and "monitor_number" to the 2003-11-07 Michael Natterer <mitch@gimp.org> * libgimpbase/gimpprotocol.[ch]: added "wm_name", "wm_class", "display_name" and "monitor_number" to the GPConfig message. Increased protocol version number. * libgimp/gimp.[ch] (gimp_config): read them from the GPConfig message and remember them. Added public accessors for the new config values. * libgimp/gimpui.c (gimp_ui_init): pass wm_name and wm_class to gtk_init() and export the display/screen to use to the environment. * app/core/gimp.[ch]: added vtable entries to get the values from the GUI. * app/gui/gui-vtable.c: implement the vtable entries. * app/plug-in/plug-in-run.c: fill in the GPConfig values using the new Gimp vtable functions. * app/display/gimpdisplayshell-layer-select.c * app/display/gimpdisplayshell.c * app/gui/about-dialog.c * app/gui/channels-commands.c * app/gui/color-notebook.c * app/gui/convert-dialog.c * app/gui/file-dialog-utils.[ch] * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor-commands.c * app/gui/gradients-commands.c * app/gui/grid-dialog.c * app/gui/image-commands.c * app/gui/info-dialog.[ch] * app/gui/info-window.c * app/gui/layers-commands.c * app/gui/module-browser.c * app/gui/offset-dialog.c * app/gui/palette-import-dialog.c * app/gui/qmask-commands.c * app/gui/resize-dialog.c * app/gui/splash.c * app/gui/stroke-dialog.c * app/gui/templates-commands.c * app/gui/tips-dialog.c * app/gui/vectors-commands.c * app/tools/gimpcurvestool.c * app/tools/gimplevelstool.c * app/widgets/gimpdock.c * app/widgets/gimperrorconsole.c * app/widgets/gimptexteditor.c * app/widgets/gimptoolbox.c * app/widgets/gimpviewabledialog.[ch] * libgimpwidgets/gimpfileselection.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpunitmenu.c * plug-ins/helpbrowser/dialog.c * plug-ins/ifscompose/ifscompose.c: replaced all calls to gtk_window_set_wmclass() by gtk_window_set_role() and all "const gchar *wmclass_name" parameters by "const gchar *role". Cleaned up the window role strings.
2003-11-08 01:29:02 +08:00
goto cleanup;
if (! _gimp_wire_read_string (channel,
&config->display_name, 1, user_data))
added "wm_name", "wm_class", "display_name" and "monitor_number" to the 2003-11-07 Michael Natterer <mitch@gimp.org> * libgimpbase/gimpprotocol.[ch]: added "wm_name", "wm_class", "display_name" and "monitor_number" to the GPConfig message. Increased protocol version number. * libgimp/gimp.[ch] (gimp_config): read them from the GPConfig message and remember them. Added public accessors for the new config values. * libgimp/gimpui.c (gimp_ui_init): pass wm_name and wm_class to gtk_init() and export the display/screen to use to the environment. * app/core/gimp.[ch]: added vtable entries to get the values from the GUI. * app/gui/gui-vtable.c: implement the vtable entries. * app/plug-in/plug-in-run.c: fill in the GPConfig values using the new Gimp vtable functions. * app/display/gimpdisplayshell-layer-select.c * app/display/gimpdisplayshell.c * app/gui/about-dialog.c * app/gui/channels-commands.c * app/gui/color-notebook.c * app/gui/convert-dialog.c * app/gui/file-dialog-utils.[ch] * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor-commands.c * app/gui/gradients-commands.c * app/gui/grid-dialog.c * app/gui/image-commands.c * app/gui/info-dialog.[ch] * app/gui/info-window.c * app/gui/layers-commands.c * app/gui/module-browser.c * app/gui/offset-dialog.c * app/gui/palette-import-dialog.c * app/gui/qmask-commands.c * app/gui/resize-dialog.c * app/gui/splash.c * app/gui/stroke-dialog.c * app/gui/templates-commands.c * app/gui/tips-dialog.c * app/gui/vectors-commands.c * app/tools/gimpcurvestool.c * app/tools/gimplevelstool.c * app/widgets/gimpdock.c * app/widgets/gimperrorconsole.c * app/widgets/gimptexteditor.c * app/widgets/gimptoolbox.c * app/widgets/gimpviewabledialog.[ch] * libgimpwidgets/gimpfileselection.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpunitmenu.c * plug-ins/helpbrowser/dialog.c * plug-ins/ifscompose/ifscompose.c: replaced all calls to gtk_window_set_wmclass() by gtk_window_set_role() and all "const gchar *wmclass_name" parameters by "const gchar *role". Cleaned up the window role strings.
2003-11-08 01:29:02 +08:00
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &config->monitor_number, 1,
user_data))
added "wm_name", "wm_class", "display_name" and "monitor_number" to the 2003-11-07 Michael Natterer <mitch@gimp.org> * libgimpbase/gimpprotocol.[ch]: added "wm_name", "wm_class", "display_name" and "monitor_number" to the GPConfig message. Increased protocol version number. * libgimp/gimp.[ch] (gimp_config): read them from the GPConfig message and remember them. Added public accessors for the new config values. * libgimp/gimpui.c (gimp_ui_init): pass wm_name and wm_class to gtk_init() and export the display/screen to use to the environment. * app/core/gimp.[ch]: added vtable entries to get the values from the GUI. * app/gui/gui-vtable.c: implement the vtable entries. * app/plug-in/plug-in-run.c: fill in the GPConfig values using the new Gimp vtable functions. * app/display/gimpdisplayshell-layer-select.c * app/display/gimpdisplayshell.c * app/gui/about-dialog.c * app/gui/channels-commands.c * app/gui/color-notebook.c * app/gui/convert-dialog.c * app/gui/file-dialog-utils.[ch] * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor-commands.c * app/gui/gradients-commands.c * app/gui/grid-dialog.c * app/gui/image-commands.c * app/gui/info-dialog.[ch] * app/gui/info-window.c * app/gui/layers-commands.c * app/gui/module-browser.c * app/gui/offset-dialog.c * app/gui/palette-import-dialog.c * app/gui/qmask-commands.c * app/gui/resize-dialog.c * app/gui/splash.c * app/gui/stroke-dialog.c * app/gui/templates-commands.c * app/gui/tips-dialog.c * app/gui/vectors-commands.c * app/tools/gimpcurvestool.c * app/tools/gimplevelstool.c * app/widgets/gimpdock.c * app/widgets/gimperrorconsole.c * app/widgets/gimptexteditor.c * app/widgets/gimptoolbox.c * app/widgets/gimpviewabledialog.[ch] * libgimpwidgets/gimpfileselection.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpunitmenu.c * plug-ins/helpbrowser/dialog.c * plug-ins/ifscompose/ifscompose.c: replaced all calls to gtk_window_set_wmclass() by gtk_window_set_role() and all "const gchar *wmclass_name" parameters by "const gchar *role". Cleaned up the window role strings.
2003-11-08 01:29:02 +08:00
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
&config->timestamp, 1, user_data))
goto cleanup;
added "wm_name", "wm_class", "display_name" and "monitor_number" to the 2003-11-07 Michael Natterer <mitch@gimp.org> * libgimpbase/gimpprotocol.[ch]: added "wm_name", "wm_class", "display_name" and "monitor_number" to the GPConfig message. Increased protocol version number. * libgimp/gimp.[ch] (gimp_config): read them from the GPConfig message and remember them. Added public accessors for the new config values. * libgimp/gimpui.c (gimp_ui_init): pass wm_name and wm_class to gtk_init() and export the display/screen to use to the environment. * app/core/gimp.[ch]: added vtable entries to get the values from the GUI. * app/gui/gui-vtable.c: implement the vtable entries. * app/plug-in/plug-in-run.c: fill in the GPConfig values using the new Gimp vtable functions. * app/display/gimpdisplayshell-layer-select.c * app/display/gimpdisplayshell.c * app/gui/about-dialog.c * app/gui/channels-commands.c * app/gui/color-notebook.c * app/gui/convert-dialog.c * app/gui/file-dialog-utils.[ch] * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor-commands.c * app/gui/gradients-commands.c * app/gui/grid-dialog.c * app/gui/image-commands.c * app/gui/info-dialog.[ch] * app/gui/info-window.c * app/gui/layers-commands.c * app/gui/module-browser.c * app/gui/offset-dialog.c * app/gui/palette-import-dialog.c * app/gui/qmask-commands.c * app/gui/resize-dialog.c * app/gui/splash.c * app/gui/stroke-dialog.c * app/gui/templates-commands.c * app/gui/tips-dialog.c * app/gui/vectors-commands.c * app/tools/gimpcurvestool.c * app/tools/gimplevelstool.c * app/widgets/gimpdock.c * app/widgets/gimperrorconsole.c * app/widgets/gimptexteditor.c * app/widgets/gimptoolbox.c * app/widgets/gimpviewabledialog.[ch] * libgimpwidgets/gimpfileselection.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpunitmenu.c * plug-ins/helpbrowser/dialog.c * plug-ins/ifscompose/ifscompose.c: replaced all calls to gtk_window_set_wmclass() by gtk_window_set_role() and all "const gchar *wmclass_name" parameters by "const gchar *role". Cleaned up the window role strings.
2003-11-08 01:29:02 +08:00
1997-11-25 06:05:25 +08:00
msg->data = config;
return;
cleanup:
g_free (config->app_name);
added "wm_name", "wm_class", "display_name" and "monitor_number" to the 2003-11-07 Michael Natterer <mitch@gimp.org> * libgimpbase/gimpprotocol.[ch]: added "wm_name", "wm_class", "display_name" and "monitor_number" to the GPConfig message. Increased protocol version number. * libgimp/gimp.[ch] (gimp_config): read them from the GPConfig message and remember them. Added public accessors for the new config values. * libgimp/gimpui.c (gimp_ui_init): pass wm_name and wm_class to gtk_init() and export the display/screen to use to the environment. * app/core/gimp.[ch]: added vtable entries to get the values from the GUI. * app/gui/gui-vtable.c: implement the vtable entries. * app/plug-in/plug-in-run.c: fill in the GPConfig values using the new Gimp vtable functions. * app/display/gimpdisplayshell-layer-select.c * app/display/gimpdisplayshell.c * app/gui/about-dialog.c * app/gui/channels-commands.c * app/gui/color-notebook.c * app/gui/convert-dialog.c * app/gui/file-dialog-utils.[ch] * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor-commands.c * app/gui/gradients-commands.c * app/gui/grid-dialog.c * app/gui/image-commands.c * app/gui/info-dialog.[ch] * app/gui/info-window.c * app/gui/layers-commands.c * app/gui/module-browser.c * app/gui/offset-dialog.c * app/gui/palette-import-dialog.c * app/gui/qmask-commands.c * app/gui/resize-dialog.c * app/gui/splash.c * app/gui/stroke-dialog.c * app/gui/templates-commands.c * app/gui/tips-dialog.c * app/gui/vectors-commands.c * app/tools/gimpcurvestool.c * app/tools/gimplevelstool.c * app/widgets/gimpdock.c * app/widgets/gimperrorconsole.c * app/widgets/gimptexteditor.c * app/widgets/gimptoolbox.c * app/widgets/gimpviewabledialog.[ch] * libgimpwidgets/gimpfileselection.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpunitmenu.c * plug-ins/helpbrowser/dialog.c * plug-ins/ifscompose/ifscompose.c: replaced all calls to gtk_window_set_wmclass() by gtk_window_set_role() and all "const gchar *wmclass_name" parameters by "const gchar *role". Cleaned up the window role strings.
2003-11-08 01:29:02 +08:00
g_free (config->wm_class);
g_free (config->display_name);
g_slice_free (GPConfig, config);
1997-11-25 06:05:25 +08:00
}
static void
_gp_config_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GPConfig *config = msg->data;
1997-11-25 06:05:25 +08:00
if (! _gimp_wire_write_int32 (channel,
&config->version, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
&config->tile_width, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
&config->tile_height, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &config->shm_ID, 1,
user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) &config->check_size, 1,
user_data))
return;
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) &config->check_type, 1,
user_data))
return;
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) &config->show_help_button, 1,
user_data))
return;
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) &config->use_cpu_accel, 1,
user_data))
return;
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) &config->gimp_reserved_5, 1,
user_data))
return;
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) &config->gimp_reserved_6, 1,
user_data))
return;
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) &config->gimp_reserved_7, 1,
user_data))
return;
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) &config->gimp_reserved_8, 1,
user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) &config->install_cmap, 1,
user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) &config->show_tooltips, 1,
user_data))
gimprc.in replaced "color-cube" by "min-colors". 2000-04-30 Michael Natterer <mitch@gimp.org> * gimprc.in * app/gimprc.[ch]: replaced "color-cube" by "min-colors". * app/app_procs.c: read unitrc/gimprc before displaying the splash. * app/colormaps.c: set min_colors and install_cmap before initializing GdkRGB. * app/gimprc.[ch] * app/gimpunit.c: don't call the splash's progress_update function. * app/plug_in.c: pass min_colors instead of color_cube to plugins. * app/preferences_dialog.c: widget for min_colors. * libgimp/gimp.[ch]: s/color_cube/min_colors/ but left gimp_color_cube() there for source level compatibility. * libgimp/gimpprotocol.[ch]: changed the GPConfig message accordinly and increased the gimp protocol version number because the change breaks binary compatibility. Also actually pass the use_xshm variable over the wire (was only in the GPConfig struct before). Was it the right thing to do to increase the version number?? * libgimp/gimpui.c (gimp_ui_init): use the same code as the app for initializing GdkRGB. Never explicitly activate Gdk's SHM usage (only switch it off). * app/main.c * libgimp/gimp.c: reverted the handling of all signals except SIGCHLD back to plain old signal() because those signals are fatal anyway and sigaction() as used by gimp_signal_*() made debugging (stacktrace) impossible. * plug-ins/AlienMap/AlienMap.c * plug-ins/AlienMap2/AlienMap2.c * plug-ins/FractalExplorer/Dialogs.c * plug-ins/bmp/bmp.c * plug-ins/borderaverage/borderaverage.c * plug-ins/dbbrowser/dbbrowser.c * plug-ins/faxg3/faxg3.c * plug-ins/fits/fits.c * plug-ins/flame/flame.c * plug-ins/fp/fp.c * plug-ins/fp/fp_gtk.c * plug-ins/gdyntext/Makefile.am * plug-ins/gdyntext/gdyntext_ui.c * plug-ins/gfig/gfig.c * plug-ins/gflare/gflare.c * plug-ins/gfli/gfli.c * plug-ins/gimpressionist/gimpressionist.c * plug-ins/helpbrowser/helpbrowser.c * plug-ins/ifscompose/ifscompose.c * plug-ins/imagemap/Makefile.am * plug-ins/imagemap/imap_main.c * plug-ins/maze/maze_face.c * plug-ins/mosaic/mosaic.c * plug-ins/pagecurl/pagecurl.c * plug-ins/print/print.c * plug-ins/rcm/rcm_dialog.c * plug-ins/script-fu/script-fu-console.c * plug-ins/script-fu/script-fu-scripts.c * plug-ins/script-fu/script-fu-server.c * plug-ins/sel2path/Makefile.am * plug-ins/sel2path/sel2path.c * plug-ins/sgi/sgi.c * plug-ins/sinus/sinus.c * plug-ins/struc/struc.c * plug-ins/webbrowser/webbrowser.c * plug-ins/winsnap/winsnap.c * plug-ins/xjt/xjt.c: use gimp_ui_init(). * plug-ins/Lighting/lighting_ui.c * plug-ins/MapObject/mapobject_ui.c: only switch Gdk SHM usage off, never on. Don't use gimp_ui_init() here because of libgck.
2000-05-01 02:17:55 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &config->min_colors, 1,
user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &config->gdisp_ID, 1,
user_data))
return;
if (! _gimp_wire_write_string (channel,
&config->app_name, 1, user_data))
added "wm_name", "wm_class", "display_name" and "monitor_number" to the 2003-11-07 Michael Natterer <mitch@gimp.org> * libgimpbase/gimpprotocol.[ch]: added "wm_name", "wm_class", "display_name" and "monitor_number" to the GPConfig message. Increased protocol version number. * libgimp/gimp.[ch] (gimp_config): read them from the GPConfig message and remember them. Added public accessors for the new config values. * libgimp/gimpui.c (gimp_ui_init): pass wm_name and wm_class to gtk_init() and export the display/screen to use to the environment. * app/core/gimp.[ch]: added vtable entries to get the values from the GUI. * app/gui/gui-vtable.c: implement the vtable entries. * app/plug-in/plug-in-run.c: fill in the GPConfig values using the new Gimp vtable functions. * app/display/gimpdisplayshell-layer-select.c * app/display/gimpdisplayshell.c * app/gui/about-dialog.c * app/gui/channels-commands.c * app/gui/color-notebook.c * app/gui/convert-dialog.c * app/gui/file-dialog-utils.[ch] * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor-commands.c * app/gui/gradients-commands.c * app/gui/grid-dialog.c * app/gui/image-commands.c * app/gui/info-dialog.[ch] * app/gui/info-window.c * app/gui/layers-commands.c * app/gui/module-browser.c * app/gui/offset-dialog.c * app/gui/palette-import-dialog.c * app/gui/qmask-commands.c * app/gui/resize-dialog.c * app/gui/splash.c * app/gui/stroke-dialog.c * app/gui/templates-commands.c * app/gui/tips-dialog.c * app/gui/vectors-commands.c * app/tools/gimpcurvestool.c * app/tools/gimplevelstool.c * app/widgets/gimpdock.c * app/widgets/gimperrorconsole.c * app/widgets/gimptexteditor.c * app/widgets/gimptoolbox.c * app/widgets/gimpviewabledialog.[ch] * libgimpwidgets/gimpfileselection.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpunitmenu.c * plug-ins/helpbrowser/dialog.c * plug-ins/ifscompose/ifscompose.c: replaced all calls to gtk_window_set_wmclass() by gtk_window_set_role() and all "const gchar *wmclass_name" parameters by "const gchar *role". Cleaned up the window role strings.
2003-11-08 01:29:02 +08:00
return;
if (! _gimp_wire_write_string (channel,
&config->wm_class, 1, user_data))
added "wm_name", "wm_class", "display_name" and "monitor_number" to the 2003-11-07 Michael Natterer <mitch@gimp.org> * libgimpbase/gimpprotocol.[ch]: added "wm_name", "wm_class", "display_name" and "monitor_number" to the GPConfig message. Increased protocol version number. * libgimp/gimp.[ch] (gimp_config): read them from the GPConfig message and remember them. Added public accessors for the new config values. * libgimp/gimpui.c (gimp_ui_init): pass wm_name and wm_class to gtk_init() and export the display/screen to use to the environment. * app/core/gimp.[ch]: added vtable entries to get the values from the GUI. * app/gui/gui-vtable.c: implement the vtable entries. * app/plug-in/plug-in-run.c: fill in the GPConfig values using the new Gimp vtable functions. * app/display/gimpdisplayshell-layer-select.c * app/display/gimpdisplayshell.c * app/gui/about-dialog.c * app/gui/channels-commands.c * app/gui/color-notebook.c * app/gui/convert-dialog.c * app/gui/file-dialog-utils.[ch] * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor-commands.c * app/gui/gradients-commands.c * app/gui/grid-dialog.c * app/gui/image-commands.c * app/gui/info-dialog.[ch] * app/gui/info-window.c * app/gui/layers-commands.c * app/gui/module-browser.c * app/gui/offset-dialog.c * app/gui/palette-import-dialog.c * app/gui/qmask-commands.c * app/gui/resize-dialog.c * app/gui/splash.c * app/gui/stroke-dialog.c * app/gui/templates-commands.c * app/gui/tips-dialog.c * app/gui/vectors-commands.c * app/tools/gimpcurvestool.c * app/tools/gimplevelstool.c * app/widgets/gimpdock.c * app/widgets/gimperrorconsole.c * app/widgets/gimptexteditor.c * app/widgets/gimptoolbox.c * app/widgets/gimpviewabledialog.[ch] * libgimpwidgets/gimpfileselection.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpunitmenu.c * plug-ins/helpbrowser/dialog.c * plug-ins/ifscompose/ifscompose.c: replaced all calls to gtk_window_set_wmclass() by gtk_window_set_role() and all "const gchar *wmclass_name" parameters by "const gchar *role". Cleaned up the window role strings.
2003-11-08 01:29:02 +08:00
return;
if (! _gimp_wire_write_string (channel,
&config->display_name, 1, user_data))
added "wm_name", "wm_class", "display_name" and "monitor_number" to the 2003-11-07 Michael Natterer <mitch@gimp.org> * libgimpbase/gimpprotocol.[ch]: added "wm_name", "wm_class", "display_name" and "monitor_number" to the GPConfig message. Increased protocol version number. * libgimp/gimp.[ch] (gimp_config): read them from the GPConfig message and remember them. Added public accessors for the new config values. * libgimp/gimpui.c (gimp_ui_init): pass wm_name and wm_class to gtk_init() and export the display/screen to use to the environment. * app/core/gimp.[ch]: added vtable entries to get the values from the GUI. * app/gui/gui-vtable.c: implement the vtable entries. * app/plug-in/plug-in-run.c: fill in the GPConfig values using the new Gimp vtable functions. * app/display/gimpdisplayshell-layer-select.c * app/display/gimpdisplayshell.c * app/gui/about-dialog.c * app/gui/channels-commands.c * app/gui/color-notebook.c * app/gui/convert-dialog.c * app/gui/file-dialog-utils.[ch] * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor-commands.c * app/gui/gradients-commands.c * app/gui/grid-dialog.c * app/gui/image-commands.c * app/gui/info-dialog.[ch] * app/gui/info-window.c * app/gui/layers-commands.c * app/gui/module-browser.c * app/gui/offset-dialog.c * app/gui/palette-import-dialog.c * app/gui/qmask-commands.c * app/gui/resize-dialog.c * app/gui/splash.c * app/gui/stroke-dialog.c * app/gui/templates-commands.c * app/gui/tips-dialog.c * app/gui/vectors-commands.c * app/tools/gimpcurvestool.c * app/tools/gimplevelstool.c * app/widgets/gimpdock.c * app/widgets/gimperrorconsole.c * app/widgets/gimptexteditor.c * app/widgets/gimptoolbox.c * app/widgets/gimpviewabledialog.[ch] * libgimpwidgets/gimpfileselection.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpunitmenu.c * plug-ins/helpbrowser/dialog.c * plug-ins/ifscompose/ifscompose.c: replaced all calls to gtk_window_set_wmclass() by gtk_window_set_role() and all "const gchar *wmclass_name" parameters by "const gchar *role". Cleaned up the window role strings.
2003-11-08 01:29:02 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &config->monitor_number, 1,
user_data))
added "wm_name", "wm_class", "display_name" and "monitor_number" to the 2003-11-07 Michael Natterer <mitch@gimp.org> * libgimpbase/gimpprotocol.[ch]: added "wm_name", "wm_class", "display_name" and "monitor_number" to the GPConfig message. Increased protocol version number. * libgimp/gimp.[ch] (gimp_config): read them from the GPConfig message and remember them. Added public accessors for the new config values. * libgimp/gimpui.c (gimp_ui_init): pass wm_name and wm_class to gtk_init() and export the display/screen to use to the environment. * app/core/gimp.[ch]: added vtable entries to get the values from the GUI. * app/gui/gui-vtable.c: implement the vtable entries. * app/plug-in/plug-in-run.c: fill in the GPConfig values using the new Gimp vtable functions. * app/display/gimpdisplayshell-layer-select.c * app/display/gimpdisplayshell.c * app/gui/about-dialog.c * app/gui/channels-commands.c * app/gui/color-notebook.c * app/gui/convert-dialog.c * app/gui/file-dialog-utils.[ch] * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor-commands.c * app/gui/gradients-commands.c * app/gui/grid-dialog.c * app/gui/image-commands.c * app/gui/info-dialog.[ch] * app/gui/info-window.c * app/gui/layers-commands.c * app/gui/module-browser.c * app/gui/offset-dialog.c * app/gui/palette-import-dialog.c * app/gui/qmask-commands.c * app/gui/resize-dialog.c * app/gui/splash.c * app/gui/stroke-dialog.c * app/gui/templates-commands.c * app/gui/tips-dialog.c * app/gui/vectors-commands.c * app/tools/gimpcurvestool.c * app/tools/gimplevelstool.c * app/widgets/gimpdock.c * app/widgets/gimperrorconsole.c * app/widgets/gimptexteditor.c * app/widgets/gimptoolbox.c * app/widgets/gimpviewabledialog.[ch] * libgimpwidgets/gimpfileselection.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpunitmenu.c * plug-ins/helpbrowser/dialog.c * plug-ins/ifscompose/ifscompose.c: replaced all calls to gtk_window_set_wmclass() by gtk_window_set_role() and all "const gchar *wmclass_name" parameters by "const gchar *role". Cleaned up the window role strings.
2003-11-08 01:29:02 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &config->timestamp, 1,
user_data))
return;
1997-11-25 06:05:25 +08:00
}
static void
_gp_config_destroy (GimpWireMessage *msg)
1997-11-25 06:05:25 +08:00
{
GPConfig *config = msg->data;
added "wm_name", "wm_class", "display_name" and "monitor_number" to the 2003-11-07 Michael Natterer <mitch@gimp.org> * libgimpbase/gimpprotocol.[ch]: added "wm_name", "wm_class", "display_name" and "monitor_number" to the GPConfig message. Increased protocol version number. * libgimp/gimp.[ch] (gimp_config): read them from the GPConfig message and remember them. Added public accessors for the new config values. * libgimp/gimpui.c (gimp_ui_init): pass wm_name and wm_class to gtk_init() and export the display/screen to use to the environment. * app/core/gimp.[ch]: added vtable entries to get the values from the GUI. * app/gui/gui-vtable.c: implement the vtable entries. * app/plug-in/plug-in-run.c: fill in the GPConfig values using the new Gimp vtable functions. * app/display/gimpdisplayshell-layer-select.c * app/display/gimpdisplayshell.c * app/gui/about-dialog.c * app/gui/channels-commands.c * app/gui/color-notebook.c * app/gui/convert-dialog.c * app/gui/file-dialog-utils.[ch] * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor-commands.c * app/gui/gradients-commands.c * app/gui/grid-dialog.c * app/gui/image-commands.c * app/gui/info-dialog.[ch] * app/gui/info-window.c * app/gui/layers-commands.c * app/gui/module-browser.c * app/gui/offset-dialog.c * app/gui/palette-import-dialog.c * app/gui/qmask-commands.c * app/gui/resize-dialog.c * app/gui/splash.c * app/gui/stroke-dialog.c * app/gui/templates-commands.c * app/gui/tips-dialog.c * app/gui/vectors-commands.c * app/tools/gimpcurvestool.c * app/tools/gimplevelstool.c * app/widgets/gimpdock.c * app/widgets/gimperrorconsole.c * app/widgets/gimptexteditor.c * app/widgets/gimptoolbox.c * app/widgets/gimpviewabledialog.[ch] * libgimpwidgets/gimpfileselection.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpunitmenu.c * plug-ins/helpbrowser/dialog.c * plug-ins/ifscompose/ifscompose.c: replaced all calls to gtk_window_set_wmclass() by gtk_window_set_role() and all "const gchar *wmclass_name" parameters by "const gchar *role". Cleaned up the window role strings.
2003-11-08 01:29:02 +08:00
if (config)
{
g_free (config->app_name);
g_free (config->wm_class);
g_free (config->display_name);
g_slice_free (GPConfig, config);
}
1997-11-25 06:05:25 +08:00
}
/* tile_req */
1997-11-25 06:05:25 +08:00
static void
_gp_tile_req_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GPTileReq *tile_req = g_slice_new0 (GPTileReq);
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &tile_req->drawable_ID, 1,
user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
&tile_req->tile_num, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
&tile_req->shadow, 1, user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
msg->data = tile_req;
return;
cleanup:
g_slice_free (GPTileReq, tile_req);
msg->data = NULL;
1997-11-25 06:05:25 +08:00
}
static void
_gp_tile_req_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GPTileReq *tile_req = msg->data;
1997-11-25 06:05:25 +08:00
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &tile_req->drawable_ID, 1,
user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
&tile_req->tile_num, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
&tile_req->shadow, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
}
static void
_gp_tile_req_destroy (GimpWireMessage *msg)
1997-11-25 06:05:25 +08:00
{
GPTileReq *tile_req = msg->data;
if (tile_req)
g_slice_free (GPTileReq, msg->data);
1997-11-25 06:05:25 +08:00
}
/* tile_ack */
1997-11-25 06:05:25 +08:00
static void
_gp_tile_ack_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
}
static void
_gp_tile_ack_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
}
static void
_gp_tile_ack_destroy (GimpWireMessage *msg)
1997-11-25 06:05:25 +08:00
{
}
/* tile_data */
1997-11-25 06:05:25 +08:00
static void
_gp_tile_data_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GPTileData *tile_data = g_slice_new0 (GPTileData);
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &tile_data->drawable_ID, 1,
user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
&tile_data->tile_num, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
&tile_data->shadow, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
&tile_data->bpp, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
&tile_data->width, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
&tile_data->height, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
&tile_data->use_shm, 1, user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
if (!tile_data->use_shm)
{
guint length = tile_data->width * tile_data->height * tile_data->bpp;
1997-11-25 06:05:25 +08:00
tile_data->data = g_new (guchar, length);
if (! _gimp_wire_read_int8 (channel,
(guint8 *) tile_data->data, length,
user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
}
msg->data = tile_data;
return;
cleanup:
g_free (tile_data->data);
g_slice_free (GPTileData, tile_data);
msg->data = NULL;
1997-11-25 06:05:25 +08:00
}
static void
_gp_tile_data_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GPTileData *tile_data = msg->data;
1997-11-25 06:05:25 +08:00
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &tile_data->drawable_ID, 1,
user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
&tile_data->tile_num, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
&tile_data->shadow, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
&tile_data->bpp, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
&tile_data->width, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
&tile_data->height, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
&tile_data->use_shm, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (!tile_data->use_shm)
{
guint length = tile_data->width * tile_data->height * tile_data->bpp;
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) tile_data->data, length,
user_data))
return;
1997-11-25 06:05:25 +08:00
}
}
static void
_gp_tile_data_destroy (GimpWireMessage *msg)
1997-11-25 06:05:25 +08:00
{
GPTileData *tile_data = msg->data;
if (tile_data)
{
g_free (tile_data->data);
g_slice_free (GPTileData, tile_data);
}
1997-11-25 06:05:25 +08:00
}
/* proc_run */
1997-11-25 06:05:25 +08:00
static void
_gp_proc_run_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GPProcRun *proc_run = g_slice_new0 (GPProcRun);
1997-11-25 06:05:25 +08:00
if (! _gimp_wire_read_string (channel, &proc_run->name, 1, user_data))
goto cleanup;
_gp_params_read (channel,
&proc_run->params, (guint *) &proc_run->nparams,
user_data);
1997-11-25 06:05:25 +08:00
msg->data = proc_run;
return;
cleanup:
g_slice_free (GPProcRun, proc_run);
msg->data = NULL;
1997-11-25 06:05:25 +08:00
}
static void
_gp_proc_run_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GPProcRun *proc_run = msg->data;
1997-11-25 06:05:25 +08:00
if (! _gimp_wire_write_string (channel, &proc_run->name, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
_gp_params_write (channel, proc_run->params, proc_run->nparams, user_data);
1997-11-25 06:05:25 +08:00
}
static void
_gp_proc_run_destroy (GimpWireMessage *msg)
1997-11-25 06:05:25 +08:00
{
GPProcRun *proc_run = msg->data;
1997-11-25 06:05:25 +08:00
if (proc_run)
{
gp_params_destroy (proc_run->params, proc_run->nparams);
g_free (proc_run->name);
g_slice_free (GPProcRun, proc_run);
}
1997-11-25 06:05:25 +08:00
}
/* proc_return */
1997-11-25 06:05:25 +08:00
static void
_gp_proc_return_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GPProcReturn *proc_return = g_slice_new0 (GPProcReturn);
if (! _gimp_wire_read_string (channel, &proc_return->name, 1, user_data))
goto cleanup;
_gp_params_read (channel,
&proc_return->params, (guint *) &proc_return->nparams,
user_data);
1997-11-25 06:05:25 +08:00
msg->data = proc_return;
return;
cleanup:
g_slice_free (GPProcReturn, proc_return);
msg->data = NULL;
1997-11-25 06:05:25 +08:00
}
static void
_gp_proc_return_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GPProcReturn *proc_return = msg->data;
1997-11-25 06:05:25 +08:00
if (! _gimp_wire_write_string (channel, &proc_return->name, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
_gp_params_write (channel,
proc_return->params, proc_return->nparams, user_data);
1997-11-25 06:05:25 +08:00
}
static void
_gp_proc_return_destroy (GimpWireMessage *msg)
1997-11-25 06:05:25 +08:00
{
GPProcReturn *proc_return = msg->data;
1997-11-25 06:05:25 +08:00
if (proc_return)
{
gp_params_destroy (proc_return->params, proc_return->nparams);
g_free (proc_return->name);
g_slice_free (GPProcReturn, proc_return);
}
1997-11-25 06:05:25 +08:00
}
/* temp_proc_run */
1997-11-25 06:05:25 +08:00
static void
_gp_temp_proc_run_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
_gp_proc_run_read (channel, msg, user_data);
1997-11-25 06:05:25 +08:00
}
static void
_gp_temp_proc_run_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
_gp_proc_run_write (channel, msg, user_data);
1997-11-25 06:05:25 +08:00
}
static void
_gp_temp_proc_run_destroy (GimpWireMessage *msg)
1997-11-25 06:05:25 +08:00
{
_gp_proc_run_destroy (msg);
}
/* temp_proc_return */
1997-11-25 06:05:25 +08:00
static void
_gp_temp_proc_return_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
_gp_proc_return_read (channel, msg, user_data);
1997-11-25 06:05:25 +08:00
}
static void
_gp_temp_proc_return_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
_gp_proc_return_write (channel, msg, user_data);
1997-11-25 06:05:25 +08:00
}
static void
_gp_temp_proc_return_destroy (GimpWireMessage *msg)
1997-11-25 06:05:25 +08:00
{
_gp_proc_return_destroy (msg);
}
/* proc_install */
1997-11-25 06:05:25 +08:00
static void
_gp_proc_install_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GPProcInstall *proc_install = g_slice_new0 (GPProcInstall);
gint i;
1997-11-25 06:05:25 +08:00
if (! _gimp_wire_read_string (channel,
&proc_install->name, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_string (channel,
&proc_install->blurb, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_string (channel,
&proc_install->help, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_string (channel,
&proc_install->author, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_string (channel,
&proc_install->copyright, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_string (channel,
&proc_install->date, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_string (channel,
&proc_install->menu_path, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_string (channel,
&proc_install->image_types, 1, user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
if (! _gimp_wire_read_int32 (channel,
&proc_install->type, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
&proc_install->nparams, 1, user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
&proc_install->nreturn_vals, 1, user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
proc_install->params = g_new0 (GPParamDef, proc_install->nparams);
1997-11-25 06:05:25 +08:00
for (i = 0; i < proc_install->nparams; i++)
{
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &proc_install->params[i].type, 1,
user_data))
goto cleanup;
if (! _gimp_wire_read_string (channel,
&proc_install->params[i].name, 1,
user_data))
goto cleanup;
if (! _gimp_wire_read_string (channel,
&proc_install->params[i].description, 1,
user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
}
proc_install->return_vals = g_new0 (GPParamDef, proc_install->nreturn_vals);
1997-11-25 06:05:25 +08:00
for (i = 0; i < proc_install->nreturn_vals; i++)
{
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &proc_install->return_vals[i].type, 1,
user_data))
goto cleanup;
if (! _gimp_wire_read_string (channel,
&proc_install->return_vals[i].name, 1,
user_data))
goto cleanup;
if (! _gimp_wire_read_string (channel,
&proc_install->return_vals[i].description, 1,
user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
}
msg->data = proc_install;
return;
cleanup:
g_free (proc_install->name);
g_free (proc_install->blurb);
g_free (proc_install->help);
g_free (proc_install->author);
g_free (proc_install->copyright);
g_free (proc_install->date);
g_free (proc_install->menu_path);
g_free (proc_install->image_types);
if (proc_install->params)
{
for (i = 0; i < proc_install->nparams; i++)
{
if (!proc_install->params[i].name)
break;
g_free (proc_install->params[i].name);
g_free (proc_install->params[i].description);
}
g_free (proc_install->params);
}
if (proc_install->return_vals)
{
for (i = 0; i < proc_install->nreturn_vals; i++)
{
if (!proc_install->return_vals[i].name)
break;
g_free (proc_install->return_vals[i].name);
g_free (proc_install->return_vals[i].description);
}
g_free (proc_install->return_vals);
}
g_slice_free (GPProcInstall, proc_install);
msg->data = NULL;
1997-11-25 06:05:25 +08:00
}
static void
_gp_proc_install_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GPProcInstall *proc_install = msg->data;
gint i;
1997-11-25 06:05:25 +08:00
if (! _gimp_wire_write_string (channel,
&proc_install->name, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_string (channel,
&proc_install->blurb, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_string (channel,
&proc_install->help, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_string (channel,
&proc_install->author, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_string (channel,
&proc_install->copyright, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_string (channel,
&proc_install->date, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_string (channel,
&proc_install->menu_path, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_string (channel,
&proc_install->image_types, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
&proc_install->type, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
&proc_install->nparams, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (! _gimp_wire_write_int32 (channel,
&proc_install->nreturn_vals, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
for (i = 0; i < proc_install->nparams; i++)
{
if (! _gimp_wire_write_int32 (channel,
(guint32 *) &proc_install->params[i].type, 1,
user_data))
return;
if (! _gimp_wire_write_string (channel,
&proc_install->params[i].name, 1,
user_data))
return;
if (! _gimp_wire_write_string (channel,
&proc_install->params[i].description, 1,
user_data))
return;
1997-11-25 06:05:25 +08:00
}
for (i = 0; i < proc_install->nreturn_vals; i++)
{
if (! _gimp_wire_write_int32 (channel,
(guint32 *) &proc_install->return_vals[i].type, 1,
user_data))
return;
if (! _gimp_wire_write_string (channel,
&proc_install->return_vals[i].name, 1,
user_data))
return;
if (! _gimp_wire_write_string (channel,
&proc_install->return_vals[i].description, 1,
user_data))
return;
1997-11-25 06:05:25 +08:00
}
}
static void
_gp_proc_install_destroy (GimpWireMessage *msg)
1997-11-25 06:05:25 +08:00
{
GPProcInstall *proc_install = msg->data;
1997-11-25 06:05:25 +08:00
if (proc_install)
1997-11-25 06:05:25 +08:00
{
gint i;
1997-11-25 06:05:25 +08:00
g_free (proc_install->name);
g_free (proc_install->blurb);
g_free (proc_install->help);
g_free (proc_install->author);
g_free (proc_install->copyright);
g_free (proc_install->date);
g_free (proc_install->menu_path);
g_free (proc_install->image_types);
1997-11-25 06:05:25 +08:00
for (i = 0; i < proc_install->nparams; i++)
{
g_free (proc_install->params[i].name);
g_free (proc_install->params[i].description);
}
for (i = 0; i < proc_install->nreturn_vals; i++)
{
g_free (proc_install->return_vals[i].name);
g_free (proc_install->return_vals[i].description);
}
g_free (proc_install->params);
g_free (proc_install->return_vals);
g_slice_free (GPProcInstall, proc_install);
}
1997-11-25 06:05:25 +08:00
}
/* proc_uninstall */
1997-11-25 06:05:25 +08:00
static void
_gp_proc_uninstall_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GPProcUninstall *proc_uninstall = g_slice_new0 (GPProcUninstall);
1997-11-25 06:05:25 +08:00
if (! _gimp_wire_read_string (channel, &proc_uninstall->name, 1, user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
msg->data = proc_uninstall;
return;
cleanup:
g_slice_free (GPProcUninstall, proc_uninstall);
1997-11-25 06:05:25 +08:00
}
static void
_gp_proc_uninstall_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
GPProcUninstall *proc_uninstall = msg->data;
1997-11-25 06:05:25 +08:00
if (! _gimp_wire_write_string (channel, &proc_uninstall->name, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
}
static void
_gp_proc_uninstall_destroy (GimpWireMessage *msg)
1997-11-25 06:05:25 +08:00
{
GPProcUninstall *proc_uninstall = msg->data;
1997-11-25 06:05:25 +08:00
if (proc_uninstall)
{
g_free (proc_uninstall->name);
g_slice_free (GPProcUninstall, proc_uninstall);
}
1997-11-25 06:05:25 +08:00
}
/* extension_ack */
1997-11-25 06:05:25 +08:00
static void
_gp_extension_ack_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
}
static void
_gp_extension_ack_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
{
}
static void
_gp_extension_ack_destroy (GimpWireMessage *msg)
{
}
/* params */
static void
_gp_params_read (GIOChannel *channel,
GPParam **params,
guint *nparams,
gpointer user_data)
{
gint i, j;
1997-11-25 06:05:25 +08:00
if (! _gimp_wire_read_int32 (channel, (guint32 *) nparams, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
if (*nparams == 0)
{
*params = NULL;
return;
}
added "wm_name", "wm_class", "display_name" and "monitor_number" to the 2003-11-07 Michael Natterer <mitch@gimp.org> * libgimpbase/gimpprotocol.[ch]: added "wm_name", "wm_class", "display_name" and "monitor_number" to the GPConfig message. Increased protocol version number. * libgimp/gimp.[ch] (gimp_config): read them from the GPConfig message and remember them. Added public accessors for the new config values. * libgimp/gimpui.c (gimp_ui_init): pass wm_name and wm_class to gtk_init() and export the display/screen to use to the environment. * app/core/gimp.[ch]: added vtable entries to get the values from the GUI. * app/gui/gui-vtable.c: implement the vtable entries. * app/plug-in/plug-in-run.c: fill in the GPConfig values using the new Gimp vtable functions. * app/display/gimpdisplayshell-layer-select.c * app/display/gimpdisplayshell.c * app/gui/about-dialog.c * app/gui/channels-commands.c * app/gui/color-notebook.c * app/gui/convert-dialog.c * app/gui/file-dialog-utils.[ch] * app/gui/file-new-dialog.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor-commands.c * app/gui/gradients-commands.c * app/gui/grid-dialog.c * app/gui/image-commands.c * app/gui/info-dialog.[ch] * app/gui/info-window.c * app/gui/layers-commands.c * app/gui/module-browser.c * app/gui/offset-dialog.c * app/gui/palette-import-dialog.c * app/gui/qmask-commands.c * app/gui/resize-dialog.c * app/gui/splash.c * app/gui/stroke-dialog.c * app/gui/templates-commands.c * app/gui/tips-dialog.c * app/gui/vectors-commands.c * app/tools/gimpcurvestool.c * app/tools/gimplevelstool.c * app/widgets/gimpdock.c * app/widgets/gimperrorconsole.c * app/widgets/gimptexteditor.c * app/widgets/gimptoolbox.c * app/widgets/gimpviewabledialog.[ch] * libgimpwidgets/gimpfileselection.c * libgimpwidgets/gimpquerybox.c * libgimpwidgets/gimpunitmenu.c * plug-ins/helpbrowser/dialog.c * plug-ins/ifscompose/ifscompose.c: replaced all calls to gtk_window_set_wmclass() by gtk_window_set_role() and all "const gchar *wmclass_name" parameters by "const gchar *role". Cleaned up the window role strings.
2003-11-08 01:29:02 +08:00
*params = g_new0 (GPParam, *nparams);
1997-11-25 06:05:25 +08:00
for (i = 0; i < *nparams; i++)
{
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &(*params)[i].type, 1,
user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
switch ((*params)[i].type)
{
case GIMP_PDB_INT32:
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &(*params)[i].data.d_int32, 1,
user_data))
goto cleanup;
break;
case GIMP_PDB_INT16:
if (! _gimp_wire_read_int16 (channel,
(guint16 *) &(*params)[i].data.d_int16, 1,
user_data))
goto cleanup;
break;
case GIMP_PDB_INT8:
if (! _gimp_wire_read_int8 (channel,
&(*params)[i].data.d_int8, 1,
user_data))
goto cleanup;
break;
case GIMP_PDB_FLOAT:
if (! _gimp_wire_read_double (channel,
&(*params)[i].data.d_float, 1,
user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_STRING:
if (! _gimp_wire_read_string (channel,
&(*params)[i].data.d_string, 1,
user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_INT32ARRAY:
(*params)[i-1].data.d_int32 = MAX (0, (*params)[i-1].data.d_int32);
(*params)[i].data.d_int32array = g_new (gint32,
(*params)[i-1].data.d_int32);
if (! _gimp_wire_read_int32 (channel,
(guint32 *) (*params)[i].data.d_int32array,
(*params)[i-1].data.d_int32,
user_data))
{
g_free ((*params)[i].data.d_int32array);
goto cleanup;
}
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_INT16ARRAY:
(*params)[i-1].data.d_int32 = MAX (0, (*params)[i-1].data.d_int32);
(*params)[i].data.d_int16array = g_new (gint16,
(*params)[i-1].data.d_int32);
if (! _gimp_wire_read_int16 (channel,
(guint16 *) (*params)[i].data.d_int16array,
(*params)[i-1].data.d_int32,
user_data))
{
g_free ((*params)[i].data.d_int16array);
goto cleanup;
}
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_INT8ARRAY:
(*params)[i-1].data.d_int32 = MAX (0, (*params)[i-1].data.d_int32);
(*params)[i].data.d_int8array = g_new (guint8,
(*params)[i-1].data.d_int32);
if (! _gimp_wire_read_int8 (channel,
(*params)[i].data.d_int8array,
(*params)[i-1].data.d_int32,
user_data))
{
g_free ((*params)[i].data.d_int8array);
goto cleanup;
}
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_FLOATARRAY:
(*params)[i-1].data.d_int32 = MAX (0, (*params)[i-1].data.d_int32);
(*params)[i].data.d_floatarray = g_new (gdouble,
(*params)[i-1].data.d_int32);
if (! _gimp_wire_read_double (channel,
(*params)[i].data.d_floatarray,
(*params)[i-1].data.d_int32,
user_data))
{
g_free ((*params)[i].data.d_floatarray);
goto cleanup;
}
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_STRINGARRAY:
(*params)[i-1].data.d_int32 = MAX (0, (*params)[i-1].data.d_int32);
(*params)[i].data.d_stringarray = g_new0 (gchar *,
(*params)[i-1].data.d_int32);
if (! _gimp_wire_read_string (channel,
(*params)[i].data.d_stringarray,
(*params)[i-1].data.d_int32,
user_data))
{
for (j = 0; j < (*params)[i-1].data.d_int32; j++)
g_free (((*params)[i].data.d_stringarray)[j]);
g_free ((*params)[i].data.d_stringarray);
goto cleanup;
}
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_COLOR:
if (! _gimp_wire_read_color (channel,
&(*params)[i].data.d_color, 1,
user_data))
goto cleanup;
break;
case GIMP_PDB_REGION:
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_DISPLAY:
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &(*params)[i].data.d_display, 1,
user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_IMAGE:
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &(*params)[i].data.d_image, 1,
user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_LAYER:
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &(*params)[i].data.d_layer, 1,
user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_CHANNEL:
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &(*params)[i].data.d_channel, 1,
user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_DRAWABLE:
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &(*params)[i].data.d_drawable, 1,
user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_SELECTION:
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &(*params)[i].data.d_selection, 1,
user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_COLORARRAY:
(*params)[i].data.d_colorarray = g_new (GimpRGB,
(*params)[i-1].data.d_int32);
if (! _gimp_wire_read_color (channel,
(*params)[i].data.d_colorarray,
(*params)[i-1].data.d_int32,
user_data))
{
g_free ((*params)[i].data.d_colorarray);
goto cleanup;
}
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_VECTORS:
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &(*params)[i].data.d_vectors, 1,
user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_PARASITE:
if (! _gimp_wire_read_string (channel,
&(*params)[i].data.d_parasite.name, 1,
user_data))
goto cleanup;
if ((*params)[i].data.d_parasite.name == NULL)
{
/* we have a null parasite */
(*params)[i].data.d_parasite.data = NULL;
break;
}
if (! _gimp_wire_read_int32 (channel,
&((*params)[i].data.d_parasite.flags), 1,
user_data))
goto cleanup;
if (! _gimp_wire_read_int32 (channel,
&((*params)[i].data.d_parasite.size), 1,
user_data))
goto cleanup;
if ((*params)[i].data.d_parasite.size > 0)
{
(*params)[i].data.d_parasite.data =
g_malloc ((*params)[i].data.d_parasite.size);
if (! _gimp_wire_read_int8 (channel,
(*params)[i].data.d_parasite.data,
(*params)[i].data.d_parasite.size,
user_data))
{
g_free ((*params)[i].data.d_parasite.data);
goto cleanup;
}
}
else
(*params)[i].data.d_parasite.data = NULL;
break;
case GIMP_PDB_STATUS:
if (! _gimp_wire_read_int32 (channel,
(guint32 *) &(*params)[i].data.d_status, 1,
user_data))
goto cleanup;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_END:
break;
}
1997-11-25 06:05:25 +08:00
}
return;
cleanup:
*nparams = 0;
g_free (*params);
*params = NULL;
1997-11-25 06:05:25 +08:00
}
static void
_gp_params_write (GIOChannel *channel,
GPParam *params,
gint nparams,
gpointer user_data)
1997-11-25 06:05:25 +08:00
{
gint i;
1997-11-25 06:05:25 +08:00
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &nparams, 1, user_data))
1997-11-25 06:05:25 +08:00
return;
for (i = 0; i < nparams; i++)
{
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &params[i].type, 1,
user_data))
return;
1997-11-25 06:05:25 +08:00
switch (params[i].type)
{
case GIMP_PDB_INT32:
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &params[i].data.d_int32, 1,
user_data))
return;
break;
case GIMP_PDB_INT16:
if (! _gimp_wire_write_int16 (channel,
(const guint16 *) &params[i].data.d_int16, 1,
user_data))
return;
break;
case GIMP_PDB_INT8:
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) &params[i].data.d_int8, 1,
user_data))
return;
break;
case GIMP_PDB_FLOAT:
if (! _gimp_wire_write_double (channel,
&params[i].data.d_float, 1,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_STRING:
if (! _gimp_wire_write_string (channel,
&params[i].data.d_string, 1,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_INT32ARRAY:
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) params[i].data.d_int32array,
params[i-1].data.d_int32,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_INT16ARRAY:
if (! _gimp_wire_write_int16 (channel,
(const guint16 *) params[i].data.d_int16array,
params[i-1].data.d_int32,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_INT8ARRAY:
if (! _gimp_wire_write_int8 (channel,
(const guint8 *) params[i].data.d_int8array,
params[i-1].data.d_int32,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_FLOATARRAY:
if (! _gimp_wire_write_double (channel,
params[i].data.d_floatarray,
params[i-1].data.d_int32,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_STRINGARRAY:
if (! _gimp_wire_write_string (channel,
params[i].data.d_stringarray,
params[i-1].data.d_int32,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_COLOR:
if (! _gimp_wire_write_color (channel,
&params[i].data.d_color, 1, user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_REGION:
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_DISPLAY:
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &params[i].data.d_display, 1,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_IMAGE:
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &params[i].data.d_image, 1,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_LAYER:
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &params[i].data.d_layer, 1,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_CHANNEL:
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &params[i].data.d_channel, 1,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_DRAWABLE:
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &params[i].data.d_drawable, 1,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_SELECTION:
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &params[i].data.d_selection, 1,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_COLORARRAY:
if (! _gimp_wire_write_color (channel,
params[i].data.d_colorarray,
params[i-1].data.d_int32,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_VECTORS:
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &params[i].data.d_vectors, 1,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_PARASITE:
{
GimpParasite *p = &params[i].data.d_parasite;
if (p->name == NULL)
{
/* write a null string to signal a null parasite */
_gimp_wire_write_string (channel, &p->name, 1, user_data);
break;
}
if (! _gimp_wire_write_string (channel, &p->name, 1, user_data))
return;
if (! _gimp_wire_write_int32 (channel, &p->flags, 1, user_data))
return;
if (! _gimp_wire_write_int32 (channel, &p->size, 1, user_data))
return;
if (p->size > 0)
{
if (! _gimp_wire_write_int8 (channel,
p->data, p->size, user_data))
return;
}
}
break;
case GIMP_PDB_STATUS:
if (! _gimp_wire_write_int32 (channel,
(const guint32 *) &params[i].data.d_status, 1,
user_data))
return;
1997-11-25 06:05:25 +08:00
break;
case GIMP_PDB_END:
break;
}
1997-11-25 06:05:25 +08:00
}
}
void
gp_params_destroy (GPParam *params,
gint nparams)
1997-11-25 06:05:25 +08:00
{
gint i;
1997-11-25 06:05:25 +08:00
for (i = 0; i < nparams; i++)
{
switch (params[i].type)
{
case GIMP_PDB_INT32:
case GIMP_PDB_INT16:
case GIMP_PDB_INT8:
case GIMP_PDB_FLOAT:
case GIMP_PDB_COLOR:
case GIMP_PDB_REGION:
case GIMP_PDB_DISPLAY:
case GIMP_PDB_IMAGE:
case GIMP_PDB_LAYER:
case GIMP_PDB_CHANNEL:
case GIMP_PDB_DRAWABLE:
case GIMP_PDB_SELECTION:
case GIMP_PDB_VECTORS:
case GIMP_PDB_STATUS:
break;
case GIMP_PDB_STRING:
g_free (params[i].data.d_string);
break;
case GIMP_PDB_INT32ARRAY:
g_free (params[i].data.d_int32array);
break;
case GIMP_PDB_INT16ARRAY:
g_free (params[i].data.d_int16array);
break;
case GIMP_PDB_INT8ARRAY:
g_free (params[i].data.d_int8array);
break;
case GIMP_PDB_FLOATARRAY:
g_free (params[i].data.d_floatarray);
break;
case GIMP_PDB_STRINGARRAY:
if ((i > 0) && (params[i-1].type == GIMP_PDB_INT32))
{
gint count = params[i-1].data.d_int32;
gint j;
for (j = 0; j < count; j++)
g_free (params[i].data.d_stringarray[j]);
g_free (params[i].data.d_stringarray);
}
break;
case GIMP_PDB_COLORARRAY:
g_free (params[i].data.d_colorarray);
break;
case GIMP_PDB_PARASITE:
if (params[i].data.d_parasite.name)
g_free (params[i].data.d_parasite.name);
if (params[i].data.d_parasite.data)
g_free (params[i].data.d_parasite.data);
break;
case GIMP_PDB_END:
break;
}
1997-11-25 06:05:25 +08:00
}
1997-11-25 06:05:25 +08:00
g_free (params);
}
/* has_init */
static void
_gp_has_init_read (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
{
}
static void
_gp_has_init_write (GIOChannel *channel,
GimpWireMessage *msg,
gpointer user_data)
{
}
static void
_gp_has_init_destroy (GimpWireMessage *msg)
{
}