[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8821938C-2C77-49CA-B2F5-E2A7F0B95449@gmail.com>
Date: Tue, 02 Sep 2025 13:12:00 -0400
From: Jean-François Lessard <jefflessard3@...il.com>
To: Andy Shevchenko <andriy.shevchenko@...el.com>
CC: Andy Shevchenko <andy@...nel.org>, Geert Uytterhoeven <geert@...ux-m68k.org>,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/5] auxdisplay: linedisp: display static message when length <= display size
Le 2 septembre 2025 06 h 03 min 00 s HAE, Andy Shevchenko <andriy.shevchenko@...el.com> a écrit :
>On Sun, Aug 31, 2025 at 10:00:26PM -0400, Jean-François Lessard wrote:
>> Currently, when a message shorter than the display size is written, the
>> content wraps around (e.g., "123" on a 4-digit display shows "1231")
>> without scrolling, which is confusing and unintuitive.
>>
>> Change behavior to display short messages statically with space padding
>> (e.g. "123 ") while only scrolling messages longer than the display width.
>> This provides more natural behavior that aligns with user expectations
>> and current linedisp_display() kernel-doc.
>>
>> The scroll logic is also consolidated into a helper function for clarity.
>>
>> No API changes are introduced.
>
>...
>
>> /**
>> * linedisp_scroll() - scroll the display by a character
>> * @t: really a pointer to the private data structure
>
>> linedisp->scroll_pos %= linedisp->message_len;
>>
>> /* rearm the timer */
>> - if (linedisp->message_len > num_chars && linedisp->scroll_rate)
>> + if (should_scroll(linedisp))
>> mod_timer(&linedisp->timer, jiffies + linedisp->scroll_rate);
>> }
>>
>
>...
>
>> linedisp->message_len = count;
>> linedisp->scroll_pos = 0;
>>
>> - /* update the display */
>> - linedisp_scroll(&linedisp->timer);
>> + if (should_scroll(linedisp)) {
>> + /* display scrolling message */
>> + linedisp_scroll(&linedisp->timer);
>> + } else {
>> + /* display static message */
>> + memset(linedisp->buf, ' ', linedisp->num_chars);
>> + memcpy(linedisp->buf, linedisp->message,
>> + umin(linedisp->num_chars, linedisp->message_len));
>> + linedisp->ops->update(linedisp);
>> + }
>
>Hmm... But it seems the linedisp_scroll already has a check, why do we need
>an additional one here? Perhaps we need to pad a message somewhere else and
>guarantee it won't ever be less than num_chars?
>
Semantically, linedisp_scroll should scroll. I think it's better to have two
distinct paths with their specific logic:
1. Scroll: circular display and rearm the timer
2. Static: padding and direct update
But you're absolutely right. Given the explicit should_scroll() conditional
outside, the check inside linedisp_scroll() is now redundant. I'll remove it
after testing to streamline the code paths and eliminate the duplication.
Powered by blists - more mailing lists