FreeBSD Bugzilla – Attachment 169829 Details for
Bug 209166
x11-toolkits/vte: fix terminal corruption with mosh and screen
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Fix for terminal corruption in vte
vte.patch (text/plain), 3.72 KB, created by
Tod McQuillin
on 2016-04-30 12:29:51 UTC
(
hide
)
Description:
Fix for terminal corruption in vte
Filename:
MIME Type:
Creator:
Tod McQuillin
Created:
2016-04-30 12:29:51 UTC
Size:
3.72 KB
patch
obsolete
>Index: Makefile >=================================================================== >--- Makefile (revision 414342) >+++ Makefile (working copy) >@@ -3,7 +3,7 @@ > > PORTNAME= vte > PORTVERSION= 0.28.2 >-PORTREVISION?= 2 >+PORTREVISION?= 3 > CATEGORIES= x11-toolkits gnome > MASTER_SITES= GNOME > DIST_SUBDIR= gnome2 >Index: files/patch-src_vte.c >=================================================================== >--- files/patch-src_vte.c (revision 414342) >+++ files/patch-src_vte.c (working copy) >@@ -1,6 +1,69 @@ >---- src/vte.c.orig 2011-08-28 23:31:45.000000000 +0200 >-+++ src/vte.c 2014-02-11 21:57:19.000000000 +0100 >-@@ -5164,19 +5164,23 @@ >+--- src/vte.c- 2016-04-06 12:07:45.469197782 +0900 >++++ src/vte.c 2016-04-06 12:08:02.702194923 +0900 >+@@ -4057,6 +4057,7 @@ >+ long wcount, start, delta; >+ gboolean leftovers, modified, bottom, again; >+ gboolean invalidated_text; >++ gboolean in_scroll_region; >+ GArray *unichars; >+ struct _vte_incoming_chunk *chunk, *next_chunk, *achunk = NULL; >+ >+@@ -4076,6 +4077,10 @@ >+ cursor = screen->cursor_current; >+ cursor_visible = terminal->pvt->cursor_visible; >+ >++ in_scroll_region = screen->scrolling_restricted >++ && (screen->cursor_current.row >= (screen->insert_delta + screen->scrolling_region.start)) >++ && (screen->cursor_current.row <= (screen->insert_delta + screen->scrolling_region.end)); >++ >+ /* We should only be called when there's data to process. */ >+ g_assert(terminal->pvt->incoming || >+ (terminal->pvt->pending->len > 0)); >+@@ -4174,6 +4179,8 @@ >+ * points to the first character which isn't part of this >+ * sequence. */ >+ if ((match != NULL) && (match[0] != '\0')) { >++ gboolean new_in_scroll_region; >++ >+ /* Call the right sequence handler for the requested >+ * behavior. */ >+ _vte_terminal_handle_sequence(terminal, >+@@ -4184,12 +4191,20 @@ >+ start = (next - wbuf); >+ modified = TRUE; >+ >+- /* if we have moved during the sequence handler, restart the bbox */ >++ new_in_scroll_region = screen->scrolling_restricted >++ && (screen->cursor_current.row >= (screen->insert_delta + screen->scrolling_region.start)) >++ && (screen->cursor_current.row <= (screen->insert_delta + screen->scrolling_region.end)); >++ >++ delta = screen->scroll_delta; /* delta may have changed from sequence. */ >++ >++ /* if we have moved greatly during the sequence handler, or moved into a scroll_region >++ * from outside it, restart the bbox */ >+ if (invalidated_text && >+- (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK || >+- screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK || >+- screen->cursor_current.row > bbox_bottomright.y + VTE_CELL_BBOX_SLACK || >+- screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK)) { >++ ((new_in_scroll_region && !in_scroll_region) || >++ (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK || >++ screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK || >++ screen->cursor_current.row > bbox_bottomright.y + VTE_CELL_BBOX_SLACK || >++ screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK))) { >+ /* Clip off any part of the box which isn't already on-screen. */ >+ bbox_topleft.x = MAX(bbox_topleft.x, 0); >+ bbox_topleft.y = MAX(bbox_topleft.y, delta); >+@@ -4209,6 +4224,8 @@ >+ bbox_bottomright.x = bbox_bottomright.y = -G_MAXINT; >+ bbox_topleft.x = bbox_topleft.y = G_MAXINT; >+ } >++ >++ in_scroll_region = new_in_scroll_region; >+ } else >+ /* Second, we have a NULL match, and next points to the very >+ * next character in the buffer. Insert the character which >+@@ -5164,19 +5181,23 @@ > vte_terminal_read_modifiers (VteTerminal *terminal, > GdkEvent *event) > {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 209166
: 169829