Find file dialog in mc-4.6.0-pre3

Pavel Tsekov ptsekov at gmx.net
Mon Jan 27 09:25:51 UTC 2003


Hello,

Thanks, for tracking this down! I guess I was the one responsible for this
bug being introduced.

On Sun, 26 Jan 2003, Arpi wrote:

> Hi,
> 
> > I've scanned a TODO list and found the item -
> > "Make find dialog more responsive" - inside
> > "After 4.6.1 on 4.6.x branch" section.
> > 
> > But I think the responsiveness of the dialog is unacceptable for the
> > 4.6.0 release. I missed the moment when it became so bad, (may be 1-3
> 
> I agree.
> 
> So i went and hunted down the bug :)
> It's a nice 100l one, said in MPlayer terminology...
> 
> In src/key.c, the is_idle() function is broken.
> It's called by the dialog loop (used by Find File too) to decide if
> call the callback fv (search for files) or handle the key/mouse events.
> 
> The original code ends this way:
> 
>     timeout.tv_sec = 0;
>     timeout.tv_usec = 0;
>     select (maxfdp, &select_set, 0, 0, &timeout);
>     return !FD_ISSET (0, &select_set);
> 
> which is, according to 'man select' broken at 2 points:
> 
>        int  select(int  n,  fd_set  *readfds,  fd_set  *writefds,
>        fd_set *exceptfds, struct timeval *timeout);
> 
>        n is the highest-numbered descriptor in any of  the  three
>        sets, plus 1.
>              ^^^^^^
> so it should be:
> 
>     select (maxfdp+1, &select_set, 0, 0, &timeout);
> 
> this may work on some select() implementations, i've heard that some ignores
> the first parameter and calculates it from the fd sets. but it's better fixed.
> 
> and:
> 
>        FD_ISSET(int fd, fd_set *set);
> 
>        FD_ISSET  tests  to  see  if  a
>        descriptor is part of the set; this is useful after select
>        returns.
> 
> so it should be:
> 
>     return !FD_ISSET (input_fd, &select_set);
> 
> (the original code works only if input_fd==0)
> 
> after changing these, find is responsive again!
> 
> btw, NOTE: i didn't handled the gpm events, they need extra code,
> so the current is_idle() should be changed deep. I've just summarized
> the idea about the bug. If you want, i can prepare a commitable patch.
> 
> 
> A'rpi / Astral & ESP-team
> 
> --
> Developer of MPlayer, the Movie Player for Linux - http://www.MPlayerHQ.hu
> _______________________________________________
> Mc-devel mailing list
> Mc-devel at gnome.org
> http://mail.gnome.org/mailman/listinfo/mc-devel
> 
> 




More information about the mc-devel mailing list