Re: [dev] [st] terminal app resizing redraw artifacts

From: Kai Ting <kkting_AT_gmail.com>
Date: Wed, 24 Jun 2020 12:23:54 -0700

To answer my own question, I seem to have found the issue:
Basically the tclearregion in resize uses whatever is left in
term.c.attr.bg to paint the background. I bet sometimes there are left
over values ( in this case the cursor background is purple/yellow) and
it got painted all over the newly created region. I added the fix
below to clear the bg to default in tresize before the tclearregion()

 /* Clearing both screens (it makes dirty all lines) */
 term.c.attr.bg = defaultbg;
 c = term.c;
 for (i = 0; i < 2; i++) {
   if (mincol < col && 0 < minrow) {
   tclearregion(mincol, 0, col - 1, minrow - 1);

I guess most people don't really care or the redraw is usually fast
enough to hide this. In my case I work on very slow virtual machines
where this issue is exacerbated.

Thanks,
Kai

On Wed, Jun 24, 2020 at 8:55 AM Kai Ting <kkting_AT_gmail.com> wrote:
>
> Hi,
> By "default background color" do you mean the default ST color? I tried that already. I tried the default config.def.h colors and also set ST's background to the same color as VIM's background.
>
> Please see attached gifs for a more pronounced example - here vim is busy running and the resize somehow picked up the color of the status bar (purple) in this case. In the xterm version, you can see the redraw just paints the new space with default black background which is much less jarring. I'm trying to see where in ST's code is picking up this background color that seems to be random part of the original screen. I suspect some clearing /resetting is missing before the redraw.
>
> Thanks,
>
> Kai
>
>
>
> On Wed, Jun 24, 2020 at 2:11 AM Ivan Tham <pickfire_AT_riseup.net> wrote:
>>
>> On Tue, Jun 23, 2020 at 10:34:59PM -0700, Kai Ting wrote:
>> >Hello!
>> >
>> >I have been using st for a while trying to transition fully from xterm.
>> >However one issue I couldn't resolve for the life of me is that under dwm
>> >and st, changing the windows size sometimes results in colored flashes
>> >around the window area before the running application redraws the screen.
>> >Apart from resizing windows, fast scroll back/forward also results in very
>> >bright flashes. I cannot reproduce the same issue with xterm. Please see
>> >attached gif capturing this issue using vim 8.2, st 0.8.4 and dwm 6.2.
>> >
>> >Any hints/guidance? I looked at the code briefly (xresize() etc) and don't
>> >see anything obvious that can change such behavior.
>>
>> I believe that may be the color you set on vim or the colors set on st.
>> I never experience these behavior using the default color settings.
>>
>> Most likely is because my background color is black, sometimes if the
>> background colors is not the same as the default background color, the
>> default background color will fill up the extra space.
>>
>> Regards,
>> Ivan Tham
>>
Received on Wed Jun 24 2020 - 21:23:54 CEST

This archive was generated by hypermail 2.3.0 : Wed Jun 24 2020 - 22:24:08 CEST