void flush_line(int y) { int target_y = y; char *addr; if (linear_mem != NULL && !need_dither) return; addr = gfxvidinfo.linemem; if (addr == NULL) addr = gfxvidinfo.bufmem + y*gfxvidinfo.rowbytes; if (linear_mem == NULL) { if (target_y < modeinfo.height && target_y >= 0) { if (need_dither) { DitherLine (dither_buf, (uae_u16 *)addr, 0, y, gfxvidinfo.width, bit_unit); addr = dither_buf; } vga_drawscanline(target_y, addr); } } else { if (need_dither && target_y >= 0) { DitherLine (linear_mem + modeinfo.linewidth * target_y, (uae_u16 *)addr, 0, y, gfxvidinfo.width, bit_unit); } } }
/* * flush_line() buffer method for dithered mode */ static void x11_flush_line_dither (struct vidbuf_description *gfxinfo, int line_no) { DitherLine ((uae_u8 *)ami_dinfo.image_mem + ami_dinfo.ximg->bytes_per_line * line_no, (uae_u16 *)gfxinfo->linemem, 0, line_no, gfxinfo->width, bit_unit); DO_PUTIMAGE (ami_dinfo.ximg, 0, line_no, 0, line_no, gfxinfo->width, 1); }
static void x11_flush_line_dither_dga (struct vidbuf_description *gfxinfo, int line_no) { DitherLine ((unsigned char *)(fb_addr + fb_width * line_no), (uae_u16 *)gfxinfo->linemem, 0, line_no, gfxinfo->width, bit_unit); }