- /* Get a new picture */
- while( ( p_vout->p_sys->p_lastpic =
- vout_CreatePicture( p_vout->p_sys->p_vout, 0, 0, 0 ) )
- == NULL )
- {
- if( p_vout->b_die || p_vout->b_error )
- {
- return;
- }
- msleep( VOUT_OUTMEM_SLEEP );
- }
- CopyPicture( p_vout, p_vout->p_sys->p_lastpic, p_outpic );
- vout_DisplayPicture( p_vout->p_sys->p_vout, p_outpic );
-}
-
-/* FIXME: this is a verbatim copy from src/video_output/vout_pictures.c */
-/* XXX: the order is fucked up!! */
-static void CopyPicture( vout_thread_t * p_vout,
- picture_t *p_dest, picture_t *p_src )
-{
- int i;
-
- for( i = 0; i < p_src->i_planes ; i++ )
- {
- if( p_src->p[i].i_pitch == p_dest->p[i].i_pitch )
- {
- /* There are margins, but with the same width : perfect ! */
- p_vout->p_vlc->pf_memcpy(
- p_dest->p[i].p_pixels, p_src->p[i].p_pixels,
- p_src->p[i].i_pitch * p_src->p[i].i_lines );
- }
- else
- {
- /* We need to proceed line by line */
- uint8_t *p_in = p_src->p[i].p_pixels;
- uint8_t *p_out = p_dest->p[i].p_pixels;
- int i_line;
-
- for( i_line = p_src->p[i].i_lines; i_line--; )
- {
- p_vout->p_vlc->pf_memcpy( p_out, p_in,
- p_src->p[i].i_visible_pitch );
- p_in += p_src->p[i].i_pitch;
- p_out += p_dest->p[i].i_pitch;
- }
- }
- }