mirror of https://code.videolan.org/videolan/vlc
player: change vout events
No real functional changes. Changes the callback and enum names to reflect the real event: vout are now started and stopped. The same vout can be started and stopped several time.
This commit is contained in:
parent
2ef9ac34cf
commit
aa6d395b62
|
@ -179,8 +179,7 @@ enum vlc_player_nav
|
|||
|
||||
/**
|
||||
* Action of vlc_player_cbs.on_track_list_changed,
|
||||
* vlc_player_cbs.on_program_list_changed, and
|
||||
* vlc_player_cbs.on_vout_list_changed callbacks
|
||||
* vlc_player_cbs.on_program_list_changed callbacks
|
||||
*/
|
||||
enum vlc_player_list_action
|
||||
{
|
||||
|
@ -189,6 +188,15 @@ enum vlc_player_list_action
|
|||
VLC_PLAYER_LIST_UPDATED,
|
||||
};
|
||||
|
||||
/**
|
||||
* action of vlc_player_cbs.on_vout_changed callback
|
||||
*/
|
||||
enum vlc_player_vout_action
|
||||
{
|
||||
VLC_PLAYER_VOUT_STARTED,
|
||||
VLC_PLAYER_VOUT_STOPPED,
|
||||
};
|
||||
|
||||
/**
|
||||
* State of the player
|
||||
*
|
||||
|
@ -796,15 +804,19 @@ struct vlc_player_cbs
|
|||
input_item_t *media, input_item_node_t *new_subitems, void *data);
|
||||
|
||||
/**
|
||||
* Called when a new vout is added or removed
|
||||
* Called when a vout is started or stopped
|
||||
*
|
||||
* @note In case, several media with only one video track are played
|
||||
* successively, the same vout instance will be started and stopped several
|
||||
* time.
|
||||
*
|
||||
* @param player locked player instance
|
||||
* @param action added or removed
|
||||
* @param vout new vout
|
||||
* @param action started or stopped
|
||||
* @param vout vout (can't be NULL)
|
||||
* @param data opaque pointer set by vlc_player_AddListener()
|
||||
*/
|
||||
void (*on_vout_list_changed)(vlc_player_t *player,
|
||||
enum vlc_player_list_action action, vout_thread_t *vout, void *data);
|
||||
void (*on_vout_changed)(vlc_player_t *player,
|
||||
enum vlc_player_vout_action action, vout_thread_t *vout, void *data);
|
||||
|
||||
/**
|
||||
* Called when the player is corked
|
||||
|
@ -2607,7 +2619,7 @@ vlc_player_aout_EnableFilter(vlc_player_t *player, const char *name, bool add);
|
|||
* Get and hold the main video output
|
||||
*
|
||||
* @warning the returned vout_thread_t * must be released with vout_Release().
|
||||
* @see vlc_players_cbs.on_vout_list_changed
|
||||
* @see vlc_players_cbs.on_vout_changed
|
||||
*
|
||||
* @note The player is guaranteed to always hold one valid vout. Only vout
|
||||
* variables can be changed from this instance. The vout returned before
|
||||
|
@ -2625,7 +2637,7 @@ vlc_player_vout_Hold(vlc_player_t *player);
|
|||
* @warning All vout_thread_t * element of the array must be released with
|
||||
* vout_Release(). The returned array must be freed.
|
||||
*
|
||||
* @see vlc_players_cbs.on_vout_list_changed
|
||||
* @see vlc_players_cbs.on_vout_changed
|
||||
*
|
||||
* @param player player instance
|
||||
* @param count valid pointer to store the array count
|
||||
|
|
|
@ -102,9 +102,9 @@ vlc_module_begin ()
|
|||
set_callbacks( Open, Close )
|
||||
vlc_module_end ()
|
||||
|
||||
static void player_on_vout_list_changed(vlc_player_t *player,
|
||||
enum vlc_player_list_action action,
|
||||
vout_thread_t *vout, void *data);
|
||||
static void player_on_vout_changed(vlc_player_t *player,
|
||||
enum vlc_player_vout_action action,
|
||||
vout_thread_t *vout, void *data);
|
||||
static int MovedEvent( vlc_object_t *, char const *,
|
||||
vlc_value_t, vlc_value_t, void * );
|
||||
static int ButtonEvent( vlc_object_t *, char const *,
|
||||
|
@ -129,7 +129,7 @@ static int Open ( vlc_object_t *p_this )
|
|||
|
||||
static const struct vlc_player_cbs cbs =
|
||||
{
|
||||
.on_vout_list_changed = player_on_vout_list_changed,
|
||||
.on_vout_changed = player_on_vout_changed,
|
||||
};
|
||||
vlc_player_t *player = vlc_playlist_GetPlayer(p_sys->playlist);
|
||||
vlc_player_Lock(player);
|
||||
|
@ -387,16 +387,16 @@ static int ButtonEvent( vlc_object_t *p_this, char const *psz_var,
|
|||
}
|
||||
|
||||
static void
|
||||
player_on_vout_list_changed(vlc_player_t *player,
|
||||
enum vlc_player_list_action action,
|
||||
vout_thread_t *vout, void *data)
|
||||
player_on_vout_changed(vlc_player_t *player,
|
||||
enum vlc_player_vout_action action,
|
||||
vout_thread_t *vout, void *data)
|
||||
{
|
||||
VLC_UNUSED(player);
|
||||
intf_thread_t *intf = data;
|
||||
intf_sys_t *sys = intf->p_sys;
|
||||
switch (action)
|
||||
{
|
||||
case VLC_PLAYER_LIST_ADDED:
|
||||
case VLC_PLAYER_VOUT_STARTED:
|
||||
if (vlc_vector_push(&sys->vout_vector, vout))
|
||||
{
|
||||
vout_Hold(vout);
|
||||
|
@ -404,7 +404,7 @@ player_on_vout_list_changed(vlc_player_t *player,
|
|||
var_AddCallback(vout, "mouse-button-down", ButtonEvent, intf);
|
||||
}
|
||||
break;
|
||||
case VLC_PLAYER_LIST_REMOVED:
|
||||
case VLC_PLAYER_VOUT_STOPPED:
|
||||
for (size_t i = 0; i < sys->vout_vector.size; ++i)
|
||||
{
|
||||
vout_thread_t *it = sys->vout_vector.data[i];
|
||||
|
@ -419,6 +419,6 @@ player_on_vout_list_changed(vlc_player_t *player,
|
|||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
vlc_assert_unreachable();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1014,30 +1014,30 @@ ViewpointMovedCallback(vlc_object_t *obj, char const *var,
|
|||
}
|
||||
|
||||
static void
|
||||
player_on_vout_list_changed(vlc_player_t *player,
|
||||
enum vlc_player_list_action action,
|
||||
vout_thread_t *vout,
|
||||
void *data)
|
||||
player_on_vout_changed(vlc_player_t *player,
|
||||
enum vlc_player_vout_action action, vout_thread_t *vout,
|
||||
void *data)
|
||||
{
|
||||
if (action == VLC_PLAYER_LIST_UPDATED)
|
||||
return;
|
||||
intf_thread_t *intf = data;
|
||||
bool vrnav = var_GetBool(vout, "viewpoint-changeable");
|
||||
if (action == VLC_PLAYER_LIST_ADDED)
|
||||
switch (action)
|
||||
{
|
||||
case VLC_PLAYER_VOUT_STARTED:
|
||||
var_AddCallback(vout, "mouse-button-down", MouseButtonCallback, intf);
|
||||
var_AddCallback(vout, "mouse-moved", MouseMovedCallback, intf->p_sys);
|
||||
if (vrnav)
|
||||
var_AddCallback(vout, "viewpoint-moved",
|
||||
ViewpointMovedCallback, player);
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
case VLC_PLAYER_VOUT_STOPPED:
|
||||
var_DelCallback(vout, "mouse-button-down", MouseButtonCallback, intf);
|
||||
var_DelCallback(vout, "mouse-moved", MouseMovedCallback, intf->p_sys);
|
||||
if (vrnav)
|
||||
var_DelCallback(vout, "viewpoint-moved",
|
||||
ViewpointMovedCallback, player);
|
||||
break;
|
||||
default:
|
||||
vlc_assert_unreachable();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1065,7 +1065,7 @@ Open(vlc_object_t *this)
|
|||
sys->playlist = vlc_intf_GetMainPlaylist(intf);
|
||||
static struct vlc_player_cbs const player_cbs =
|
||||
{
|
||||
.on_vout_list_changed = player_on_vout_list_changed,
|
||||
.on_vout_changed = player_on_vout_changed,
|
||||
};
|
||||
vlc_player_t *player = vlc_playlist_GetPlayer(sys->playlist);
|
||||
vlc_player_Lock(player);
|
||||
|
|
|
@ -426,10 +426,10 @@ static void cb_player_item_meta_changed(vlc_player_t *p_player,
|
|||
});
|
||||
}
|
||||
|
||||
static void cb_player_vout_list_changed(vlc_player_t *p_player,
|
||||
enum vlc_player_list_action action,
|
||||
vout_thread_t *p_vout,
|
||||
void *p_data)
|
||||
static void cb_player_vout_changed(vlc_player_t *p_player,
|
||||
enum vlc_player_vout_action action,
|
||||
vout_thread_t *p_vout,
|
||||
void *p_data)
|
||||
{
|
||||
VLC_UNUSED(p_player);
|
||||
VLC_UNUSED(p_vout);
|
||||
|
@ -471,7 +471,7 @@ static const struct vlc_player_cbs player_callbacks = {
|
|||
cb_player_item_meta_changed,
|
||||
NULL, //cb_player_item_epg_changed,
|
||||
NULL, //cb_player_subitems_changed,
|
||||
cb_player_vout_list_changed,
|
||||
cb_player_vout_changed,
|
||||
NULL, //on_cork_changed
|
||||
};
|
||||
|
||||
|
|
|
@ -706,7 +706,7 @@ static void on_player_subitems_changed(vlc_player_t *, input_item_t *, input_ite
|
|||
}
|
||||
|
||||
|
||||
static void on_player_vout_list_changed(vlc_player_t *player, enum vlc_player_list_action, vout_thread_t *, void *data)
|
||||
static void on_player_vout_changed(vlc_player_t *player, enum vlc_player_vout_action, vout_thread_t *, void *data)
|
||||
{
|
||||
PlayerControllerPrivate* that = static_cast<PlayerControllerPrivate*>(data);
|
||||
msg_Dbg( that->p_intf, "on_player_vout_list_changed");
|
||||
|
@ -827,7 +827,7 @@ static const struct vlc_player_cbs player_cbs = {
|
|||
on_player_media_meta_changed,
|
||||
on_player_media_epg_changed,
|
||||
on_player_subitems_changed,
|
||||
on_player_vout_list_changed,
|
||||
on_player_vout_changed,
|
||||
on_player_corks_changed
|
||||
};
|
||||
|
||||
|
|
|
@ -1803,8 +1803,8 @@ vlc_player_input_HandleVoutEvent(struct vlc_player_input *input,
|
|||
switch (ev->action)
|
||||
{
|
||||
case VLC_INPUT_EVENT_VOUT_ADDED:
|
||||
vlc_player_SendEvent(player, on_vout_list_changed,
|
||||
VLC_PLAYER_LIST_ADDED, ev->vout);
|
||||
vlc_player_SendEvent(player, on_vout_changed,
|
||||
VLC_PLAYER_VOUT_STARTED, ev->vout);
|
||||
|
||||
/* Register vout callbacks after the vout list event */
|
||||
var_AddCallback(ev->vout, "fullscreen",
|
||||
|
@ -1825,8 +1825,8 @@ vlc_player_input_HandleVoutEvent(struct vlc_player_input *input,
|
|||
var_DelCallback(ev->vout, osd_vars[i],
|
||||
vlc_player_VoutOSDCallback, player);
|
||||
|
||||
vlc_player_SendEvent(player, on_vout_list_changed,
|
||||
VLC_PLAYER_LIST_REMOVED, ev->vout);
|
||||
vlc_player_SendEvent(player, on_vout_changed,
|
||||
VLC_PLAYER_VOUT_STOPPED, ev->vout);
|
||||
break;
|
||||
default:
|
||||
vlc_assert_unreachable();
|
||||
|
|
|
@ -108,7 +108,7 @@ struct report_media_subitems
|
|||
X(bool, on_recording_changed) \
|
||||
X(struct report_signal, on_signal_changed) \
|
||||
X(struct input_stats_t, on_statistics_changed) \
|
||||
X(struct report_vout_list, on_vout_list_changed) \
|
||||
X(struct report_vout_list, on_vout_changed) \
|
||||
X(input_item_t *, on_media_meta_changed) \
|
||||
X(input_item_t *, on_media_epg_changed) \
|
||||
X(struct report_media_subitems, on_media_subitems_changed) \
|
||||
|
@ -438,7 +438,7 @@ player_on_statistics_changed(vlc_player_t *player,
|
|||
}
|
||||
|
||||
static void
|
||||
player_on_vout_list_changed(vlc_player_t *player,
|
||||
player_on_vout_changed(vlc_player_t *player,
|
||||
enum vlc_player_list_action action,
|
||||
vout_thread_t *vout, void *data)
|
||||
{
|
||||
|
@ -448,7 +448,7 @@ player_on_vout_list_changed(vlc_player_t *player,
|
|||
.vout = vout,
|
||||
};
|
||||
vout_Hold(vout);
|
||||
VEC_PUSH(on_vout_list_changed, report);
|
||||
VEC_PUSH(on_vout_changed, report);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -575,7 +575,7 @@ ctx_reset(struct ctx *ctx)
|
|||
|
||||
{
|
||||
struct report_vout_list report;
|
||||
FOREACH_VEC(report, on_vout_list_changed)
|
||||
FOREACH_VEC(report, on_vout_changed)
|
||||
vout_Release(report.vout);
|
||||
}
|
||||
|
||||
|
@ -872,21 +872,21 @@ test_end_poststop_titles(struct ctx *ctx)
|
|||
static void
|
||||
test_end_poststop_vouts(struct ctx *ctx)
|
||||
{
|
||||
vec_on_vout_list_changed *vec = &ctx->report.on_vout_list_changed;
|
||||
vec_on_vout_changed *vec = &ctx->report.on_vout_changed;
|
||||
|
||||
size_t vout_added = 0, vout_removed = 0;
|
||||
size_t vout_started = 0, vout_stopped = 0;
|
||||
|
||||
struct report_vout_list report;
|
||||
vlc_vector_foreach(report, vec)
|
||||
{
|
||||
if (report.action == VLC_PLAYER_LIST_ADDED)
|
||||
vout_added++;
|
||||
else if (report.action == VLC_PLAYER_LIST_REMOVED)
|
||||
vout_removed++;
|
||||
if (report.action == VLC_PLAYER_VOUT_STARTED)
|
||||
vout_started++;
|
||||
else if (report.action == VLC_PLAYER_VOUT_STOPPED)
|
||||
vout_stopped++;
|
||||
else
|
||||
vlc_assert_unreachable();
|
||||
}
|
||||
assert(vout_added == vout_removed);
|
||||
assert(vout_started == vout_stopped);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue