From a483d17fca7a58c3802726bc70230ecf67638c14 Mon Sep 17 00:00:00 2001 From: Andrew Grigorev Date: Wed, 8 Mar 2023 00:40:35 +0200 Subject: [PATCH] Revert rxvt-unicode screen.C to rxvt-unicode-9.30 state Fixes FS#77062 (https://bugs.archlinux.org/task/77062) --- trunk/PKGBUILD | 18 ++++++---- trunk/screen_c_9_30.diff | 72 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 trunk/screen_c_9_30.diff diff --git a/trunk/PKGBUILD b/trunk/PKGBUILD index b5b96ec..e213e3d 100644 --- a/trunk/PKGBUILD +++ b/trunk/PKGBUILD @@ -8,7 +8,7 @@ pkgbase=rxvt-unicode pkgname=('rxvt-unicode' 'rxvt-unicode-terminfo') pkgver=9.31 -pkgrel=1 +pkgrel=2 arch=('x86_64') url='http://software.schmorp.de/pkg/rxvt-unicode.html' license=('GPL') @@ -27,19 +27,22 @@ source=("$pkgname-$pkgver.tar.bz2::http://dist.schmorp.de/rxvt-unicode/$pkgname- "$pkgname-$pkgver.pub::http://dist.schmorp.de/signing-key.pub" 'urxvt.desktop' 'urxvtc.desktop' - 'urxvt-tabbed.desktop') + 'urxvt-tabbed.desktop' + 'screen_c_9_30.diff') sha256sums=('aaa13fcbc149fe0f3f391f933279580f74a96fd312d6ed06b8ff03c2d46672e8' - 'fd43ac9f271437389c97d5ee208f414abd0aab01a0824c29533a4077ba7d6f3c' + 'afea78dc25db8cd15da9959baf347b0634f4ef62dd3eeaff0c0a3389986b6a3e' '48ef5720d77a870f25737b8f66fe2c1f88a01810013df70cb8155add904288e4' '5f9c435d559371216d1c5b49c6ec44bfdb786b12d925d543c286b0764dea0319' '91536bb27c6504d6cb0d33775a0c4709a4b439670b900f0c278c25037f19ad66' - 'ccd7c436e959bdc9ab4f15801a67c695b382565b31d8c352254362e67412afcb') + 'ccd7c436e959bdc9ab4f15801a67c695b382565b31d8c352254362e67412afcb' + '14a72cbc7cc25d91b17470de4c5919654c7aabe07682332e94569948ee328578') sha512sums=('4d14ecbbb62de1b1c717277f5aae5cfb536e11392f2d4b82c884c1713f437fce8e9dd69a328fa353a55d068d8ee4121a31900f45191acec172d5dc76652b6255' - '7f3b836dd46c1a70384420b77181b11cbb598ac6e7ab144e0ce132c99e84caa4eb76c95f532fbeec02e0e549f22269c60b369ece677aed14c0aed7092ef1dbf9' + '389b1959387f4d5c960901763e45cdcf670fb8de6506ed9d1d49b3c58616f1fb10d5b158b5f89257f3db1bac3a0b270bb35043e7e13e5222549153e83db79ef9' 'a09a434387e22612a9225ddfa444044977712c6410efe8a77a33d8aa607bd1acbef2a1da08b62e21a4b070f0974ba94ae907ac0452b5d060e33a1c051a7780e4' '7184714a908071a4e8e5c065c5f90255e94dfd072df459c8d6f66fca3647781b3d1f6908b9303bcfd0d5b3f2e3822a8d66efaaa8a7c4d44f6e682839031a6e99' 'aa501eeeb220ba03b3f101b160230612efbca87694fef88c469b2976d29769c24b34576ea82f6c7941fad6039ac776f32e397add9b957b49bf2e84aeb67b66d6' - '18c7afb0c3eb8c832893b9ead09d25374b70ae1cd5479a5291d11794906c53daa6f1a1bf698b37efda062bb2b991cacac53a0a6c185ca416b8718fde2bb6a7af') + '18c7afb0c3eb8c832893b9ead09d25374b70ae1cd5479a5291d11794906c53daa6f1a1bf698b37efda062bb2b991cacac53a0a6c185ca416b8718fde2bb6a7af' + '6cd77f95c4f2bf2c8d32fcb5f9ccde873ce829abb27183bfbaab92b62b07c4a9ab5becbc90bfa0569b8fe5912a8c197d3d43c8560171eb2cefe1f6550b150fe2') prepare() { # hacking around to validate with signify @@ -49,6 +52,9 @@ prepare() { build() { cd ${pkgname}-${pkgver} + + patch -R -p1 -u < ${srcdir}/screen_c_9_30.diff + # we disable smart-resize (FS#34807) # do not specify --with-terminfo (FS#46424) ./configure \ diff --git a/trunk/screen_c_9_30.diff b/trunk/screen_c_9_30.diff new file mode 100644 index 0000000..ffa23bd --- /dev/null +++ b/trunk/screen_c_9_30.diff @@ -0,0 +1,72 @@ +diff --git a/src/screen.C b/src/screen.C +index 51c7b410..8fdfad9d 100644 +--- a/src/screen.C ++++ b/src/screen.C +@@ -293,6 +293,7 @@ rxvt_term::scr_reset () + + int common_col = min (prev_ncol, ncol); + ++ // resize swap_buf, blank drawn_buf + for (int row = min (nrow, prev_nrow); row--; ) + { + scr_blank_screen_mem (drawn_buf [row], DEFAULT_RSTYLE); +@@ -306,6 +307,7 @@ rxvt_term::scr_reset () + int pend = MOD (term_start + top_row , prev_total_rows); + int q = total_rows; // rewrapped row + ++#if ENABLE_FRILLS + if ((rewrap_always || top_row) && !rewrap_never) + { + // Re-wrap lines. This is rather ugly, possibly because I am too dumb +@@ -387,36 +389,35 @@ rxvt_term::scr_reset () + scr_blank_line (*qline, qline->l, ncol - qline->l, DEFAULT_RSTYLE); + } + while (p != pend && q > 0); +- +- term_start = total_rows - nrow; +- top_row = q - term_start; +- +- // make sure all terminal lines exist +- while (top_row > 0) +- scr_blank_screen_mem (ROW (--top_row), DEFAULT_RSTYLE); + } + else ++#endif + { +- // if no scrollback exists (yet), wing, instead of wrap ++ // wing, instead of wrap ++ screen.cur.row += nrow - prev_nrow; + +- for (int row = min (nrow, prev_nrow); row--; ) ++ do + { +- line_t &src = prev_row_buf [MOD (term_start + row, prev_total_rows)]; +- line_t &dst = row_buf [row]; ++ p = MOD (p - 1, prev_total_rows); ++ q--; + +- copy_line (dst, src); ++ copy_line (row_buf [q], prev_row_buf [p]); + } ++ while (p != pend && q > 0); ++ } + +- for (int row = prev_nrow; row < nrow; row++) +- scr_blank_screen_mem (row_buf [row], DEFAULT_RSTYLE); ++ term_start = total_rows - nrow; ++ top_row = q - term_start; + +- term_start = 0; +- } ++ // make sure all terminal lines exist ++ while (top_row > 0) ++ scr_blank_screen_mem (ROW (--top_row), DEFAULT_RSTYLE); + + clamp_it (screen.cur.row, 0, nrow - 1); + clamp_it (screen.cur.col, 0, ncol - 1); + } + ++ // ensure drawn_buf, swap_buf and terminal rows are all initialized + for (int row = nrow; row--; ) + { + if (!ROW (row).valid ()) scr_blank_screen_mem (ROW (row), DEFAULT_RSTYLE); -- 2.39.2