mediacontrol_PositionKey a_key,
mediacontrol_Exception *exception )
{
+ (void)a_key;
mediacontrol_StreamInformation *retval = NULL;
libvlc_media_t * p_media;
libvlc_exception_t ex;
}
p_media = libvlc_media_player_get_media( self->p_media_player, &ex );
- HANDLE_LIBVLC_EXCEPTION_NULL( &ex );
+ if( libvlc_exception_raised( &ex ) )
+ {
+ free( retval );
+ RAISE( mediacontrol_InternalException, libvlc_errmsg( ) );
+ libvlc_exception_clear( &ex );
+ return NULL;
+ }
+
if( ! p_media )
{
/* No p_media defined */
else
{
libvlc_state_t state;
+
state = libvlc_media_player_get_state( self->p_media_player, &ex );
- HANDLE_LIBVLC_EXCEPTION_NULL( &ex );
+ if( libvlc_exception_raised( &ex ) )
+ {
+ free( retval );
+ RAISE( mediacontrol_InternalException, libvlc_errmsg() );
+ libvlc_exception_clear( &ex );
+ return NULL;
+ }
+
switch( state )
{
case libvlc_NothingSpecial:
case libvlc_Stopped:
retval->streamstatus = mediacontrol_StopStatus;
break;
- case libvlc_Forward:
- retval->streamstatus = mediacontrol_ForwardStatus;
- break;
- case libvlc_Backward:
- retval->streamstatus = mediacontrol_BackwardStatus;
- break;
case libvlc_Ended:
retval->streamstatus = mediacontrol_EndStatus;
break;
}
retval->url = libvlc_media_get_mrl( p_media, &ex );
-
- /* TIME and LENGTH are in microseconds. We want them in ms */
+
retval->position = libvlc_media_player_get_time( self->p_media_player, &ex );
+ if( libvlc_exception_raised( &ex ) )
+ {
+ libvlc_exception_clear( &ex );
+ retval->position = 0;
+ }
retval->length = libvlc_media_player_get_length( self->p_media_player, &ex );
+ if( libvlc_exception_raised( &ex ) )
+ {
+ libvlc_exception_clear( &ex );
+ retval->length = 0;
+ }
- retval->position = private_mediacontrol_unit_convert( self->p_media_player,
- mediacontrol_MediaTime, a_key,
- retval->position );
- retval->length = private_mediacontrol_unit_convert( self->p_media_player,
- mediacontrol_MediaTime, a_key,
- retval->length );
}
return retval;
}