mirror of https://github.com/mpv-player/mpv
introduced new MP_CMD_DVDNAV_MOUSECLICK command (bound to mouse0);
it's used to activate the button corresponding to the last mouse position. This is a workaround against possibly buggy implementation of upper_lower/upper_button_select() and friends; will be removed when possible git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@19918 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
d7f2d69dd0
commit
b578d8ccbf
|
@ -317,7 +317,7 @@ static mp_cmd_bind_t def_cmd_binds[] = {
|
|||
{ { KEY_KP6, 0 }, "dvdnav 4" }, // right
|
||||
{ { KEY_KP5, 0 }, "dvdnav 5" }, // menu
|
||||
{ { KEY_KPENTER, 0 }, "dvdnav 6" }, // select
|
||||
{ { MOUSE_BTN0, 0 }, "dvdnav 6" }, //select
|
||||
{ { MOUSE_BTN0, 0 }, "dvdnav 8" }, //select
|
||||
{ { KEY_KP7, 0 }, "dvdnav 7" }, // previous menu
|
||||
#endif
|
||||
|
||||
|
|
|
@ -113,6 +113,7 @@
|
|||
#define MP_CMD_DVDNAV_MENU 5
|
||||
#define MP_CMD_DVDNAV_SELECT 6
|
||||
#define MP_CMD_DVDNAV_PREVMENU 7
|
||||
#define MP_CMD_DVDNAV_MOUSECLICK 8
|
||||
|
||||
/// Console commands
|
||||
#define MP_CMD_CHELP 7000
|
||||
|
|
|
@ -362,6 +362,16 @@ int mp_dvdnav_handle_input(stream_t *stream, int cmd, int *button) {
|
|||
status = dvdnav_button_activate(nav, pci);
|
||||
if(status == DVDNAV_STATUS_OK) reset = 1;
|
||||
break;
|
||||
case MP_CMD_DVDNAV_MOUSECLICK:
|
||||
/*
|
||||
this is a workaround: in theory the simple dvdnav_lower_button_select()+dvdnav_button_activate()
|
||||
should be enough (and generally it is), but there are cases when the calls to dvdnav_lower_button_select()
|
||||
and friends fail! Hence we have to call dvdnav_mouse_activate(priv->mousex, priv->mousey) with
|
||||
the coodinates saved by mp_dvdnav_update_mouse_pos().
|
||||
This last call always works well
|
||||
*/
|
||||
status = dvdnav_mouse_activate(nav, pci, dvdnav_priv->mousex, dvdnav_priv->mousey);
|
||||
break;
|
||||
default:
|
||||
mp_msg(MSGT_CPLAYER, MSGL_V, "Unknown DVDNAV cmd %d\n", cmd);
|
||||
break;
|
||||
|
@ -384,6 +394,8 @@ void mp_dvdnav_update_mouse_pos(stream_t *stream, int32_t x, int32_t y, int* but
|
|||
status = dvdnav_mouse_select(nav, pci, x, y);
|
||||
if(status == DVDNAV_STATUS_OK) dvdnav_get_current_highlight(nav, button);
|
||||
else *button = -1;
|
||||
dvdnav_priv->mousex = x;
|
||||
dvdnav_priv->mousey = y;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ typedef struct {
|
|||
unsigned char prebuf[STREAM_BUFFER_SIZE]; /* prefill buffer */
|
||||
int prelen; /* length of prefill buffer */
|
||||
unsigned int duration; /* in milliseconds */
|
||||
int mousex, mousey;
|
||||
} dvdnav_priv_t;
|
||||
|
||||
extern int dvd_nav_still;
|
||||
|
|
Loading…
Reference in New Issue