2000-05-14 Michael Natterer <mitch@gimp.org>
After a weekend of extensive mail exchange with the signal crew,
we finally found that #2742 is not a Gimp bug but a real OSF/1
bug. OSF/1 does _not_ reliably restart read() and write() calls
on certain slow devices (pipes).
* libgimp/gimpwire.[ch]: guard all read/write calls on the wire
with loops checking for EINTR. This has to be done "manually"
as glib's GIOChannels return G_IO_ERROR_UNKNOWN on the occurence
of EINTR (which is a bug, too).
s/int/gboolean and minor cleanups while I was on it (not changing
any logic).
This fix depends on the current (broken) state of the GIOChannel
implementation and is scheduled for removal as soon as glib
behaves nicely here.
Left SA_RESTART there for the moment in app/main.c. See it as
defensive programming or just my fear to change two #2742-related
places at the same time. We might choose to remove SA_RESTART
later. Many thanks again to Austin, Garry and Tim.
2000-05-12 Sven Neumann <sven@gimp.org>
* gimpdrawable.c: enabled the (commented out) signal
"invalidate_preview".
* app/layers_dialog.c: connect to the "invalidate_preview"
signal to catch changes that need to be shown in the layer
previews. Synthetize an expose event when a layer changes.
Expose events are optimzed away by GTK+ if the widget is not
visible. Therefore, previews not visible in the layers_dialog
are not redrawn when they invalidate. Later the preview gets
validated by the image_preview in lc_dialog but is never
propagated to the layer_pixmap. We work around this by using an
additional flag "layer_pixmap_valid" so that the pixmap gets
updated once the preview scrolls into sight.
Fixes bugs #10549, #10300 and #8787.
* app/channel.[ch]
* app/layer.[ch]: code review and indentation
--Sven
2000-05-12 Michael Natterer <mitch@gimp.org>
* libgimp/gimp.c (gimp_plugin_io_error_handler): fixed a
compiler warning about a missing return.
Slightly changed the messages that gimp<->plugin use different
protocol versions and a s/sprintf/g_snprintf/.
2000-05-10 Michael Natterer <mitch@gimp.org>
Another try to get the signal/dead child recovery stuff right.
Could the brave signal crew (TM) (Austin, Garry, Raphael, Tim)
please do bad tests to the new code? I removed all strange
constants (SA_NODEFER etc.) and used only glib and POSIX stuff.
* app/main.c
* libgimp/gimp.c:
- Call gimp_signal_private() with no flags to enforce a proper
sigaction() behaviour (block signals while handler is active).
- Removed the reentrancy guards from the handlers.
- Renamed the handlers.
- Ignore SIGPIPE in the app and in plugins.
- Re-introduced the SIGCHLD handler because it should work
now. Also added a SIGCHLD handler to libgimp/gimp.c.
* app/errors.c
* libgimp/gimp.c: in the signal handler, unblock all signals
with sigprocmask() before calling g_on_error_query() because
gdb otherwise inherits the blocked signals and does nothing.
Wrapped the statements with "if (TRUE) { }" blocks so it's
easy to make the stack trace a command line option.
* app/plug_in.c
* libgimp/gimp.c: listen for G_IO_ERR and G_IO_HUP on the read
channels. In the app, pop up an error message and clean up the
plugin. In plugins, clean up and exit.
* libgimp/gimpwire.c: removed the "plug-in chrashed?" message
and print the program's name with all error messages.
* plug-ins/helpbrowser/helpbrowser.c: typo.
* app/image_map.[ch]: new function image_map_clear that removes
the preview without freeing the image_map.
* app/brightness_contrast.c
* app/color_balance.c
* app/curves.c
* app/hue_saturation.c
* app/levels.c
* app/posterize.c
* app/threshold.c: Add a call to image_map_clear in the
preview toggle button callback. This makes the preview toggle
button behave as expected.
* app/histogram_tool: remove an unnecessary include.
2000-05-08 Michael Natterer <mitch@gimp.org>
* app/errors.c (gimp_fatal_error): oops, forgot a debugging
g_print().
* app/gdisplay.c (gdisplay_set_menu_sensitivity): there _can_ be
an active drawable even if there is no layer. Also reordered
the rest if the checks.
2000-05-08 Michael Natterer <mitch@gimp.org>
* app/fileops.c
* app/gdisplay.c: return silently from save/save_as and grey out
the menu entries if there is no active drawable. Fixes#10239.
2000-05-08 Michael Natterer <mitch@gimp.org>
* app/docindex.c (open_idea_window): put the ops_buttons box
into the action_area. Makes the dialog smaller.
* app/menus.c: in Image/Filters move all entries that are not
submenus to the top of the menu.
* app/plug_in.c: order all plugin menu-entries alphabetically
(in the current locale) before sending them to menus.c.
* plug-ins/script-fu/script-fu-scripts.c: order all script-fu
menu-entries alphabetically (in the current locale) before
registering them.
* plug-ins/script-fu/script-fu.c: minor cleanups
* plug-ins/bmp/bmpread.c
* plug-ins/bmp/bmpwrite.c
* plug-ins/xjt/xjt.c: strings used with g_message do not need
a trailing newline
--Sven
2000-05-07 Michael Natterer <mitch@gimp.org>
* app/app_procs.c
* app/docindex.[ch]: named all public functions document_index_*().
Don't loop/segfault when opening an old "ideas" file but silently
skip the first line.
* app/fileops.[ch]: do some file access sanity checks before
actually calling the load/save proc. Show the full file name
in all error messages. Use a query_boolean_box for the overwrite
warning. Made file_save() static.
Also copied some Win32 #define's from libgimp/gimpenv.c for the
file access stuff. Tor, could you have a look at them please?
* gimprc.in
* gimprc.win32
* app/gimprc.c: set default image size back to 256x256, default
to local paint options and info-window-follows-mouse.
* app/brightness_contrast.c
* app/docindex.c
* app/hue_saturation.c: picky changes on some labels.
* app/tips_dialog.c: applied (sort of) gimp-quinet-20000504-0,
which replaces the message "Show tip next time" in the
Tip Of The Day dialog with "Show tip next time GIMP starts".
--Sven