vlc | branch: master | Thomas Guillem <[email protected]> | Wed Nov 30 11:56:46 2016 +0100| [a695036a527ca8256ae824d65440d8a58c0970e8] | committer: Thomas Guillem
vout: xcb: window: implement VOUT_WINDOW_HIDE_MOUSE Ref #9787 > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a695036a527ca8256ae824d65440d8a58c0970e8 --- modules/video_output/xcb/window.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/modules/video_output/xcb/window.c b/modules/video_output/xcb/window.c index c4c6275..4aac15f 100644 --- a/modules/video_output/xcb/window.c +++ b/modules/video_output/xcb/window.c @@ -46,6 +46,8 @@ struct vout_window_sys_t key_handler_t *keys; vlc_thread_t thread; + xcb_cursor_t cursor; /* blank cursor */ + xcb_window_t root; xcb_atom_t wm_state; xcb_atom_t wm_state_above; @@ -219,6 +221,14 @@ static int Control (vout_window_t *wnd, int cmd, va_list ap) change_wm_state (wnd, fs, p_sys->wm_state_fullscreen); break; } + case VOUT_WINDOW_HIDE_MOUSE: + { + xcb_cursor_t cursor = (va_arg (ap, int) ? p_sys->cursor + : XCB_CURSOR_NONE); + xcb_change_window_attributes (p_sys->conn, wnd->handle.xid, + XCB_CW_CURSOR, &(uint32_t){ cursor }); + break; + } default: msg_Err (wnd, "request %d not implemented", cmd); @@ -299,6 +309,18 @@ xcb_atom_t get_atom (xcb_connection_t *conn, xcb_intern_atom_cookie_t ck) return atom; } +static +xcb_cursor_t CursorCreate(xcb_connection_t *conn, + const xcb_screen_t *scr) +{ + xcb_cursor_t cur = xcb_generate_id (conn); + xcb_pixmap_t pix = xcb_generate_id (conn); + + xcb_create_pixmap (conn, 1, pix, scr->root, 1, 1); + xcb_create_cursor (conn, cur, pix, pix, 0, 0, 0, 0, 0, 0, 1, 1); + return cur; +} + static void CacheAtoms (vout_window_sys_t *p_sys) { xcb_connection_t *conn = p_sys->conn; @@ -474,6 +496,9 @@ static int Open (vout_window_t *wnd, const vout_window_cfg_t *cfg) goto error; } + /* Create cursor */ + p_sys->cursor = CursorCreate(conn, scr); + xcb_flush (conn); /* Make sure map_window is sent (should be useless) */ return VLC_SUCCESS; @@ -497,6 +522,11 @@ static void Close (vout_window_t *wnd) vlc_join (p_sys->thread, NULL); if (p_sys->keys != NULL) XCB_keyHandler_Destroy (p_sys->keys); + + /* show the default cursor */ + xcb_change_window_attributes (p_sys->conn, wnd->handle.xid, XCB_CW_CURSOR, + &(uint32_t) { XCB_CURSOR_NONE }); + xcb_disconnect (conn); free (wnd->display.x11); free (p_sys); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
