Re: [ekg-users] EKG i window resize

2011-04-23 Wątek Adam Wysocki
On Sat, 23 Apr 2011, Mikolaj Kucharski wrote:

 Nie, to nie pomaga, poniewaz problem jest wewnatarz ncrurses. Za to
 ponizszy kod dziala prawidlowo.

No tak, LINES to tylko zmienna (myślałem że jakaś makrodefinicja, 
wołająca właśnie ioctla - nie wiem skąd mi się to wzięło).

 Jednak poczekam na deweloperow OpenBSD co oni zaproponuja.

Jak nic nie zaproponują to daj znać, dodam tego ioctla do ekg.

 Moze zajze do mutt'a i irssi jak tam rozwiazany jest resize okna.

W irssi w src/fe-text/term.c jest term_get_size() które woła ioctla 
jeżeli w sygnale WINCH zostanie ustawiona flaga.

 + if (ioctl(STDOUT_FILENO, TIOCGWINSZ, w) != -1)

Zmieniłbym na:

if (ioctl(STDOUT_FILENO, TIOCGWINSZ, w) != -1  w.ws_row != 0  w.ws_col != 
0)

irssi sprawdza ten warunek inaczej (dowolna musi być niezerowa, a nie 
obie), ale nie wyobrażam sobie prawidłowego działania jeżeli którakolwiek 
z tych wartości byłaby zerowa...

-- 
gof


Re: [ekg-users] EKG i window resize

2011-04-22 Wątek Mikolaj Kucharski
On Tue, Apr 19, 2011 at 09:07:01PM +0100, Mikolaj Kucharski wrote:
 On Tue, Apr 19, 2011 at 07:45:12PM +0200, Adam Wysocki wrote:
  On Tue, 19 Apr 2011, Mikolaj Kucharski wrote:
  
   Nic sie nie dzieje, ekg nie zmienia rozmaru okna (ekg-20110418).
  
  Prawdę mówiąc skończyły mi się pomysły. Czy irssi lub inne programy oparte 
  na ncurses zachowują się tak samo?
 
 Irssi, mutt (with-curses, without-slang) nie ma tego problemu jak ekg.
 Spoko, bede kombinowal. Dzieki za pomoc.

Problem z ncurses pod OpenBSD. Na chwile obecna brak rozwiazania. Jak
ktos ciekaw.

http://marc.info/?t=13035003512r=1w=2

Pozdr.

-- 
best regards
q#


Re: [ekg-users] EKG i window resize

2011-04-22 Wątek Adam Wysocki
On Fri, 22 Apr 2011, Mikolaj Kucharski wrote:

  Irssi, mutt (with-curses, without-slang) nie ma tego problemu jak ekg.
  Spoko, bede kombinowal. Dzieki za pomoc.
 
 Problem z ncurses pod OpenBSD. Na chwile obecna brak rozwiazania. Jak
 ktos ciekaw.

Spróbuj w ui-ncurses.c w ui_ncurses_loop w miejscu:

if (ui_need_refresh) {
ui_need_refresh = 0;
endwin();
refresh();
keypad(input, TRUE);
/* wywoła wszystko, co potrzebne */
header_statusbar_resize(NULL);
changed_backlog_size(backlog_size);

goto redraw_prompt;
}

Po endwin a przed refresh dodać:

resizeterm(LINES, COLS);

Nie wiem czy pomoże, ale warto spróbować.

-- 
gof


Re: [ekg-users] EKG i window resize

2011-04-19 Wątek Łukasz Gandecki
W dniu 19 kwietnia 2011 12:18 użytkownik Adam Wysocki
go...@supermedia.pl napisał:
 On Tue, 19 Apr 2011, Mikolaj Kucharski wrote:

 Cisza.. nikt nigdy nie spotkal sie z tym problemem? Czy powinienem udac
 sie na ekg-devel?

 Wyślij screenshoty, bo program nie radzi sobie ze zmianą rozmiaru okna
 to pojęcie ogólne :) Najlepiej nie na listę, tylko linki do nich.

screenshoty to jedna sprawa. I oczywiście linki. :)
Próbowałeś ctrl + l w sytuacji jak się coś krzaczyło? Powinno
odświeżyć ncurses.



-- 
Pozdrawiam,
Łukasz Gandecki 'gozda'


Re: [ekg-users] EKG i window resize

2011-04-19 Wątek Mikolaj Kucharski
On Tue, Apr 19, 2011 at 01:04:36PM +0200, Łukasz Gandecki wrote:
 W dniu 19 kwietnia 2011 12:18 użytkownik Adam Wysocki
 go...@supermedia.pl napisał:
  On Tue, 19 Apr 2011, Mikolaj Kucharski wrote:
 
  Cisza.. nikt nigdy nie spotkal sie z tym problemem? Czy powinienem udac
  sie na ekg-devel?
 
  Wyślij screenshoty, bo program nie radzi sobie ze zmianą rozmiaru okna
  to pojęcie ogólne :) Najlepiej nie na listę, tylko linki do nich.
 
 screenshoty to jedna sprawa. I oczywiście linki. :)
 Próbowałeś ctrl + l w sytuacji jak się coś krzaczyło? Powinno
 odświeżyć ncurses.

CTRL + L to repaint screena, a w tym nie problem. PuTTY odpalony jest w
rozmarze 80x24 (pierwszy screenshot). Przy kazdej zmianie okna wszystko
sie wyswietla bez 'krzakow', lecz ekg nie aktualizuje zmiany okna.
Jezeli zmienie rozmiar okna przy odpalonym ekg, nastapnie wyjde z ekg i
uruchomie je na nowo, nowy rozmiar jest zinterpretowany poprawnie. Poki
nie zmienie rozmiaru okna ponownie...

http://www1.kucharski.name/pub/ekg/

-- 
best regards
q#


Re: [ekg-users] EKG i window resize

2011-04-19 Wątek Adam Wysocki
On Tue, 19 Apr 2011, Mikolaj Kucharski wrote:

 CTRL + L to repaint screena, a w tym nie problem. PuTTY odpalony jest w
 rozmarze 80x24 (pierwszy screenshot). Przy kazdej zmianie okna wszystko
 sie wyswietla bez 'krzakow', lecz ekg nie aktualizuje zmiany okna.
 Jezeli zmienie rozmiar okna przy odpalonym ekg, nastapnie wyjde z ekg i
 uruchomie je na nowo, nowy rozmiar jest zinterpretowany poprawnie. Poki
 nie zmienie rozmiaru okna ponownie...

A wysłanie sygnału SIGWINCH do ekg pomaga?

Czy bez odpalonego screena problem też występuje?

-- 
gof


Re: [ekg-users] EKG i window resize

2011-04-19 Wątek kfahoo
W dniu 19 kwietnia 2011 14:41 użytkownik Adam Wysocki
go...@supermedia.plnapisał:

 On Tue, 19 Apr 2011, Mikolaj Kucharski wrote:

  CTRL + L to repaint screena, a w tym nie problem. PuTTY odpalony jest w
  rozmarze 80x24 (pierwszy screenshot). Przy kazdej zmianie okna wszystko
  sie wyswietla bez 'krzakow', lecz ekg nie aktualizuje zmiany okna.
  Jezeli zmienie rozmiar okna przy odpalonym ekg, nastapnie wyjde z ekg i
  uruchomie je na nowo, nowy rozmiar jest zinterpretowany poprawnie. Poki
  nie zmienie rozmiaru okna ponownie...

 A wysłanie sygnału SIGWINCH do ekg pomaga?

 Czy bez odpalonego screena problem też występuje?

 --
 gof


a czy przypadkiem nie odpalasz screen -x?


Re: [ekg-users] EKG i window resize

2011-04-19 Wątek Mikolaj Kucharski
On Tue, Apr 19, 2011 at 02:46:15PM +0200, kfahoo wrote:
 
 W dniu 19 kwietnia 2011 14:41 użytkownik Adam Wysocki [1]go...@supermedia.pl
 napisał:
 
 On Tue, 19 Apr 2011, Mikolaj Kucharski wrote:
  CTRL + L to repaint screena, a w tym nie problem. PuTTY odpalony jest w
  rozmarze 80x24 (pierwszy screenshot). Przy kazdej zmianie okna wszystko
  sie wyswietla bez 'krzakow', lecz ekg nie aktualizuje zmiany okna.
  Jezeli zmienie rozmiar okna przy odpalonym ekg, nastapnie wyjde z ekg i
  uruchomie je na nowo, nowy rozmiar jest zinterpretowany poprawnie. Poki
  nie zmienie rozmiaru okna ponownie...
 A wysłanie sygnału SIGWINCH do ekg pomaga?

Nie pomaga. Nic sie nie dzieje z ekg po otrzymaniu sygnalu.

$ pkill -WINCH ekg; echo $?
0


 Czy bez odpalonego screena problem też występuje?

Tak jak napisalem w moim pierwszym majlu, problem wystepuje w (golym)
puttym, w screenie i w tmuxie.

 a czy przypadkiem nie odpalasz screen -x?

Nie.

-- 
best regards
q#


Re: [ekg-users] EKG i window resize

2011-04-19 Wątek Adam Wysocki
On Tue, 19 Apr 2011, Mikolaj Kucharski wrote:

 Nie pomaga. Nic sie nie dzieje z ekg po otrzymaniu sygnalu.
 
 $ pkill -WINCH ekg; echo $?
 0

Znajdź w ui-ncurses.c miejsce:

#ifdef SIGWINCH
static void sigwinch_handler(int sig)
{
ui_need_refresh = 1;
}
#endif

i zmień na:

#ifdef SIGWINCH
static void sigwinch_handler(int sig)
{
gg_debug(GG_DEBUG_MISC, // SIGWINCH\n);
ui_need_refresh = 1;
}
#else
#error Brak SIGWINCH
#endif

To pomoże się zorientować czy SIGWINCH w ogóle jest zdefiniowany 
i czy handler jest wołany (powinno być w debugu - F12 w ekg).

-- 
gof


Re: [ekg-users] EKG i window resize

2011-04-19 Wątek Mikolaj Kucharski
On Tue, Apr 19, 2011 at 03:14:34PM +0200, Adam Wysocki wrote:
 To pomoże się zorientować czy SIGWINCH w ogóle jest zdefiniowany 
 i czy handler jest wołany (powinno być w debugu - F12 w ekg).

$ pkill -WINCH ekg; echo $?
0

w ekg widac:

15:51 // SIGWINCH


Build log:
  http://www1.kucharski.name/pub/ekg/ekg-1.7p0.log

-- 
best regards
q#


Re: [ekg-users] EKG i window resize

2011-04-19 Wątek Mikolaj Kucharski
On Tue, Apr 19, 2011 at 02:57:18PM +0100, Mikolaj Kucharski wrote:
 On Tue, Apr 19, 2011 at 03:14:34PM +0200, Adam Wysocki wrote:
  To pomoże się zorientować czy SIGWINCH w ogóle jest zdefiniowany 
  i czy handler jest wołany (powinno być w debugu - F12 w ekg).
 
 $ pkill -WINCH ekg; echo $?
 0
 
 w ekg widac:
 
 15:51 // SIGWINCH
 

Oczywiscie jak zmieniam rozmiar okna to SIGWINCH tez sie loguje na
debugowej konsoli w ekg. A tutaj patch, zeby bylo jasne co zrobilem:


@@ -2097,8 +2097,11 @@ static void update_statusbar(int commit)
 #ifdef SIGWINCH
 static void sigwinch_handler(int sig)
 {
+   gg_debug(GG_DEBUG_MISC, // SIGWINCH\n);
ui_need_refresh = 1;
 }
+#else
+#error Brak SIGWINCH
 #endif

 void save_windows()


-- 
best regards
q#


Re: [ekg-users] EKG i window resize

2011-04-19 Wątek Adam Wysocki
On Tue, 19 Apr 2011, Mikolaj Kucharski wrote:

   http://www1.kucharski.name/pub/ekg/ekg-1.7p0.log

1.7... a w wersji z svn też problem występuje?

-- 
gof


Re: [ekg-users] EKG i window resize

2011-04-19 Wątek Mikolaj Kucharski
On Tue, Apr 19, 2011 at 05:48:02PM +0200, Adam Wysocki wrote:
 On Tue, 19 Apr 2011, Mikolaj Kucharski wrote:
 
  http://www1.kucharski.name/pub/ekg/ekg-1.7p0.log
   
   1.7... a w wersji z svn też problem występuje?
  
  Czy stad moge sprobowac?
  
  http://ekg.chmurka.net/ekg-20110418.tar.gz
 
 Tak

19:02 ::: EKG - Eksperymentalny Klient Gadu-Gadu (20110418)
19:02 ::: libgadu-20110418 (protokol 0x2e, klient 10.1.0.11070)
19:02 ::: skompilowano: Apr 19 2011 18:00:17

E-e, to samo, problem nadal wystepuje podczas zmiany rozmiaru okna.

-- 
best regards
q#


Re: [ekg-users] EKG i window resize

2011-04-19 Wątek Mikolaj Kucharski
On Tue, Apr 19, 2011 at 07:13:03PM +0200, Adam Wysocki wrote:
 On Tue, 19 Apr 2011, Mikolaj Kucharski wrote:
 
  19:02 ::: EKG - Eksperymentalny Klient Gadu-Gadu (20110418)
  19:02 ::: libgadu-20110418 (protokol 0x2e, klient 10.1.0.11070)
  19:02 ::: skompilowano: Apr 19 2011 18:00:17
  
  E-e, to samo, problem nadal wystepuje podczas zmiany rozmiaru okna.
 
 Czy polecenie /_resize powoduje wtedy zmianę rozmiaru okna?

Nie. Nic sie nie dzieje.

 W ui_ncurses.c w funkcji ui_ncurses_loop jest taki if:
 
 if (ui_need_refresh) {
 ui_need_refresh = 0;
 endwin();
 refresh();
 keypad(input, TRUE);
 /* wywoła wszystko, co potrzebne */
 header_statusbar_resize(NULL);
 changed_backlog_size(backlog_size);
 
 goto redraw_prompt;
 }
 
 Dodaj przed goto:
 
 gg_debug(GG_DEBUG_MISC, // refresh\n);

Najpierw zmienilem rozmiar okna 4 razy. Nastepnie wykonalem pare razy
samo /_resize z wiersza polecen:

19:33 // SIGWINCH
19:33 // refresh
19:33 // SIGWINCH
19:33 // refresh
19:33 // SIGWINCH
19:33 // refresh
19:33 // SIGWINCH
19:33 // refresh
19:33 // refresh
19:33 // refresh
19:33 // refresh

Nic sie nie dzieje, ekg nie zmienia rozmaru okna (ekg-20110418).


--- src/ui-ncurses.c.orig   Mon Apr 18 21:00:09 2011
+++ src/ui-ncurses.cTue Apr 19 18:31:31 2011
@@ -2408,8 +2408,11 @@ static void update_statusbar(int commit)
 #ifdef SIGWINCH
 static void sigwinch_handler(int sig)
 {
+   gg_debug(GG_DEBUG_MISC, // SIGWINCH\n);
ui_need_refresh = 1;
 }
+#else
+#error Brak SIGWINCH
 #endif

 void save_windows()
@@ -4756,6 +4759,7 @@ static void ui_ncurses_loop()
header_statusbar_resize(NULL);
changed_backlog_size(backlog_size);

+   gg_debug(GG_DEBUG_MISC, // refresh\n);
goto redraw_prompt;
}


-- 
best regards
q#