Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
c2785e60
Commit
c2785e60
authored
Feb 20, 2011
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove legacy xcb-keysyms support
Special credits to Debian for releasing Squeeze.
parent
0aa7bd8a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
19 additions
and
75 deletions
+19
-75
configure.ac
configure.ac
+3
-13
modules/control/globalhotkeys/xcb.c
modules/control/globalhotkeys/xcb.c
+16
-62
No files found.
configure.ac
View file @
c2785e60
...
...
@@ -3200,24 +3200,14 @@ AS_IF([test "${enable_xcb}" != "no"], [
dnl xcb-utils
PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [
have_xcb_keysyms="yes"
], [
PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms], [
have_xcb_keysyms="yes"
VLC_ADD_CFLAGS([globalhotkeys], [-DXCB_KEYSYM_OLD_API])
], [
have_xcb_keysyms="no"
need_xid_provider="yes"
AC_MSG_WARN([libxcb-keysyms not found. Hotkeys will not be supported.])
])
])
AS_IF([test "${have_xcb_keysyms}" = "yes"], [
PKG_CHECK_MODULES(XPROTO, [xproto])
VLC_ADD_PLUGIN([globalhotkeys])
VLC_ADD_CFLAGS([globalhotkeys], [${XCB_KEYSYMS_CFLAGS} ${XCB_CFLAGS}])
VLC_ADD_LIBS([globalhotkeys], [${XCB_KEYSYMS_LIBS} ${XCB_LIBS}])
VLC_ADD_CFLAGS([xcb_window], [-DHAVE_XCB_KEYSYMS])
], [
need_xid_provider="yes"
AC_MSG_WARN([libxcb-keysyms (0.3.4 or later) not found. Hotkeys will work.])
])
])
AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
...
...
modules/control/globalhotkeys/xcb.c
View file @
c2785e60
...
...
@@ -56,11 +56,7 @@ vlc_module_end()
typedef
struct
{
#ifdef XCB_KEYSYM_OLD_API
/* as seen in Debian Lenny */
xcb_keycode_t
i_x11
;
#else
xcb_keycode_t
*
p_keys
;
#endif
unsigned
i_modifier
;
uint32_t
i_vlc
;
}
hotkey_mapping_t
;
...
...
@@ -130,11 +126,11 @@ static int Open( vlc_object_t *p_this )
if
(
vlc_clone
(
&
p_sys
->
thread
,
Thread
,
p_intf
,
VLC_THREAD_PRIORITY_LOW
)
)
{
#ifndef XCB_KEYSYM_OLD_API
/* as seen in Debian Lenny */
if
(
p_sys
->
p_map
)
{
free
(
p_sys
->
p_map
->
p_keys
);
#endif
free
(
p_sys
->
p_map
);
free
(
p_sys
->
p_map
);
}
goto
error
;
}
return
VLC_SUCCESS
;
...
...
@@ -161,12 +157,11 @@ static void Close( vlc_object_t *p_this )
vlc_cancel
(
p_sys
->
thread
);
vlc_join
(
p_sys
->
thread
,
NULL
);
#ifndef XCB_KEYSYM_OLD_API
/* as seen in Debian Lenny */
if
(
p_sys
->
p_map
)
{
free
(
p_sys
->
p_map
->
p_keys
);
#endif
free
(
p_sys
->
p_map
);
free
(
p_sys
->
p_map
);
}
xcb_key_symbols_free
(
p_sys
->
p_symbols
);
xcb_disconnect
(
p_sys
->
p_connection
);
free
(
p_sys
);
...
...
@@ -186,11 +181,6 @@ static unsigned GetModifier( xcb_connection_t *p_connection, xcb_key_symbols_t *
if
(
sym
==
0
)
return
0
;
/* no modifier */
#ifdef XCB_KEYSYM_OLD_API
/* as seen in Debian Lenny */
const
xcb_keycode_t
key
=
xcb_key_symbols_get_keycode
(
p_symbols
,
sym
);
if
(
key
==
0
)
return
0
;
#else
const
xcb_keycode_t
*
p_keys
=
xcb_key_symbols_get_keycode
(
p_symbols
,
sym
);
if
(
!
p_keys
)
return
0
;
...
...
@@ -209,7 +199,6 @@ static unsigned GetModifier( xcb_connection_t *p_connection, xcb_key_symbols_t *
if
(
no_modifier
)
return
0
;
#endif
xcb_get_modifier_mapping_cookie_t
r
=
xcb_get_modifier_mapping
(
p_connection
);
...
...
@@ -224,20 +213,12 @@ static unsigned GetModifier( xcb_connection_t *p_connection, xcb_key_symbols_t *
for
(
int
i
=
0
;
i
<
8
;
i
++
)
for
(
int
j
=
0
;
j
<
p_map
->
keycodes_per_modifier
;
j
++
)
#ifdef XCB_KEYSYM_OLD_API
/* as seen in Debian Lenny */
if
(
p_keycode
[
i
*
p_map
->
keycodes_per_modifier
+
j
]
==
key
)
{
free
(
p_map
);
return
pi_mask
[
i
];
}
#else
for
(
int
k
=
0
;
p_keys
[
k
]
!=
XCB_NO_SYMBOL
;
k
++
)
if
(
p_keycode
[
i
*
p_map
->
keycodes_per_modifier
+
j
]
==
p_keys
[
k
])
{
free
(
p_map
);
return
pi_mask
[
i
];
}
#endif
free
(
p_map
);
// FIXME to check
return
0
;
...
...
@@ -319,15 +300,11 @@ static bool Mapping( intf_thread_t *p_intf )
if
(
i_vlc_key
==
KEY_UNSET
)
continue
;
#ifdef XCB_KEYSYM_OLD_API
/* as seen in Debian Lenny */
const
xcb_keycode_t
key
=
xcb_key_symbols_get_keycode
(
p_sys
->
p_symbols
,
GetX11Key
(
i_vlc_key
&
~
KEY_MODIFIER
)
);
#else
xcb_keycode_t
*
p_keys
=
xcb_key_symbols_get_keycode
(
p_sys
->
p_symbols
,
GetX11Key
(
i_vlc_key
&
~
KEY_MODIFIER
)
);
if
(
!
p_keys
)
continue
;
#endif
const
unsigned
i_modifier
=
GetX11Modifier
(
p_sys
->
p_connection
,
p_sys
->
p_symbols
,
i_vlc_key
&
KEY_MODIFIER
);
...
...
@@ -350,11 +327,7 @@ static bool Mapping( intf_thread_t *p_intf )
}
hotkey_mapping_t
*
p_map
=
&
p_sys
->
p_map
[
p_sys
->
i_map
++
];
#ifdef XCB_KEYSYM_OLD_API
/* as seen in Debian Lenny */
p_map
->
i_x11
=
key
;
#else
p_map
->
p_keys
=
p_keys
;
#endif
p_map
->
i_modifier
=
i_modifier
|
i_ignored
;
p_map
->
i_vlc
=
i_vlc_key
;
active
=
true
;
...
...
@@ -370,18 +343,12 @@ static void Register( intf_thread_t *p_intf )
for
(
int
i
=
0
;
i
<
p_sys
->
i_map
;
i
++
)
{
const
hotkey_mapping_t
*
p_map
=
&
p_sys
->
p_map
[
i
];
#ifdef XCB_KEYSYM_OLD_API
/* as seen in Debian Lenny */
xcb_grab_key
(
p_sys
->
p_connection
,
true
,
p_sys
->
root
,
p_map
->
i_modifier
,
p_map
->
i_x11
,
XCB_GRAB_MODE_ASYNC
,
XCB_GRAB_MODE_ASYNC
);
#else
for
(
int
j
=
0
;
p_map
->
p_keys
[
j
]
!=
XCB_NO_SYMBOL
;
j
++
)
{
xcb_grab_key
(
p_sys
->
p_connection
,
true
,
p_sys
->
root
,
p_map
->
i_modifier
,
p_map
->
p_keys
[
j
],
XCB_GRAB_MODE_ASYNC
,
XCB_GRAB_MODE_ASYNC
);
}
#endif
}
}
...
...
@@ -427,29 +394,16 @@ static void *Thread( void *p_data )
{
hotkey_mapping_t
*
p_map
=
&
p_sys
->
p_map
[
i
];
#ifdef XCB_KEYSYM_OLD_API
/* as seen in Debian Lenny */
if
(
p_map
->
i_x11
==
e
->
detail
&&
p_map
->
i_modifier
==
e
->
state
)
{
var_SetInteger
(
p_intf
->
p_libvlc
,
"global-key-pressed"
,
p_map
->
i_vlc
);
break
;
}
#else
bool
loop_break
=
false
;
for
(
int
j
=
0
;
p_map
->
p_keys
[
j
]
!=
XCB_NO_SYMBOL
;
j
++
)
if
(
p_map
->
p_keys
[
j
]
==
e
->
detail
&&
p_map
->
i_modifier
==
e
->
state
)
{
var_SetInteger
(
p_intf
->
p_libvlc
,
"global-key-pressed"
,
p_map
->
i_vlc
);
loop_break
=
true
;
break
;
}
if
(
loop_break
)
break
;
#endif
for
(
int
j
=
0
;
p_map
->
p_keys
[
j
]
!=
XCB_NO_SYMBOL
;
j
++
)
if
(
p_map
->
p_keys
[
j
]
==
e
->
detail
&&
p_map
->
i_modifier
==
e
->
state
)
{
var_SetInteger
(
p_intf
->
p_libvlc
,
"global-key-pressed"
,
p_map
->
i_vlc
);
goto
done
;
}
}
done:
free
(
p_event
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment