diff options
Diffstat (limited to 'libvo/video_out.c')
-rw-r--r-- | libvo/video_out.c | 17 |
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) |