summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/xine-engine/video_out.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/xine-engine/video_out.c b/src/xine-engine/video_out.c
index ad9cac67b..9cdee4bf6 100644
--- a/src/xine-engine/video_out.c
+++ b/src/xine-engine/video_out.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out.c,v 1.68 2002/01/25 14:56:00 jkeil Exp $
+ * $Id: video_out.c,v 1.69 2002/02/02 13:26:34 miguelfreitas Exp $
*
*/
@@ -402,7 +402,7 @@ static void *video_out_loop (void *this_gen) {
if (img_backup) {
pthread_mutex_lock (&img_backup->mutex);
#ifdef VIDEO_OUT_LOG
- printf("video_out : overwriting frame backup\n");
+ prcvs -z3 -d:ext:miguelfreitas@cvs.xine.sourceforge.net:/cvsroot/xine commitintf("video_out : overwriting frame backup\n");
#endif
img_backup->display_locked = 0;
if (!img_backup->decoder_locked)
@@ -411,6 +411,8 @@ static void *video_out_loop (void *this_gen) {
pthread_mutex_unlock (&img_backup->mutex);
}
+ printf("video_out : copying logo image\n");
+
img_backup = vo_get_frame (this, this->logo_w, this->logo_h,
42, IMGFMT_YUY2, 6000, VO_BOTH_FIELDS);
@@ -421,6 +423,8 @@ static void *video_out_loop (void *this_gen) {
xine_fast_memcpy(img_backup->base[0], this->logo_yuy2,
this->logo_w*this->logo_h*2);
+ /* this shouldn't be needed, duplicate_frame will call
+ img->copy for us. [mf]
if (img_backup->copy) {
int height = this->logo_h;
int stride = this->logo_w;
@@ -433,9 +437,9 @@ static void *video_out_loop (void *this_gen) {
src[0] += 32 * stride;
}
}
-
+ */
+
backup_is_logo = 1;
-
}
@@ -448,7 +452,8 @@ static void *video_out_loop (void *this_gen) {
do {
xine_usec_sleep ( 10000 );
cur_pts = this->metronom->get_current_time (this->metronom);
- diff = cur_pts - pts;
+ /* using abs will avoid problems if metronom gets updated */
+ diff = abs(cur_pts - pts);
} while (diff < 2 * this->pts_per_frame) ;
@@ -612,8 +617,6 @@ static vo_frame_t * vo_duplicate_frame( vo_instance_t *this, vo_frame_t *img ) {
vo_frame_t *dupl;
int image_size;
- pthread_mutex_unlock (&img->mutex);
-
dupl = vo_get_frame( this, img->width, img->height, img->ratio,
img->format, img->duration, VO_BOTH_FIELDS );
@@ -677,15 +680,13 @@ static vo_frame_t * vo_duplicate_frame( vo_instance_t *this, vo_frame_t *img ) {
pthread_mutex_unlock (&dupl->mutex);
- pthread_mutex_unlock (&img->mutex);
-
return dupl;
}
static void vo_open (vo_instance_t *this) {
+ this->decoder_started_flag = 0;
this->video_opened = 1;
-
}
static void vo_close (vo_instance_t *this) {