GUI questions

Samuel Hocevar sam at zoy.org
Sun Feb 25 06:19:34 CET 2001


On Sun, Feb 25, 2001, Tony Castley wrote:
> I have just started a GUI for BeOS,  and I cannot seem to figure out how 
> to tell long the video is, and how much is played.  I want to know this 
> to display a duration or progress bar, and maybe allow the user to seek 
> to a different spot in the movie.

   This code, taken from plugins/gnome/gnome_callbacks.c, is used to
seek to an arbitrary spot. p_adj->value is the requested postition (from
0 to 100) within the stream:

    vlc_mutex_lock( &p_intf->p_sys->change_lock );
    if( p_intf->p_input != NULL )
    {
        i_seek = (p_adj->value *
                  p_intf->p_input->stream.p_selected_area->i_size) / 100;
        input_Seek( p_intf->p_input, i_seek );
    }
    vlc_mutex_unlock( &p_intf->p_sys->change_lock );

   And this code, taken from plugins/gnome/intf_gnome.c, is used to update
the progress bar:

    vlc_mutex_lock( &p_intf->p_sys->change_lock );
    if( p_intf->p_input != NULL )
    {
        p_adj->value = ( 100. *
                         p_intf->p_input->stream.p_selected_area->i_tell ) /
                         p_intf->p_input->stream.p_selected_area->i_size;
    }
    vlc_mutex_lock( &p_intf->p_sys->change_lock );

   Note that the p_input->stream structure has been recently updated so
that it will be easy to display a duration instead of a percentage, but
I haven't had a look at it yet. Also, the locks aren't probably needed,
but I heard BeOS applications are massively multithreaded so mind your
data access.

-- 
Sam.




More information about the vlc-devel mailing list