void RedScreen::update() { if (is_out_of_sync()) { return; } QRegion direct_rgn; QRegion composit_rgn; QRegion frame_rgn; begin_update(direct_rgn, composit_rgn, frame_rgn); update_composit(composit_rgn); draw_direct(_window, direct_rgn, composit_rgn, frame_rgn); composit_to_screen(_window, composit_rgn); update_done(); region_destroy(&direct_rgn); region_destroy(&composit_rgn); if (_update_by_timer) { activate_timer(); } }
size_t Messages::update_done(uint8_t* buf, message_id_t message_id, bool confirmable) { return update_done(buf, message_id, NULL, 0, confirmable); }
static adv_error cmd_onvideo_animate(void) { adv_mode mode; adv_crtc* crtc; unsigned i; int counter; mode_reset(&mode); if (the_mode_index == MODE_FLAGS_INDEX_TEXT) { error_set("Command supported only in graphics mode"); return -1; } crtc = menu_current(); if (!crtc) return -1; if (!crtc_is_fake(crtc) && !crtc_clock_check(&the_monitor, crtc)) return -1; if (video_mode_generate(&mode, crtc, the_mode_index)!=0) { return -1; } if (text_mode_set(&mode) != 0) { text_reset(); return -1; } update_init(2); draw_graphics_palette(); for(i=0;i<3;++i) { update_start(); video_clear(update_x_get(), update_y_get(), video_size_x(), video_size_y(), 0); update_stop(update_x_get(), update_y_get(), video_size_x(), video_size_y(), 1); } counter = update_page_max_get(); while (!inputb_hit()) { os_poll(); update_start(); draw_graphics_animate(update_x_get(), update_y_get(), video_size_x(), video_size_y(), counter - update_page_max_get() + 1, 1); ++counter; draw_graphics_animate(update_x_get(), update_y_get(), video_size_x(), video_size_y(), counter, 0); update_stop(update_x_get(), update_y_get(), video_size_x(), video_size_y(), 1); } update_done(); do { target_idle(); os_poll(); } while (inputb_get()==INPUTB_NONE); return 0; }