void updatescreen(void) { /* update sound */ sound_frame_update(); /* if we're not skipping this frame, draw the screen */ if (!osd_skip_this_frame()) { profiler_mark(PROFILER_VIDEO); draw_screen(); profiler_mark(PROFILER_END); } /* the user interface must be called between vh_update() and osd_update_video_and_audio(), */ /* to allow it to overlay things on the game display. We must call it even */ /* if the frame is skipped, to keep a consistent timing. */ ui_update_and_render(artwork_get_ui_bitmap()); /* update our movie recording state */ if (!mame_is_paused()) record_movie_frame(scrbitmap[0]); /* blit to the screen */ update_video_and_audio(); /* call the end-of-frame callback */ if (Machine->drv->video_eof && !mame_is_paused()) { profiler_mark(PROFILER_VIDEO); (*Machine->drv->video_eof)(); profiler_mark(PROFILER_END); } }
int updatescreen(void) { /* update sound */ sound_update(); if (osd_skip_this_frame() == 0) { profiler_mark(PROFILER_VIDEO); if (need_to_clear_bitmap) { osd_clearbitmap(real_scrbitmap); need_to_clear_bitmap = 0; } draw_screen(bitmap_dirty); /* update screen */ bitmap_dirty = 0; profiler_mark(PROFILER_END); } /* the user interface must be called between vh_update() and osd_update_video_and_audio(), */ /* to allow it to overlay things on the game display. We must call it even */ /* if the frame is skipped, to keep a consistent timing. */ if (handle_user_interface(real_scrbitmap)) /* quit if the user asked to */ return 1; update_video_and_audio(); if (drv->vh_eof_callback) (*drv->vh_eof_callback)(); return 0; }