static bool sunxi_gfx_frame(void *data, const void *frame, unsigned width, unsigned height, unsigned pitch, const char *msg) { struct sunxi_video *_dispvars = (struct sunxi_video*)data; if (_dispvars->src_width != width || _dispvars->src_height != height) { /* Sanity check on new dimensions */ if (width == 0 || height == 0) return true; RARCH_LOG("video_sunxi: internal resolution changed by core: %ux%u -> %ux%u\n", _dispvars->src_width, _dispvars->src_height, width, height); sunxi_setup_scale(_dispvars, width, height, pitch); } if (_dispvars->menu_active) { char buf[128] = {0}; video_monitor_get_fps(buf, sizeof(buf), NULL, 0); ioctl(_dispvars->sunxi_disp->fd_fb, FBIO_WAITFORVSYNC, 0); return true; } sunxi_update_main(frame, _dispvars); _dispvars->frame_count++; return true; }
static void sunxi_set_aspect_ratio (void *data, unsigned aspect_ratio_idx) { struct sunxi_video *_dispvars = (struct sunxi_video*)data; /* Here we obtain the new aspect ratio. */ float new_aspect = aspectratio_lut[aspect_ratio_idx].value; if (new_aspect != _dispvars->aspect_ratio) { _dispvars->aspect_ratio = new_aspect; sunxi_setup_scale(_dispvars, _dispvars->src_width, _dispvars->src_height, _dispvars->src_pitch); } }