2007-02-26  Behdad Esfahbod  <behdad@gnome.org>

	Released vte-0.15.4.

	* NEWS: Updated.

	* configure.in: Bumped version to 0.15.4.

	* src/Makefile.am: Bumped libtool version to 11:1:2.

2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 410986 – Fails to build with -z defs

	The forgotten half - the python module also fails to link.

	* acinclude.m4:
	* python/Makefile.am:
		Add PYTHON_LIBS pointing to the customary location and
		remember to include them when compiling vtemodule.so.

2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 412361 – Yet another mouse selection regression...
	Part 2.

	* src/vte.c: (vte_terminal_queue_adjustment_value_changed),
	(_vte_terminal_adjust_adjustments_full),
	(vte_terminal_scroll_pages), (vte_terminal_autoscroll),
	(vte_terminal_size_allocate), (vte_terminal_scroll):
		We implicitly used a bit of sanity checking when setting the
		adjustment value. Ensure the value really is within the
		adjustment range before updating scroll_delta.

2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 412361 – Yet another mouse selection regression...
	Part 1.

	* src/vte.c: (vte_terminal_draw_rows):
		Restore drawing of the selection below the text.

2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_class_init), (time_process_incoming),
	(process_timeout), (update_repeat_timeout), (update_timeout):
		Update max number of processable bytes each time we call
		vte_terminal_process_incoming().

2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_emit_adjustment_changed),
	(_vte_terminal_adjust_adjustments_full):
		Refactor the common code.

2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>

	Push a couple of NULL checks to the callers so to be able to move them
	outside of the inner-most loops.

	* src/vte.c: (_vte_row_data_find_charcell), (_vte_invalidate_cell),
	(_vte_terminal_adjust_adjustments),
	(vte_terminal_get_text_range_maybe_wrapped), (find_start_column),
	(find_end_column), (vte_terminal_draw_rows):

2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>

	Some applications, such as cat, dump as much data to the terminal as
	possible. In these scenarios it is likely that we will read data from
	the child much faster than we can process it and the refresh will
	stutter.

	The ideal solution would be to speed up the data processing so that
	this overrun was impossible. However, the approach taken here is to
	estimate how much data we can actually process in our time slice and
	to stop reading once we have sufficient data.

	* src/vte-private.h:
	* src/vte.c: (_vte_invalidate_all),
	(vte_terminal_emit_contents_changed),
	(vte_terminal_match_contents_clear),
	(vte_terminal_match_contents_refresh),
	(vte_terminal_emit_adjustment_changed),
	(_vte_terminal_adjust_adjustments), (vte_terminal_scroll_pages),
	(vte_terminal_catch_child_exited), (vte_terminal_eof),
	(vte_terminal_process_incoming), (vte_terminal_io_read),
	(vte_terminal_handle_scroll), (vte_terminal_init),
	(vte_terminal_size_allocate), (need_processing), (process_timeout),
	(update_repeat_timeout), (update_timeout):
	* src/vteseq.c: (vte_sequence_handler_decset_internal):

2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 411000 – Orca repeats old text in gnome-terminal

	The deferred handling of the window scrolling had the unfortunate
	side-effect of postponing the accessibility 'text-scrolled' signal
	until after the 'text-inserted' signal. This caused vteaccess to
	determine that the whole window had been modified and cause orca to
	reread the entire screen.

	* src/vte-private.h:
	* src/vte.c: (vte_terminal_emit_contents_changed),
	(_vte_terminal_queue_contents_changed),
	(vte_terminal_emit_cursor_moved),
	(vte_terminal_queue_cursor_moved), (vte_terminal_scroll_pages),
	(vte_terminal_eof), (vte_terminal_emit_pending_text_signals),
	(vte_terminal_process_incoming), (vte_terminal_handle_scroll),
	(vte_terminal_size_allocate), (vte_terminal_unrealize),
	(vte_terminal_emit_pending_signals):
	* src/vteaccess.c: (emit_text_caret_moved),
	(emit_text_changed_insert), (emit_text_changed_delete):
	* src/vteseq.c: (vte_sequence_handler_decset_internal):
		Restore the order of the ally signals. However, Bug 372777
		remains unresolved.

2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_io_read):
		Eeek, correctly compute the buffer length when we no longer
		aim to fill it.

2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>

	Use a separate debug flag for the ally interface.

	* src/debug.c: (_vte_debug_parse_string):
	* src/debug.h:
	* src/vteaccess.c:
	(vte_terminal_accessible_update_private_data_if_needed),
	(vte_terminal_accessible_invalidate_cursor),
	(vte_terminal_accessible_finalize),
	(vte_terminal_accessible_get_text),
	(vte_terminal_accessible_get_text_somewhere),
	(vte_terminal_accessible_text_init),
	(vte_terminal_accessible_component_init),
	(vte_terminal_accessible_action_init),
	(vte_terminal_accessible_factory_new):

2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte-private.h:
	* src/vte.c: (vte_terminal_io_read):
		And finally clamp the maximum number of bytes transferred in
		a single chunk.

2007-02-24  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c:
		Hint that the compiler should inline
		vte_terminal_determine_colors().

2007-02-24  Chris Wilson  <chris@chris-wilson.co.uk>

	cf Bug 410534 – Slow content scrolling, takes 100% of CPU.
	cf Bug 410463 – Poor interactive performance with multiple terminals

	* src/vte.c: (vte_terminal_io_read):
		Do not loop whilst reading in a backlog of child data - should
		help prevent monopolisation of vte by a single child and make
		vte more responsive to user input on slower computers.

2007-02-24  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 159078 – slow highlight

	Do not update the match hilite during a selection-drag.
	Record unsuccesful regex matches, so we can quickly determine whether
	the cursor is still inside the blank region.

	* src/vte-private.h:
	* src/vte.c: (vte_terminal_match_check_internal),
	(rowcol_inside_match), (vte_terminal_match_check),
	(_vte_terminal_set_pointer_visible),
	(vte_terminal_match_hilite_clear),
	(vte_terminal_match_hilite_show), (vte_terminal_match_hilite_hide),
	(vte_terminal_match_hilite_update), (vte_terminal_match_hilite),
	(vte_terminal_motion_notify), (vte_terminal_button_press),
	(vte_terminal_focus_in), (vte_terminal_focus_out),
	(vte_terminal_enter), (vte_terminal_leave), (vte_terminal_init),
	(vte_terminal_unrealize), (vte_terminal_draw_rows),
	(vte_terminal_paint):

2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>

	A couple of compiler warnings and avoid unnecessary arithmetic.

	* src/vte.c: (_vte_terminal_set_default_attributes),
	(find_start_column), (find_end_column),
	(vte_terminal_start_selection), (vte_terminal_extend_selection),
	(vte_terminal_draw_rows), (vte_terminal_paint):
	* src/vtexft.c: (_vte_xft_font_open), (_vte_xft_font_for_char),
	(_vte_xft_char_width), (_vte_xft_unlock_fonts), (_vte_xft_start),
	(_vte_xft_clip), (_vte_xft_set_text_font), (_vte_xft_draw_text):

2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 411276 – SVN trunk compilation error
	Part 2.

	* configure.in:
		Check that the header file defines FcStrFree before checking
		for the availability of the function. Complete hack, but
		appears to work.

2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 411276 – SVN trunk compilation error

	* configure.in:
		Ubuntu Edgy appears to have a broken fontconfig-dev package
		where the function is exported from the library but is missing
		the corresponding prototypes.
		So we reorder the determination of the compilation flags
		before checking for available functions in the hope that the
		tests will then match the results at compile time.

2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_io_read):
		Prevent a deadlock on recursively grabbing the gdk_mutex.

2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>

	Heuristic to avoid a read when it's likely to just return EAGAIN.

	* src/vte-private.h:
	* src/vte.c: (vte_terminal_io_read), (process_timeout),
	(update_repeat_timeout), (update_timeout):

2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>

	Add a new debug flag to monitor draw operations.
	Don't issue individual glyphs for is_local_graphic() in the middle of
	a run.

	* src/debug.c: (_vte_debug_parse_string):
	* src/debug.h:
	* src/vte.c: (vte_terminal_unichar_is_local_graphic),
	(vte_terminal_draw_rows), (vte_terminal_paint):
	* src/vtedraw.c: (_vte_draw_init_user), (_vte_draw_init_default),
	(_vte_draw_new), (_vte_draw_free), (_vte_draw_get_visual),
	(_vte_draw_get_colormap), (_vte_draw_start), (_vte_draw_end),
	(_vte_draw_set_background_color), (_vte_draw_set_background_image),
	(_vte_draw_requires_repaint), (_vte_draw_clip), (_vte_draw_clear),
	(_vte_draw_set_text_font), (_vte_draw_get_text_width),
	(_vte_draw_get_text_height), (_vte_draw_get_text_ascent),
	(_vte_draw_get_char_width), (_vte_draw_get_using_fontconfig),
	(_vte_draw_text), (_vte_draw_char), (_vte_draw_has_char),
	(_vte_draw_fill_rectangle), (_vte_draw_draw_rectangle),
	(_vte_draw_set_scroll):
	* src/vtedraw.h:
	* src/vteft2.c: (_vte_ft2_draw_has_char):
	* src/vtegl.c: (_vte_gl_draw_has_char):
	* src/vtepango.c: (_vte_pango_draw_has_char):
	* src/vtepangox.c: (_vte_pango_x_draw_has_char):
	* src/vteskel.c: (_vte_skel_draw_has_char):
	* src/vtexft.c: (_vte_xft_draw_has_char):

2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_draw_rows):
		Don't break a glyph run for a graphic, issue the draw
		and continue.

2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>

	Cache the font metrics on the vte_xft_font, avoids having to remeasure
	when opening a new terminal.

	* src/vtexft.c: (_vte_xft_font_open), (_vte_xft_set_text_font):

2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>

	Share XftFonts between terminal backends and preserve faces from the
	previous draw - helps prevents font cache thrashing inside libXft.

	* src/vtexft.c: (_vte_xft_font_hash), (_vte_xft_font_equal),
	(_vte_xft_font_open), (_vte_xft_font_close),
	(_vte_xft_font_for_char), (_vte_xft_unlock_fonts),
	(_vte_xft_destroy), (_vte_xft_start), (_vte_xft_end),
	(ptr_array_zeroed_new), (_vte_xft_set_text_font),
	(_vte_xft_get_char_width), (_vte_xft_draw_text),
	(_vte_xft_draw_char):

2007-02-22  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 410986 – Fails to build with -z defs
	Patch by Loïc Minier.

	* src/Makefile.am:
		Add FreeType to the libs.

2007-02-22  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_send):
		Return in the face of error as we appear to hit this in the
		wild.

2007-02-22  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 410819 – slider not correctly positioned after calling less

	* src/vte.c: (_vte_terminal_adjust_adjustments),
	(_vte_terminal_adjust_adjustments_full),
	(vte_terminal_maybe_scroll_to_top), (vte_terminal_size_allocate),
	(vte_terminal_set_scrollback_lines):
	* src/vteseq.c: (vte_sequence_handler_decset_internal):
		Fixup a lot of issues with changing the number of scrollback
		lines, such as missing value_changed signals for the
		scrollbar and a couple of missing CLAMPs.

2007-02-22  Chris Wilson  <chris@chris-wilson.co.uk>

	After adjusting the current profile, the last line gets chomped.

	* src/vte.c: (vte_terminal_set_scrollback_lines):

2007-02-21  Chris Wilson  <chris@chris-wilson.co.uk>

	cf Bug 410534 – Slow content scrolling, takes 100% of CPU.

	* src/vte.c: (vte_terminal_scroll),
	(vte_terminal_set_scrollback_lines):
		Operate on scroll delta directly as adjustment->value updates
		are not instantaneous and we may have several scroll events
		before the next update.

2007-02-21  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 410463 – Poor interactive performance with multiple terminals

	* src/vte.c: (vte_terminal_io_read), (process_timeout),
	(update_repeat_timeout):
		When multiple terminals are active, poll the IO sources
		from within the process/display timeout (akin to 
		interrupt mitigation).
		Return to normal interrupts when we only have a single active
		terminal - so we don't sacrifice high performance.

2007-02-21  Chris Wilson  <chris@chris-wilson.co.uk>

	A small bit of callgrinding, avoid the modulus inside
	vte_terminal_ensure_cursor() by caching the last row_data.

	* src/iso2022.c: (process_cdata):
	* src/ring.c: (_vte_ring_new), (_vte_ring_insert),
	(_vte_ring_insert_preserve), (_vte_ring_remove):
	* src/ring.h:
	* src/table.c: (_vte_table_match):
	* src/vte.c: (_vte_terminal_ensure_cursor),
	(_vte_terminal_insert_char), (vte_terminal_process_incoming):

2007-02-21  Chris Wilson  <chris@chris-wilson.co.uk>

	Callgrind strikes again...
	Inserting a char is a rare operation (especially in the scrolling
	benchmark!) so only read the old cell during an insert. This wins
	about 5% during a hexdump.

	* src/iso2022.c: (_vte_iso2022_find_nextctl),
	(_vte_iso2022_fragment_input), (process_cdata):
	* src/vte.c: (_vte_terminal_insert_char):
	* src/vteseq.c: (vte_sequence_handler_sf):

2007-02-21  Chris Wilson  <chris@chris-wilson.co.uk>

	RedHat Bug 113195: First line displayed incorrectly if prompt changes background color

	e.g. PS1='\e[46m[\u@\h:\w]\e[m \e[45m'
	The issue is when we insert a char on a new row and the background is
	not the default, we fill the entire row with the *current* colour.
	This behaviour is incorrect, and the fix is to fill to the end of the
	line on a carriage return.

	* src/vte-private.h:
	* src/vte.c: (_vte_terminal_ensure_cursor),
	(_vte_terminal_insert_char), (vte_terminal_process_incoming),
	(vte_terminal_send):
	* src/vteseq.c: (vte_sequence_handler_ce),
	(vte_sequence_handler_cr), (vte_sequence_handler_cs),
	(vte_sequence_handler_cS),
	(vte_sequence_handler_cursor_lower_left),
	(vte_sequence_handler_dc), (vte_sequence_handler_ic),
	(vte_sequence_handler_sf):

2007-02-20  Chris Wilson  <chris@chris-wilson.co.uk>

	 RedHat Bug 123845: gnome-terminal not parsing cursor position escape sequence properly

	* src/caps.c:
	* src/vteseq.c: (vte_sequence_handler_cm):
		Add 'ESC [ Pn H' to cursor-position and provide default
		values.

2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 409055 – Terminal stays blank

	Due to GTK+ coallescing of XExposeEvents it was possible for our
	GdkExposeEvent to arrive before the GdkVisibilityEvent associated with
	the mapping of our toplevel and so we discarded the event as we
	believed we were still unviewable.

	* src/vte.c: (_vte_invalidate_cells), (vte_terminal_expose),
	(reset_update_regions):
		Assume that all GdkExposeEvents have been checked for
		suitability before delivery. We know this true for locally
		generated expose events which are extensively checked during
		invalidation, and we presume that X will not generate expose
		events on unmapped or otherwise unviewable windows.

2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (_vte_terminal_adjust_adjustments),
	(_vte_terminal_adjust_adjustments_full):
		Dead code elimination.

2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>

	* perf/random.sh:
		A simple script to dump a fixed amount of random data to the
		terminal.

2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>

	A few more trivial incremental improvements.

	* src/Makefile.am:
	* src/iso2022.c: (_vte_iso2022_map_get):
		Switch to a VteTree.
	* src/vte.c: (_vte_terminal_update_insert_delta),
	(_vte_terminal_insert_char):
		No need to ensure the cursor when scrolling, only before
		insertions.
	* src/vtexft.c: (_vte_xft_font_open), (_vte_xft_font_close),
	(_vte_xft_font_for_char), (_vte_xft_end):
		Lock the face over the entire expose.

2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>

	Improve handling of parallel 'cat /dev/urandom' - notably a crasher
	in the table matcher, repeated g_getenv processing and wasted time
	in g_tree_lookup.

	* src/iso2022.c: (_vte_iso2022_ambiguous_width_guess),
	(_vte_iso2022_map_init), (_vte_iso2022_map_get),
	(process_8_bit_sequence), (process_cdata),
	(_vte_iso2022_process_single), (_vte_iso2022_process):
	* src/table.c: (_vte_table_match):
	* src/vte-private.h:

2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (update_timeout):
		In conjunction with the previous fix, since the terminal
		can be removed from the active list by
		vte_terminal_process_incoming() we need to be careful whilst
		iterating along the active list.

2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>

	<fcrozat> ickle: hi.. our kernel hacker just found a nice reproducible
		crash in vte :)
	<ickle> oh, joy
	<fcrozat> very easy to reproduce
		cat /dev/urandom
	 	wait 2 or 3S
	 	then press Ctrl-Shift-T to open a new tab
	 	=> crash

	* src/vte.c: (process_timeout), (update_repeat_timeout):
		vte_terminal_process_incoming() can trigger a terminal reset
		which will remove the terminal from the active list, and then
		we attempt to remove it again after handling the incoming
		data. The fix is simple - don't delete the link if the the
		terminal is no longer active.

2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>

	As noticed on bug 409055, we do not receive a visibility-notify
	event when we switch workspaces (or even when the window is iconified).
	The workaround for this is to watch for our toplevel being unmapped
	and set the fully-obscured flag.

	* src/vte.c: (vte_terminal_configure_toplevel),
	(vte_terminal_unmap_toplevel), (vte_terminal_hierarchy_changed),
	(vte_terminal_set_visibility), (vte_terminal_visibility_notify):

2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (visibility_state_str),
	(vte_terminal_visibility_notify), (vte_terminal_init),
	(vte_terminal_realize):
		Add the visibility state to the debug output.

2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>

	* configure.in:
		Add the configuration details to config.log as well.

2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 409241 – gnome-terminal crashed with SIGSEGV in vte_terminal_draw_graphic()

	* src/vte.c: (vte_terminal_paint):
		Lookup fore/back colours before attempting to draw the graphic
		character behind the unfocused cursor.

2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_visibility_notify):
		Add VTE_DEBUG_EVENT info.

2007-02-16  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 407945 – "GNOME" Terminal" regression after "vte" update when using "csh"

	When passing multiple versions of the same environment
	variable to execve (i.e g_spawn) the result is undefined.
	So we solve the ambiguity by using the application passed env to
	override values from the current environment.
	
	* src/pty.c: (collect_variables), (merge_environ),
	(_vte_pty_run_on_pty):

2007-02-16  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 408536 – trouble compiling vte 0.15.3

	* configure.in:
	* src/vtefc.c: (_vte_fc_patterns_from_pango_font_desc):
		Check for availability of FcStrFree() - only used for
		debugging purposes so we can live without it.

2007-02-15  Chris Wilson  <chris@chris-wilson.co.uk>

	Guard against a missing default number of rows or columns
	inside the termcap.

	* src/vte-private.h:
	* src/vte.c: (vte_terminal_set_emulation), (vte_terminal_init):

2007-02-15  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 408040 – vte automagic hyperlinks
	Patch by Gilles Dartiguelongue.

	* src/vteapp.c:
		Correct the typo in the nntp protocol matcher.

2007-02-14  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 407839 – Use of environ breaks build on Solaris
	Original patch by Damien Carbery.

	* src/pty.c:
		extern char **environ - glibc was 'conveniently' declaring
		it for us...

2007-02-13  Chris Wilson  <chris@chris-wilson.co.uk>

	uws reported that scrolling inside screen with a status line was
	broken. Indeed any scrolling inside an alternative screen was broken,
	e.g. plain vim would not always update the topmost line. The issue was
	the interaction with the deferred value-changed signal emission and
	failing to correctly maintain the current scroll_delta. The fix is
	that we always now apply changes to the scroll_delta and swap
	scroll_delta with adjustment->value before the deferred signal
	emission to correctly trigger the handle_scroll().

	* src/vte-private.h:
	* src/vte.c: (_vte_invalidate_cells),
	(vte_terminal_emit_adjustment_changed),
	(vte_terminal_queue_adjustment_value_changed),
	(_vte_terminal_adjust_adjustments),
	(_vte_terminal_adjust_adjustments_full),
	(vte_terminal_maybe_scroll_to_bottom),
	(vte_terminal_process_incoming), (vte_terminal_extend_selection),
	(vte_terminal_handle_scroll), (vte_terminal_set_scrollback_lines):
	* src/vteseq.c: (vte_sequence_handler_sf):

2007-02-13  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 407358 – regression in mouse selection

	* src/vte.c: (vte_terminal_motion_notify):
		When outside the terminal we used an uninitialised variable to
		determine the mouse tracking mode.