X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fvideo_output%2Fmsw%2Fevents.c;h=1945b129c00296b3880758a5e22d1dfa3c9612b0;hb=a63296bc50dcf9f421863d509709f5e4b7b2902f;hp=81822418e04de633d51890d125d7c0fcf7895934;hpb=8cf3097c11fc14bf254bb5595d70d601fb6188b7;p=vlc diff --git a/modules/video_output/msw/events.c b/modules/video_output/msw/events.c index 81822418e0..1945b129c0 100644 --- a/modules/video_output/msw/events.c +++ b/modules/video_output/msw/events.c @@ -129,6 +129,18 @@ static long FAR PASCAL DirectXEventProc( HWND, UINT, WPARAM, LPARAM ); static int DirectXConvertKey( int i_key ); +static inline bool isMouseEvent( WPARAM type ) +{ + return type >= WM_MOUSEFIRST && + type <= WM_MOUSELAST; +} + +static inline bool isKeyEvent( WPARAM type ) +{ + return type >= WM_KEYFIRST && + type <= WM_KEYLAST; +} + /***************************************************************************** * EventThread: Create video window & handle its messages ***************************************************************************** @@ -146,6 +158,9 @@ static void *EventThread( void *p_this ) HMODULE hkernel32; int canc = vlc_savecancel (); + bool b_mouse_support = var_InheritBool( p_event->vd, "mouse-events" ); + bool b_key_support = var_InheritBool( p_event->vd, "keyboard-events" ); + vlc_mutex_lock( &p_event->lock ); /* Create a window for the video */ /* Creating a window under Windows also initializes the thread's event @@ -204,6 +219,12 @@ static void *EventThread( void *p_this ) if( b_done ) break; + if( !b_mouse_support && isMouseEvent( msg.message ) ) + continue; + + if( !b_key_support && isKeyEvent( msg.message ) ) + continue; + /* */ switch( msg.message ) { @@ -507,8 +528,8 @@ static int DirectXCreateWindow( event_thread_t *p_event ) * have. Unfortunatly these dimensions will include the borders and * titlebar. We use the following function to find out the size of * the window corresponding to the useable surface we want */ - rect_window.top = 10; rect_window.left = 10; + rect_window.top = 10; rect_window.right = rect_window.left + p_event->wnd_cfg.width; rect_window.bottom = rect_window.top + p_event->wnd_cfg.height; @@ -542,9 +563,9 @@ static int DirectXCreateWindow( event_thread_t *p_event ) _T("VLC DirectX"), /* name of window class */ _T(VOUT_TITLE) _T(" (DirectX Output)"), /* window title */ i_style, /* window style */ - (p_event->wnd_cfg.x < 0) ? CW_USEDEFAULT : + (!p_event->wnd_cfg.x) ? CW_USEDEFAULT : (UINT)p_event->wnd_cfg.x, /* default X coordinate */ - (p_event->wnd_cfg.y < 0) ? CW_USEDEFAULT : + (!p_event->wnd_cfg.y) ? CW_USEDEFAULT : (UINT)p_event->wnd_cfg.y, /* default Y coordinate */ rect_window.right - rect_window.left, /* window width */ rect_window.bottom - rect_window.top, /* window height */