* image.c (imagemagick_compute_animated_image): Implement animated images.
[bpt/emacs.git] / src / ChangeLog
index fce45d3..5131f66 100644 (file)
@@ -1,3 +1,403 @@
+2013-08-15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c (imagemagick_compute_animated_image): Implement animated
+       images (bug#14700).
+
+2013-08-15  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * lisp.h (FOR_EACH_ALIST_VALUE): New macro
+       to do `for' loops over alist values.
+       * buffer.h (FOR_EACH_BUFFER):
+       * process.c (FOR_EACH_PROCESS): Use it.
+       (handle_child_signal, status_notify, Fget_buffer_process)
+       (kill_buffer_processes): Use FOR_EACH_PROCESS.
+
+2013-08-15  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * term.c (get_named_tty, create_tty_output, tty_free_frame_resources)
+       (tty_free_frame_resources, delete_tty): Prefer eassert to emacs_abort.
+       * image.c (make_image_cache): For struct image_cache, prefer xmalloc
+       to xzalloc and so avoid redundant call to memset.
+       * xterm.c (x_term_init): Avoid unnecessary initializations of dpyinfo
+       members because it is allocated with xzalloc and so already zeroed.
+
+2013-08-14  Ken Brown  <kbrown@cornell.edu>
+
+       * gmalloc.c (memalign) [CYGWIN]: Rename to emacs_memalign
+       (Bug#15094).
+
+2013-08-14  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Utility function and macro to copy Lisp string to C string.
+       * lisp.h (xlispstrdupa): New macro.
+       (xlispstrdup): New prototype.
+       * alloc.c (xlispstrdup): New function.
+       * callint.c (Fcall_interactively):
+       * fileio.c (Ffile_name_directory, Fexpand_file_name)
+       (Fsubstitute_in_file_name):
+       * frame.c (Fmake_terminal_frame): Use xlispstrdupa.
+       * image.c (x_create_bitmap_from_file):
+       * w32term.c (w32_term_init):
+       * xterm.c (x_term_init): Use xlispstrdup.
+
+2013-08-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c (imagemagick_load_image): Make animated pictures work.
+       There's still some problems with background color settings, though
+       (bug#14700).
+
+       * decompress.c (unwind_decompress): Always restore point.
+
+2013-08-14  Xue Fuqiao  <xfq.free@gmail.com>
+
+       * marker.c (set_marker): Reformat documentation.
+
+2013-08-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * xdisp.c (cursor_type_changed): Now static.
+
+       * image.c (imagemagick_filename_hint): New arg HINT_BUFFER.
+       Use changed.  This avoids the need to call xmalloc and for the
+       caller to call xfree, and avoids memory leaks in some situations.
+
+2013-08-14  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * xdisp.c (adjust_window_ends): Move duplicated code to new function.
+       (try_window, try_window_reusing_current_matrix, try_window_id): Use it.
+       (redisplay_window): If window_end_valid is cleared due to non-zero
+       windows_or_buffers_changed, clear current_matrix_up_to_date_p and
+       so do not call to try_cursor_movement for that window.
+
+2013-08-14  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.h (struct window): Convert window_end_pos and
+       window_end_vpos from Lisp_Object to ptrdiff_t and int, respectively.
+       (wset_window_end_pos, wset_window_end_vpos): Remove.
+       * dispnew.c (adjust_glyph_matrix):
+       * window.c (Fwindow_end, replace_window, set_window_buffer)
+       (make_window):
+       * xdisp.c (check_window_end, move_it_to, redisplay_internal)
+       (set_vertical_scroll_bar, redisplay_window, try_window)
+       (try_window_reusing_current_matrix, find_first_unchanged_at_end_row)
+       (try_window_id, decode_mode_spec, mouse_face_from_buffer_pos)
+       (note_mouse_highlight): Adjust users.
+       (try_cursor_movement): Likewise.  Convert old precondition to eassert.
+       Add comment.
+
+2013-08-14  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Fix --enable-gcc-warnings errors introduced in 2013-08-13 commit.
+       * image.c (imagemagick_filename_hint): Use `const char *' and
+       prefer SSDATA to SDATA to avoid warnings.
+
+2013-08-14  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Cleanup window fringes, margins and scroll bars adjustments.
+       * window.c (set_window_fringes, set_window_margins)
+       (set_window_scroll_bars, apply_window_adjustment): New functions.
+       (set_window_buffer, Fset_window_margins, Fset_window_fringes)
+       (Fset_window_scroll_bars): Use them.
+
+2013-08-14  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.h (struct window): Convert scroll_bar_width
+       from Lisp_Object to integer.  Adjust comment.
+       (WINDOW_CONFIG_SCROLL_BAR_WIDTH, WINDOW_CONFIG_SCROLL_BAR_COLS):
+       Adjust users.
+       * window.c (wset_scroll_bar_width): Remove.
+       (make_window): Initialize scroll_bar_width.
+       (Fsplit_window_internal): Use direct assignment.
+       (Fset_window_configuration, save_window_save):
+       Convert Lisp_Object to integer and back where appropriate.
+       (Fset_window_scroll_bars): Adjust user.  Return t if any scroll
+       bar was actually changed, and mention this in docstring.
+
+2013-08-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * decompress.c: Minor simplifications.
+       (Fzlib_decompress_region): Don't bother verifying
+       that avail_out <= UINT_MAX, as that was confusing.
+       Mention the restriction in a comment instead.
+       Prefer 'int' to 'ptrdiff_t' when 'int' is wide enough.
+
+2013-08-13  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsmenu.m (x_activate_menubar): Check for OSX >= 10.5
+       (trackingNotification:): Call ns_check_menu_open only for OSX >= 10.5.
+
+2013-08-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c (imagemagick_filename_hint): Check for errors in the
+       alist structure.
+
+2013-08-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * window.c (Fwindow_margins): Return nil when there's no marginal
+       area, as per the documented API.
+
+       * w32term.c (x_scroll_bar_create): Use ALLOCATE_PSEUDOVECTOR, not
+       Fmake_vector, as scroll bar's struct members are not all Lisp
+       objects now.  This avoids crashes in GC.
+
+       * w32term.h (struct scroll_bar): Convert fringe_extended_p to a
+       bool, so its address could be taken.
+
+2013-08-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c (imagemagick_filename_hint): New function to possibly
+       apply `image-content-type-suffixes'.
+       (imagemagick_load_image): Use it.
+
+2013-08-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * decompress.c (Fzlib_decompress_region) [WINDOWSNT]: Return Qnil
+       if loading zlib failed.
+
+2013-08-13  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (ns_set_vertical_scroll_bar): Fix breakage intruduced by
+       2013-08-13 checkin below.  Change bool to BOOL, rule is:
+       All Obj-C code uses BOOL, except for interfaces callable from C.
+
+       * nsterm.h: Fix CGFloat for OSX 10.4 (Bug#15086).
+
+2013-08-13  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.h (WINDOW_FRINGE_EXTENDED_P): New macro.
+       * nsterm.m (ns_set_vertical_scroll_bar): Use it.  Use convenient
+       bool instead of BOOL.
+       * w32term.h (struct scroll_bar): Convert fringe_extended_p
+       from Lisp_Object to bitfield.  Adjust comment.
+       * w32term.c (x_scroll_bar_create): Adjust user.
+       Use WINDOW_FRINGE_EXTENDED_P and bool for boolean.
+       * xterm.c (XTset_vertical_scroll_bar): Likewise.
+       Use bool for boolean.
+       * xterm.h (struct scroll_bar): Prefer commonly used `unsigned'
+       to `unsigned int' when defining a bitfield.
+
+2013-08-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * decompress.c (Fzlib_decompress_region): Try to clarify 'avail_out'.
+
+2013-08-13  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.h (struct window): Convert left_margin_cols and
+       right_margin_cols from Lisp_Objects to integers.  Adjust comment.
+       (WINDOW_LEFT_MARGIN_COLS, WINDOW_RIGHT_MARGIN_COLS)
+       (WINDOW_LEFT_MARGIN_WIDTH, WINDOW_RIGHT_MARGIN_WIDTH):
+       Adjust users.
+       * dispnew.c (margin_glyphs_to_reserve): Convert 3rd arg to int.
+       Adjust comment.
+       (showing_window_margins_p, update_window_line, update_frame_1):
+       * fringe.c (draw_fringe_bitmap_1):
+       * xdisp.c (window_box_width): Adjust users.
+       * window.c (wset_left_margin_cols, wset_right_margin_cols): Remove.
+       (adjust_window_margins, set_window_buffer, Fsplit_window_internal):
+       Use direct assignment.
+       (Fset_window_configuration, save_window_save, Fwindow_margins):
+       Convert Lisp_Object to integer and back where appropriate.
+       (Fset_window_margins): Adjust user.  Return t if any margin
+       was actually changed, and mention this in docstring.
+
+2013-08-13  Xue Fuqiao  <xfq.free@gmail.com>
+
+       * syntax.c (forward_word):
+       * cmds.c (forward_char, backward_char): Mention the optional argument.
+
+2013-08-13  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.h (struct window): Convert left_fringe_width
+       and right_fringe_width from Lisp_Objects to integers.
+       Adjust comment.
+       (WINDOW_FRINGE_COLS, WINDOW_LEFT_FRINGE_WIDTH)
+       (WINDOW_RIGHT_FRINGE_WIDTH): Adjust users.
+       * window.c (wset_left_fringe_width, wset_right_fringe_width):
+       Remove.
+       (make_window): Initialize new integer fields to -1.
+       (Fsplit_window_internal): Use direct assignment.
+       (Fset_window_configuration, save_window_save): Convert
+       Lisp_Object to integer and back where appropriate.
+       (Fset_window_fringes): Adjust user.  Return t if any fringe
+       was actually changed, and mention this in docstring.
+
+2013-08-13  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * keyboard.c (Fdiscard_input): Do not increment update_mode_lines.
+       * nsfns.m (x_set_cursor_type):
+       * w32fns.c (x_set_cursor_type):
+       * xfns.m (x_set_cursor_type): Do not set cursor_type_changed here...
+       * xdisp.c (set_frame_cursor_types): ...but in common code.
+
+2013-08-13  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * font.c (clear_font_cache): New function, stripped from...
+       (Fclear_font_cache): ...here, which now uses the function
+       above.  Adjust comment.
+       * font.h (clear_font_cache): Add prototype.
+       * xfaces.c (clear_face_cache): Use clear_font_cache.
+
+2013-08-13  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.c (Fset_window_start): Compare `w', not `window' because
+       `w' might not be equal to `window' after call to decode_live_window.
+
+2013-08-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * process.c (deactivate_process): Reset fds to -1 (Bug#15035).
+       This fixes a problem introduced by the Bug#15035 patch
+       when using GPG.  Reported by Herbert J. Skuhra.
+
+2013-08-12  Eli Zaretskii  <eliz@gnu.org>
+
+       * decompress.c <zlib_initialized> [WINDOWSNT]: New static variable.
+       (Fzlib_decompress_region) [WINDOWSNT]: Call init_zlib_functions if
+       not yet initialized.
+
+2013-08-12  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * decompress.c (Fzlib_decompress_region): Support zlib
+       decompression, too, and rename.
+
+2013-08-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Minor zlib configuration tweaks.
+       * decompress.c (fn_inflateInit2) [!WINDOWSNT]:
+       Don't assume presence of fn_inflateInit2_ zlib internal function.
+
+2013-08-12  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * decompress.c (Fzlib_decompress_gzipped_region): Rename to
+       include the zlib prefix.
+
+2013-08-12  Eli Zaretskii  <eliz@gnu.org>
+
+       * decompress.c [WINDOWSNT]: Include windows.h and w32.h.
+       (DEF_ZLIB_FN, LOAD_ZLIB_FN) [WINDOWSNT]: New macros.  Use them to
+       define static variables that are pointers to zlib functions to be
+       dynamically loaded.
+       (init_zlib_functions) [WINDOWSNT]: New function.
+       (fn_inflateInit2_, fn_inflate, fn_inflateEnd, fn_inflateInit2):
+       New macros.
+       (Fdecompress_gzipped_region, unwind_decompress): Use the fn_*
+       macros instead of invoking the zlib functions directly.
+       (syms_of_decompress): DEFSYM Qzlib_dll.  Staticpro
+       Szlib_available_p.
+
+2013-08-12  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Avoid looping over all frame windows to freeze and unfreeze.
+       * window.h (struct window): Drop frozen_window_start_p.
+       (freeze_window_starts): Drop prototype.
+       * frame.h (struct frame): New frozen_window_starts flag.
+       (FRAME_WINDOWS_FROZEN): New macro.
+       * window.c (freeze_window_start, freeze_window_starts):
+       Remove.
+       (select_window, replace_window): Adjust users.
+       * xdisp.c (resize_mini_window): Use FRAME_WINDOWS_FROZEN.
+       (window_frozen_p): New function.
+       (redisplay_window): Use it.
+
+2013-08-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix some fd issues when running subprocesses (Bug#15035).
+       Fix bugs that can leak files or file descriptors on errors.
+       Don't unlink open temp files, as that's hard for users to diagnose
+       when things go awry (e.g., temp disk exhausted).
+       Don't bother to lock temp files.  Check for invalid recursion.
+       * callproc.c (synch_process_fd): Remove.  All uses removed.
+       (synch_process_tempfile): New var or macro.
+       (CALLPROC_STDOUT, CALLPROC_STDERR, CALLPROC_PIPEREAD, CALLPROC_FDS):
+       New constants.
+       (record_kill_process): New arg, the temp name.  All callers changed.
+       (delete_temp_file): Now just a simple wrapper around unlink.
+       (call_process_kill): New arg, the call_process_fd array.
+       Close them all.  Clear synch_process_pid.  Remove the temp file,
+       or arrange for it to be removed.
+       (call_process_cleanup) [MSDOS]: Arg no longer contains file name;
+       that's been moved to synch_process_tempfile.  Caller changed.
+       Do not remove the tempfile; that's now call_process_kill's
+       responsibility.
+       (call_process_cleanup) [!MSDOS]: Do not record unwind-protect for
+       call_process_kill; the caller now does that.
+       (call_process_cleanup): Do not close the process fd; that's now
+       call_process_kill's responsibility.
+       (Fcall_process): Implement via new function call_process, which
+       has most of the old body of Fcall_process, but with a different API.
+       (call_process): New function that does not open or close filefd if
+       it is nonnegative.  Record which fds need to be closed, and let
+       call_process_kill close (and remove the tempfile, on MSDOS) on error.
+       Signal an error if invoked recursively (could be done via a hook).
+       Simplify creation of the tempfile in the MSDOS case.
+       Don't create the output file until after checking for the executable.
+       Report any failure to open /dev/null.
+       Don't open /dev/null for writing twice; once is enough.
+       Don't create pipe if all output is being discarded or sent to file.
+       Don't worry about setting up the coding system or reading from the
+       pipe if all output is being discarded.
+       Hoist fd_error local into top level, to lessen block nesting.
+       Don't record deleted pid here; now done by Fcall_process_region.
+       (Fcall_process) [MSDOS]: Report mktemp failure immediately,
+       and note its success in synch_process_tempfile.
+       Do not leak resources when child_setup fails.
+       (Fcall_process) [!MSDOS && !WINDOWSNT]: Remove duplicate assignment
+       to child_errno.  Remove unnecessary close of fd0; it's close-on-exec.
+       (create_temp_file): Now returns open fd, with an additional
+       Lisp_Object * argument to return the name.  All callers changed.
+       Do not close the file; rewind it instead, and leave it open for
+       the caller.  Do not lock the temp file.  Unwind-protect the file
+       and the file-descriptor.
+       (Fcall_process_region): If the input is /dev/null, unwind-protect it.
+       If an asynchrounous process, record it here, not in call_process.
+       (syms_of_callproc) [MSDOS]: Initialize synch_process_tempfile.
+       * eval.c (set_unwind_protect): New function.
+       * fileio.c (write_region): New function, generalized from the
+       old Fwrite_region.  Do not lock temp files.
+       (Fwrite_region): Use it.
+       * lisp.h (set_unwind_protect, write_region): New decls.
+       * process.c: Include <verify.h>.
+       (make_process): Mark fds as initially closed.
+       (deleted_pid_list): Now a list of pid-filename pairs.
+       All uses changed.
+       (close_process_fd): New function.
+       (SUBPROCESS_STDIN, WRITE_TO_SUBPROCESS, READ_FROM_SUBPROCESS)
+       (SUBPROCESS_STDOUT, READ_FROM_EXEC_MONITOR, EXEC_MONITOR_OUTPUT):
+       New constants.  Verify that their number matches PROCESS_OPEN_FDS.
+       (create_process, create_pty, Fmake_serial_process)
+       (server_accept_connection): Record which fds need to be closed,
+       and let deactivate_process close them.
+       (Fmake_network_process): Do not discard the unwind-protect
+       until it's safe to do so.
+       (deactivate_process): Close the fds opened by create_process etc.
+       (Fprocess_send_eof): Adjust to new way of recording open fds.
+       Report an error if /dev/null can't be opened, instead of aborting.
+       * process.h (PROCESS_OPEN_FDS): New constant.
+       (struct Lisp_Process): New member open_fds.
+       (record_kill_process, record_deleted_pid): Adjust signatures.
+       (record_deleted_pid): Move decl here ...
+       * syswait.h (record_deleted_pid): ... from here.
+
+2013-08-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * decompress.c: Fix bugs with large buffers and weird inputs.
+       Tune a bit.  Reindent as per usual Emacs style.
+       (BUFFER_SIZE): Remove.
+       (Fdecompress_gzipped_region): Do not mishandle input buffers with
+       more than UINT_MAX bytes.  Decompress into the gap instead of into
+       an auto buffer, as this should avoid copying.  Return nil if
+       'inflate' returns Z_NEED_DICT, as we have no dictionary.  Do not
+       set immediate_quit; we shouldn't trust zlib code that much.
+
+2013-08-11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * decompress.c (Fdecompress_gzipped_region): Respect all zlib
+       errors, and really move the gap to where we want it.
+
+       * lisp.h: Include decompress.c support.
+
+       * emacs.c (main): Include decompress.c support.
+
+       * Makefile.in: Include -lz if present.
+
 2013-08-11  Jan Djärv  <jan.h.d@swipnet.se>
 
        * nsmenu.m (ns_update_menubar): Call fillWithWidgetValue:frame: