Commit Graph

34 Commits

Author SHA1 Message Date
John Hood c090d257f2 Rework Terminal::Display to improve performance and treat passed Framebuffers as const.
* Refactor put_cell() and parts of new_frame(), and associated state, into put_row().
* Optimize display and line wrap handling code/output.
* Make last_frame a const ref, to eliminate a costly copy of the framebuffer on every screen refresh.
* In new_frame()'s scroll optimization, don't copy rows, use pointers instead.
* Don't check entire frame buffer for scrolling if first line hasn't scrolled.
* Add a generation counter on Row objects to allow quicker/better identification of scroll regions
* Use at() for bounds-checking on framebuffers, because they can be resized.
* Copy and resize scroll buffer on window resize.
2015-12-06 17:42:34 -05:00
John Hood 32afa96111 Change Framebuffer's containers/methods to improve performance.
* Reduce the size of Terminal::Cell.
* Change colors and attributes in Terminal::Rendition to bitfields/bitmask.
* Change Cells to use UTF-8 strings instead of vector<wchar_t>.  Store Rows in a vector instead of a deque.
* Add various Framebuffer::append() methods for more efficient passing of single and repeated characters.
* Change title/icon strings from deques to a vector typedef-- this is more for tidiness than any real performance.
2015-12-06 17:42:34 -05:00
John Hood 8fdcdc88cd Isolated algorithmic improvements.
* Fix inefficient STL use around Parser::UTF8Parser.
* Reduce typeid() usage, change some of it to a virtual method
* Do multiple-line scrolls as a single move
2015-12-06 17:42:34 -05:00
John Hood 026a3f0346 Resolve cppcheck issues.
Signed-off-by: John Hood <cgull@glup.org>
2015-06-10 23:50:56 -04:00
John Hood 543f346ac7 Fix various new compiler warnings.
terminalfunctions.cc: set_if_available() was undeclared.
Fix printf() wint_t/wchar_t warnings.
mosh-server.cc: Fix warning for side effects inside typeid().

Signed-off-by: John Hood <cgull@glup.org>
2015-06-06 13:12:32 -04:00
Louis Kruger c4236c6762 Fix xterm mouse support. 2015-05-31 18:18:30 -04:00
Andrew Chin 0be97a80bd Implement UTF8 mouse mode (SET_EXT_MODE_MOUSE DECSET 1005)
Signed-off-by: Andrew Chin <achin@eminence32.net>
2014-12-08 20:41:11 -05:00
Bazyli Brzóska 492cfa3449 Implement vt100 mouse mode (1000)
(closes #461)
2014-01-04 02:42:26 -05:00
Bazyli Brzóska 926bbcc746 Implement xterm extended mouse mode 2014-01-04 02:42:15 -05:00
Bazyli Brzóska 5ef7f43479 Implement xterm mouse mode 2014-01-04 02:42:15 -05:00
Barosl LEE c6bf3a2025 Implement bracketed paste mode
Allow bracketed paste mode-setting control sequences to be passed to the
outer terminal.

Signed-off-by: Barosl LEE <vcs@barosl.com>

Closes #430
2013-07-01 03:18:16 -04:00
Daniel "Tracerneo" Ziółkowski 06561d3500 Add support for ECMA-48 escape sequence for italic
Closes #443
2013-07-01 03:08:25 -04:00
sqweek 5af90cc1ac Don't touch window title before an OSC is received.
Fixes the "window title being clobbered" issue raised in issue 137.

Signed-off-by: sqweek <sqweek@gmail.com>

Closes #380. Closes #137.
2013-03-10 15:44:49 -04:00
Keith Winstein 92ecb99b71 Add OpenSSL licensing exception 2012-07-20 16:46:00 -04:00
Larry Doolittle eda48085ba Simple spelling fixes 2012-05-23 05:11:05 -04:00
Keith Winstein 43182729ec More graceful output from failed verification 2012-05-05 01:53:28 -04:00
Keith Winstein bfa0999089 Final tab-related bugfix (of the morning). Now matches xterm more closely. 2012-04-16 11:31:37 -04:00
Keith Winstein 0293e579d2 Properly reset tab stops on resize 2012-04-16 09:55:59 -04:00
Keith Winstein feb352c809 Optional verifier for round-trippability, and fix wrapping and tab bugs. 2012-04-16 09:09:20 -04:00
Keegan McAllister cd2d482484 Don't use *_t for our own typedefs
It's reserved by POSIX.

(closes #158 pull request)
2012-04-15 13:50:18 -04:00
Keegan McAllister 87a5f86794 Remove BOOST_AUTO from terminalframebuffer.cc 2012-04-15 13:49:15 -04:00
Keith Winstein 5c20c8d4be Keep using OSC 0 when possible to preserve compability with older clients.
Re: #137
2012-04-14 02:11:31 -04:00
Keith Winstein d0a818d2e2 Track icon name and window title separately. Implement MOSH_TITLE_NOPREFIX 2012-04-14 01:55:28 -04:00
Keith Winstein a67ae7b0f4 Support 16-color set (per Anders Kaseorg).
Closes #106 github issue.
Closes #133 github issue.
Closes #131 github issue.
2012-04-11 03:09:26 -04:00
Keith Winstein 4144f2e4f0 Don't clear wrap state on DEC set mode escape (matches xterm) 2012-04-11 01:58:20 -04:00
Keith Winstein 8221838f51 Fix bug sometimes causing missing (or spurious) wraparound copy-and-paste 2012-04-02 19:04:26 -04:00
Keith Winstein 13bd38aa51 Switch to deltaE method for color posterization 2012-03-18 01:52:13 -04:00
Keith Winstein d88ae9bfd0 Fix erroneous blinking in emacs (sgr with >15 fg but <16 bg) 2012-03-17 15:00:54 -04:00
Keith Winstein 170bc8366a Posterize to 8 colors when outer terminal does not support 256 colors
Fixes #58 github issue.
2012-03-16 17:43:01 -04:00
Keith Winstein 57d97209c0 Support 256color (and assume 256color terminal). Closes #3 github issue. 2012-03-16 13:46:55 -04:00
Anders Kaseorg 7d19fbe203 Replace C++0x auto with Boost Typeof library
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2012-02-17 21:29:51 -05:00
Anders Kaseorg af649a035c Add missing #includes
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2012-02-17 19:24:51 -05:00
Keith Winstein 3781a290c8 Add copyright/license notices 2012-02-06 20:52:48 -05:00
Keith Winstein 38c9e99882 Separate modules by subdirectory 2012-02-06 18:26:45 -05:00