[vlc-devel] [vlc-commits] commit: Fixed mouse buttons state for msw vouts (close #3519). ( Laurent Aimar )

Laurent Aimar fenrir at elivagar.org
Sun Jun 13 14:34:49 CEST 2010


On Sun, 2010-06-13 at 10:36 +0200, brezhoneg1 wrote:
> Hi,
>       * [vlc-commits] commit: Fixed mouse buttons state for msw vouts
>         (close #3519). ( Laurent Aimar )
> > vlc/vlc-1.1 | branch: master | Laurent Aimar <fenrir at videolan.org> | Sun Jun 13 00:44:31 2010 +0200| [0e9bb2b6027e3327cf00694cfef5aaa76f446602] | committer: Jean-Baptiste Kempf 
> > 
> > Fixed mouse buttons state for msw vouts (close #3519).
> > 
> > Used SetCapture/ReleaseCapture to emulate what x11 seems to do by default.
> > (cherry picked from commit 2a1f2f0bf5f14963417fb758910db478ac407a62)
> >   
> 
>    These mouse input quirks are most probably due to the GUI being
> managed by mainly two (even three) different threads
 In this case, I don't think so.
It's just that by default, MSW and X11 do not handle the mouse buttons
the same way (The issue is present even without the qt4 interface).

>            - the main GUI thread (qt4)  (owner of the parent windows)
>            - the background thread (msw) (owner of the hwnd and
> hvideownd subwindows)
>            - the vout thread (some windows interaction via
> vout_display_Control)
> 
>    Mouse input is a part of the win32 api that is subject to a set of
> warnings/limitations in a multiple thread (multiple event loops)
> environment (cf msdn doc)
> 
>    In addition, multiple threads prevent libvlc developers from easily
> (and legitimately) accessing mouse events when the mouse is over the
> video.
 Yes I know, but I don't have the time/will to work on another solution
myself.
>    Imho, a clean solution would be to merge the two main threads (qt4
> and msw) in a single one, i.e one single event loop, that just
> dispatches messages to their right window procedures. The third thread
> is less of a problem, but still part of the equation (beware of
> blocking calls)
> 
>    I do have a patch that does the following : 
> 
>     - extend vout_window_t  to request the vout window provider (qt4,
> skins2, libvlc dev thread, ...) thread to execute the code that is
> currently executed by the msw thread (basically, subwindows creation
> and configuration)
>     - Since there is now only one single event loop, move message
> management in Windows Procs.
> 
>   This patch works satisfactorily. It just needs to be updated with
> latest vlc1.2 changes in msw. If this approach is deemed worth, I can
> update it and send it on this ml for review.
 Could you just send the current patch that you have? This way I could
see what you mean exactly and the consequences.

-- 
fenrir




More information about the vlc-devel mailing list