[vte] widget: Fix check for changed screen in process_incoming



commit 17edda3088a0dd7c6f8cb6fd1866bb7391790ff2
Author: Christian Persch <chpe gnome org>
Date:   Sat Jan 30 18:19:27 2016 +0100

    widget: Fix check for changed screen in process_incoming
    
    This was accidentally broken in commit 423063840d1304fdd7ff2d87f2041e70a07f599a.

 src/vte.cc |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)
---
diff --git a/src/vte.cc b/src/vte.cc
index bbd700c..157a03e 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -3659,6 +3659,8 @@ VteTerminalPrivate::process_incoming()
                        m_pending->len);
        _vte_debug_print (VTE_DEBUG_WORK, "(");
 
+        auto previous_screen = m_screen;
+
         bottom = screen->insert_delta == (long)m_screen->scroll_delta;
 
         auto top_row = first_displayed_row();
@@ -3778,6 +3780,8 @@ skip_chunk:
                        start = (next - wbuf);
                        modified = TRUE;
 
+                        // FIXME m_screen may be != previous_screen, check for that!
+
                         new_in_scroll_region = m_scrolling_restricted
                             && (m_screen->cursor.row >= (screen->insert_delta + m_scrolling_region.start))
                             && (m_screen->cursor.row <= (screen->insert_delta + m_scrolling_region.end));
@@ -3945,11 +3949,11 @@ skip_chunk:
 #ifdef VTE_DEBUG
                /* Some safety checks: ensure the visible parts of the buffer
                 * are all in the buffer. */
-               g_assert(screen->insert_delta >=
-                        _vte_ring_delta(screen->row_data));
+               g_assert_cmpint(m_screen->insert_delta, >=, _vte_ring_delta(m_screen->row_data));
+
                /* The cursor shouldn't be above or below the addressable
                 * part of the display buffer. */
-                g_assert(m_screen->cursor.row >= m_screen->insert_delta);
+                g_assert_cmpint(m_screen->cursor.row, >=, m_screen->insert_delta);
 #endif
 
 next_match:
@@ -3991,7 +3995,7 @@ next_match:
                }
        }
 
-       if (modified || (screen != m_screen)) {
+       if (modified || (m_screen != previous_screen)) {
                /* Signal that the visible contents changed. */
                queue_contents_changed();
        }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]