[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#214475: affected machines



> Thanks for finding out valuable information about this bug. What is
> the reason that not all machines are affected? Your description
> sounds like slow machines should be more likely to be affected,
> because they need more time to get the work done, which occurs when
> switching the directory. However the bug has been confirmed on
> machines with quite different speed. So there must be some other
> reason why the bug doesn't appear on every machine. 

I'm not sure the speed of the machine is a factor.

I think the common elements in the scenario are that
1. a mouse click happens, causing konqueror to execute something which
   takes a lot of I/O time ( in this case, loading a different view
   plugin ), before even considering the next events.
2. the user more or less immediately releases the mouse after
   clicking, but the event gets ignored until the above I/O is
   finished.
3. when the I/O is finished, the mouse has moved a lot already
4. the next events are processed, and here we reach the problem: the
   Qt event loop first gets a big mouse movement event, and only then,
   it gets the mouse release event.  this causes konqueror to
   interpret the user's actions as the start of a drag operation.
   Thinking about it, I'm wondering why the mouse release event wasn't
   interpreted as the end of the d'n'd operation, but well, that isn't
   the case, perhaps d'n'd does a mouse grab, and only accepts events
   occuring after that ?

So I guess it's not so much the machine that has to be slow, but erm,
the I/O time caused.  The people who couldn't reproduce it, may not
have tried to reproduce it with directories that cause switching of
plugins, may have had a machine so fast, a mouse so slow, or a hand so
steady that no big enough mouse movement happened before the I/O was
finished.

> Does it depend on the version of xlibs? Are only some versions
> affected?

I have so far only tested it on xlibs 4.2.1-15

> Can you suggest a workaround?

I have no idea.  I would consider looking at the code which merges
subsequent mouse movement events, to see whether it does not try to
merge events between which a mouse release occurred, but other than
that, I can't think of anything.

cheers
domi




Reply to: