summaryrefslogtreecommitdiffstats
path: root/libvo/video_out.c
diff options
context:
space:
mode:
Diffstat (limited to 'libvo/video_out.c')
-rw-r--r--libvo/video_out.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/libvo/video_out.c b/libvo/video_out.c
index 3a6b57347a..6cab65d25f 100644
--- a/libvo/video_out.c
+++ b/libvo/video_out.c
@@ -35,8 +35,6 @@ int vo_depthonscreen=0;
int vo_screenwidth=0;
int vo_screenheight=0;
-int vo_config_count=0;
-
// requested resolution/bpp: (-x -y -bpp options)
int vo_dx=0;
int vo_dy=0;
@@ -260,6 +258,8 @@ int vo_control(struct vo *vo, uint32_t request, void *data)
int vo_draw_frame(struct vo *vo, uint8_t *src[])
{
+ if (!vo->config_ok)
+ return 0;
return vo->driver->draw_frame(vo, src);
}
@@ -270,16 +270,22 @@ int vo_draw_slice(struct vo *vo, uint8_t *src[], int stride[], int w, int h, int
void vo_draw_osd(struct vo *vo)
{
+ if (!vo->config_ok)
+ return;
vo->driver->draw_osd(vo);
}
void vo_flip_page(struct vo *vo)
{
+ if (!vo->config_ok)
+ return;
vo->driver->flip_page(vo);
}
void vo_check_events(struct vo *vo)
{
+ if (!vo->config_ok)
+ return;
vo->driver->check_events(vo);
}
@@ -371,8 +377,11 @@ int vo_config(struct vo *vo, uint32_t width, uint32_t height,
vo_dheight = d_height;
}
- return vo->driver->config(vo, width, height, d_width, d_height, flags,
- title, format);
+ int ret = vo->driver->config(vo, width, height, d_width, d_height, flags,
+ title, format);
+ vo->config_ok = (ret == 0);
+ vo->config_count += vo->config_ok;
+ return ret;
}
#if defined(HAVE_FBDEV)||defined(HAVE_VESA)