libvlc_MediaInstancePlayed,
libvlc_MediaInstancePaused,
libvlc_MediaInstanceReachedEnd,
+ libvlc_MediaInstanceTimeChanged,
libvlc_MediaInstancePositionChanged,
libvlc_MediaListItemAdded,
/* media instance */
struct
{
- long int new_position;
+ float new_position;
} media_instance_position_changed;
+ struct
+ {
+ long int new_time;
+ } media_instance_time_changed;
/* media list */
struct
libvlc_media_descriptor_t * item;
int index;
} media_list_view_will_delete_item;
- /* media list view */
+
+ /* media discoverer */
struct
{
void * unused;
EVENT(libvlc_MediaDescriptorDurationChanged),
EVENT(libvlc_MediaDescriptorPreparsedChanged),
EVENT(libvlc_MediaDescriptorFreed),
+ EVENT(libvlc_MediaDescriptorStateChanged),
EVENT(libvlc_MediaInstancePlayed),
EVENT(libvlc_MediaInstancePaused),
EVENT(libvlc_MediaInstanceReachedEnd),
+ EVENT(libvlc_MediaInstanceTimeChanged),
EVENT(libvlc_MediaInstancePositionChanged),
EVENT(libvlc_MediaListItemAdded),
EVENT(libvlc_MediaListPlayerPlayed),
EVENT(libvlc_MediaListPlayerNextItemSet),
- EVENT(libvlc_MediaListPlayerStopped)
+ EVENT(libvlc_MediaListPlayerStopped),
+
+ EVENT(libvlc_MediaDiscovererStarted),
+ EVENT(libvlc_MediaDiscovererEnded)
#undef EVENT
};
static const char * unkwown_event_name = "Unknown Event";
{
if( event_type >= sizeof(event_type_to_name)/sizeof(event_type_to_name[0]))
return unkwown_event_name;
- return strdup(event_type_to_name[event_type]);
+ return event_type_to_name[event_type];
}
/**************************************************************************
libvlc_media_instance_t * p_mi = p_userdata;
libvlc_event_t event;
- printf("input_state_changed!!!!!!!!\n");
if( newval.i_int == oldval.i_int )
return VLC_SUCCESS; /* No change since last time, don't propagate */
event.type = libvlc_MediaInstancePaused;
break;
case PLAYING_S:
- printf("PLAYING_S!!!!!!!!\n");
libvlc_media_descriptor_set_state( p_mi->p_md, libvlc_Playing, NULL);
event.type = libvlc_MediaInstancePlayed;
break;
{
libvlc_media_instance_t * p_mi = p_userdata;
vlc_value_t val;
-
+
+ if (!strncmp(psz_cmd, "intf", 4 /* "-change" no need to go further */))
+ {
+ input_thread_t * p_input = (input_thread_t *)p_this;
+
+ var_Get( p_input, "state", &val );
+ if( val.i_int != PLAYING_S )
+ return VLC_SUCCESS; /* Don't send the position while stopped */
+
+ var_Get( p_input, "position", &val );
+ }
+ else
+ val.i_time = newval.i_time;
+
+ libvlc_event_t event;
+ event.type = libvlc_MediaInstancePositionChanged;
+ event.u.media_instance_position_changed.new_position = val.f_float;
+
+ libvlc_event_send( p_mi->p_event_manager, &event );
+ return VLC_SUCCESS;
+}
+
+/*
+ * input_time_changed (Private) (input var "intf-change" Callback)
+ */
+static int
+input_time_changed( vlc_object_t * p_this, char const * psz_cmd,
+ vlc_value_t oldval, vlc_value_t newval,
+ void * p_userdata )
+{
+ libvlc_media_instance_t * p_mi = p_userdata;
+ vlc_value_t val;
+
if (!strncmp(psz_cmd, "intf", 4 /* "-change" no need to go further */))
{
vlc_value_t val2;
val.i_time = newval.i_time;
libvlc_event_t event;
- event.type = libvlc_MediaInstancePositionChanged;
- event.u.media_instance_position_changed.new_position = val.i_time;
+ event.type = libvlc_MediaInstanceTimeChanged;
+ event.u.media_instance_time_changed.new_time = val.i_time;
libvlc_event_send( p_mi->p_event_manager, &event );
return VLC_SUCCESS;
libvlc_MediaInstancePlayed, p_e );
libvlc_event_manager_register_event_type( p_mi->p_event_manager,
libvlc_MediaInstancePositionChanged, p_e );
+ libvlc_event_manager_register_event_type( p_mi->p_event_manager,
+ libvlc_MediaInstanceTimeChanged, p_e );
return p_mi;
}
}
var_AddCallback( p_input_thread, "state", input_state_changed, p_mi );
var_AddCallback( p_input_thread, "intf-change", input_position_changed, p_mi );
+ var_AddCallback( p_input_thread, "intf-change", input_time_changed, p_mi );
/* will be released in media_instance_release() */
vlc_object_yield( p_input_thread );