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