vlc | branch: master | Steve Lhomme <rob...@videolabs.io> | Wed Aug 9 14:42:28 2017 +0200| [71b960edce1961aa6f9742886dc5970ebe1f78fb] | committer: Jean-Baptiste Kempf
vout:win32: hide the mouse if it has been inactive for too long Use a timer tied to the HWND. Fix #17819 Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=71b960edce1961aa6f9742886dc5970ebe1f78fb --- modules/video_output/win32/events.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/modules/video_output/win32/events.c b/modules/video_output/win32/events.c index d298d4b49d..30fe3f7b49 100644 --- a/modules/video_output/win32/events.c +++ b/modules/video_output/win32/events.c @@ -72,6 +72,8 @@ struct event_thread_t HCURSOR cursor_arrow; HCURSOR cursor_empty; unsigned button_pressed; + mtime_t hide_timeout; + mtime_t last_moved; /* Gestures */ win32_gesture_sys_t *p_gesture; @@ -119,6 +121,20 @@ static HCURSOR EmptyCursor( HINSTANCE instance ); static void MouseReleased( event_thread_t *p_event, unsigned button ); static void MousePressed( event_thread_t *p_event, HWND hwnd, unsigned button ); +static void CALLBACK HideMouse(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) +{ + VLC_UNUSED(hwnd); VLC_UNUSED(uMsg); VLC_UNUSED(dwTime); + event_thread_t *p_event = (event_thread_t *)idEvent; + UpdateCursor( p_event, false ); +} + +static void UpdateCursorMoved( event_thread_t *p_event ) +{ + UpdateCursor( p_event, true ); + p_event->last_moved = mdate(); + SetTimer( p_event->hwnd, (UINT_PTR)p_event, p_event->hide_timeout, HideMouse ); +} + /* Local helpers */ static inline bool isMouseEvent( WPARAM type ) { @@ -211,12 +227,12 @@ static void *EventThread( void *p_this ) (abs(mouse_pos.y - old_mouse_pos.y)) > 2 ) ) { old_mouse_pos = mouse_pos; - UpdateCursor( p_event, true ); + UpdateCursorMoved( p_event ); } } else if( isMouseEvent( msg.message ) ) { - UpdateCursor( p_event, true ); + UpdateCursorMoved( p_event ); } else if( msg.message == WM_VLC_HIDE_MOUSE ) { @@ -709,6 +725,8 @@ static int Win32VoutCreateWindow( event_thread_t *p_event ) { p_event->vlc_icon = ExtractIcon( hInstance, vlc_path, 0 ); } + p_event->hide_timeout = var_InheritInteger( p_event->vd, "mouse-hide-timeout" ); + UpdateCursorMoved( p_event ); /* Fill in the window class structure */ wc.style = CS_OWNDC|CS_DBLCLKS; /* style: dbl click */ _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits