ncurses-online-redraw

Kłaniam!

Przerobiłem sposób wyświetlania w ncurses i zrobiłem to w osobnej gałęzi, bo
to kontrrewolucja, a nie drobne zmiany:
   - wywaliłem 'struct screen_line' i wszystko co z tym było związane
   - w związku z tym zawartość okien nie jest przeliczana na zapas, a tylko
     przy wyświetlaniu danego okna

Tak więc przy pokazaniu lub ukryciu okna kontaktów nie musimy przeliczać
10000 linii okna debug, do którego i tak nie zaglądaliśmy i nie mamy zamiaru
robić tego w przewidywalnej przyszłości.

Wprowadziłem też zmienną 'ncurses:display_mode', która odpowiada za styl
wyświetlania zawartości okien.

ncurses:display_mode = 0 (classic) -- wszystko tak jak dotychczas.

ncurses:display_mode = 1 (mode1) -- (jak to nazwać?)

12:43:50 Długie linie wyświetlane są w ten sposób, że w timestamp jest
wyświetlany tylko w pierwszej linii, a w kolejnych już nie. Wyjątek stanowią
linie, które mają 'prompt', jak ta następna.
12:45:20 ::: Długa linia z promptem też nie powtarza timestampu w kolejnych
         ::: wierszach, ale prompt jest wyrównany do tego z pierwszej linii

ncurses:display_mode = 1 (mode2) -- (jak to nazwać?

12:46:18 Przy takim ustawieniu timestamp jest również wyświetlany wyłącznie w
         pierwszej linii, ale linie są wyrównane. W tym przypadku nie ma
	 żadnego wyjątku dla linii z promptem.
(Continue reading)

Michał Górny | 2 Feb 13:02
Picon
Favicon
Gravatar

Re: ncurses-online-redraw

On Thu, 2 Feb 2012 12:48:34 +0100
Wiesław Ochmiński <wiechu <at> wiechu.com> wrote:

> Kłaniam!
> 
> Przerobiłem sposób wyświetlania w ncurses i zrobiłem to w osobnej
> gałęzi, bo to kontrrewolucja, a nie drobne zmiany:
>    - wywaliłem 'struct screen_line' i wszystko co z tym było związane
>    - w związku z tym zawartość okien nie jest przeliczana na zapas, a
> tylko przy wyświetlaniu danego okna
> 
> Tak więc przy pokazaniu lub ukryciu okna kontaktów nie musimy
> przeliczać 10000 linii okna debug, do którego i tak nie zaglądaliśmy
> i nie mamy zamiaru robić tego w przewidywalnej przyszłości.
> 
> Wprowadziłem też zmienną 'ncurses:display_mode', która odpowiada za
> styl wyświetlania zawartości okien.
> 
> ncurses:display_mode = 0 (classic) -- wszystko tak jak dotychczas.
> 
> 
> ncurses:display_mode = 1 (mode1) -- (jak to nazwać?)
> 
> 12:43:50 Długie linie wyświetlane są w ten sposób, że w timestamp jest
> wyświetlany tylko w pierwszej linii, a w kolejnych już nie. Wyjątek
> stanowią linie, które mają 'prompt', jak ta następna.
> 12:45:20 ::: Długa linia z promptem też nie powtarza timestampu w
> kolejnych ::: wierszach, ale prompt jest wyrównany do tego z
> pierwszej linii
> 
(Continue reading)

Re: ncurses-online-redraw

On Thu, Feb 02, 2012 at 01:02:31PM +0100, Michał Górny wrote:
> On Thu, 2 Feb 2012 12:48:34 +0100
> Wiesław Ochmiński <wiechu <at> wiechu.com> wrote:
> 
[...]
> > ncurses:display_mode = 1 (mode1) -- (jak to nazwać?)
> > 
[...]
> > 
> > ncurses:display_mode = 1 (mode2) -- (jak to nazwać?
> 
> Że się tak wyrażę niezrozumiale i skomplikowanie:
> 
> <stdin>:13:8: error: duplicate case value '1'
>                 case mode2:
>                      ^
> <stdin>:11:8: note: previous case defined here
>                 case mode1:
>                      ^
Mój algorytm: 1) napisz; 2) wyślij; 3) sprawdź;
okazał się zawodny.
Dzięki za zwrócenie uwagi.

Pozdrawiam,
    wiechu

Jakub Zawadzki | 13 Feb 13:41
Picon

Re: Locking for debug handler

On Sat, Jan 28, 2012 at 10:05:19AM +0000, Marcin Owsiany wrote:
> On Fri, Jan 27, 2012 at 10:48:25PM +0100, Jakub Zawadzki wrote:
> > On Fri, Jan 27, 2012 at 09:32:42PM +0000, Marcin Owsiany wrote:
> > > This function may be called asynchronously, in particular from libgadu when
> > > it's configured with a threaded resolver. See bug#125 for an example where this
> > > causes crashes.
> > 
> > Why not put it in gg plugin, i.e: libgadu_debug_handler()?
> 
> Because it does not solve the general case. Imagine libgadu resolver
> thread calling ekg_debug_handler at the same time as another plugin
> calling the same debug handler.

Wiesz, ten kod mial pozwalac aby mozna bylo wywolywac 
wiele razy debug() bez \n i ekg2 sobie to mialo łączyć w jedną linijke.

Jeśli debug handler może być wywoływany z wielu wątków, to przestaje mieć
to sens i lepiej ten kod wywalić /a nie dokładać muteksy/.
Co nie powinno być takie trudne, bo w większości wypadków jedno
wywoływanie debug - jedna linijka.

A ta łatka którą proponujesz naprawia jeden z wielu możliwych błędów.
Obawiam się, że potem ich trzeba będzie ich szukać np. w handlerach UI_WINDOW_PRINT.
Dlatego lepiej:

> > or fixed in libgadu?
> 
> I don't see how this could be solved in libgadu?

To call debug handler only from main thread, and IMHO it should be fixed 
(Continue reading)

Marcin Owsiany | 18 Feb 16:06
Picon
Favicon

Re: ncurses-online-redraw

On Thu, Feb 02, 2012 at 12:48:34PM +0100, Wiesław Ochmiński wrote:
> Kłaniam!
> 
> Przerobiłem sposób wyświetlania w ncurses i zrobiłem to w osobnej gałęzi, bo
> to kontrrewolucja, a nie drobne zmiany:
>    - wywaliłem 'struct screen_line' i wszystko co z tym było związane
>    - w związku z tym zawartość okien nie jest przeliczana na zapas, a tylko
>      przy wyświetlaniu danego okna
> 
> Tak więc przy pokazaniu lub ukryciu okna kontaktów nie musimy przeliczać
> 10000 linii okna debug, do którego i tak nie zaglądaliśmy i nie mamy zamiaru
> robić tego w przewidywalnej przyszłości.
> 
> Wprowadziłem też zmienną 'ncurses:display_mode', która odpowiada za styl
> wyświetlania zawartości okien.

"display_mode" brzmi dość ogólnie i mało konkretnie. Proponowałbym
raczej coś w stylu "indent_lines" albo "display_indent", z wartościami
odpowiednio:

> ncurses:display_mode = 0 (classic) -- wszystko tak jak dotychczas.

0 = multiple_timestamp

> ncurses:display_mode = 1 (mode1) -- (jak to nazwać?)
> 
> 12:43:50 Długie linie wyświetlane są w ten sposób, że w timestamp jest
> wyświetlany tylko w pierwszej linii, a w kolejnych już nie. Wyjątek stanowią
> linie, które mają 'prompt', jak ta następna.
> 12:45:20 ::: Długa linia z promptem też nie powtarza timestampu w kolejnych
(Continue reading)

Marcin Owsiany | 18 Feb 17:22
Picon
Favicon

Re: Locking for debug handler

Odpisuję teraz, bo byłem na urlopie.

On Mon, Feb 13, 2012 at 01:41:16PM +0100, Jakub Zawadzki wrote:
> On Sat, Jan 28, 2012 at 10:05:19AM +0000, Marcin Owsiany wrote:
> > On Fri, Jan 27, 2012 at 10:48:25PM +0100, Jakub Zawadzki wrote:
> > > On Fri, Jan 27, 2012 at 09:32:42PM +0000, Marcin Owsiany wrote:
> > > > This function may be called asynchronously, in particular from libgadu when
> > > > it's configured with a threaded resolver. See bug#125 for an example where this
> > > > causes crashes.
> > > 
> > > Why not put it in gg plugin, i.e: libgadu_debug_handler()?
> > 
> > Because it does not solve the general case. Imagine libgadu resolver
> > thread calling ekg_debug_handler at the same time as another plugin
> > calling the same debug handler.
> 
> Wiesz, ten kod mial pozwalac aby mozna bylo wywolywac 
> wiele razy debug() bez \n i ekg2 sobie to mialo łączyć w jedną linijke.
> 
> Jeśli debug handler może być wywoływany z wielu wątków, to przestaje mieć
> to sens i lepiej ten kod wywalić

Fakt.

> /a nie dokładać muteksy/.
>
> Co nie powinno być takie trudne, bo w większości wypadków jedno
> wywoływanie debug - jedna linijka.
> 
> A ta łatka którą proponujesz naprawia jeden z wielu możliwych błędów.
(Continue reading)


Gmane