diff --git a/src/conio/bitmap_con.c b/src/conio/bitmap_con.c index 3b47f61f310badf9665449b8cb27e42c22f0c874..bb094595bb1ace6bdf114b1b8e07d4a55b7c8a3b 100644 --- a/src/conio/bitmap_con.c +++ b/src/conio/bitmap_con.c @@ -45,6 +45,7 @@ static struct bitmap_callbacks callbacks; static unsigned char *font[4]; static unsigned char space=' '; int force_redraws=0; +int update_pixels = 0; struct rectangle { int x; @@ -115,6 +116,8 @@ static void blinker_thread(void *data) update_rect(0,0,0,0,force_redraws--); else update_rect(0,0,0,0,FALSE); + if (update_pixels) + send_rectangle(&vstat, 0, 0, screenwidth, screenheight, update_pixels--); callbacks.flush(); } } @@ -1170,6 +1173,7 @@ int bitmap_setpixel(uint32_t x, uint32_t y, uint32_t colour) pthread_mutex_lock(&screenlock); if (x < screenwidth && y < screenheight) screen[PIXEL_OFFSET(x, y)]=colour; + update_pixels++; pthread_mutex_unlock(&screenlock); return 1; } diff --git a/src/conio/bitmap_con.h b/src/conio/bitmap_con.h index 7e450d569e27ef9519d5c9d79da03804627df0ed..bb84b245a48aac127e7d94b0730d5912bb89b18d 100644 --- a/src/conio/bitmap_con.h +++ b/src/conio/bitmap_con.h @@ -8,6 +8,7 @@ extern struct video_stats vstat; extern pthread_mutex_t vstatlock; extern sem_t drawn_sem; extern int force_redraws; +extern int update_pixels; int bitmap_pgettext(int sx, int sy, int ex, int ey, void *fill, uint32_t *fg, uint32_t *bg); int bitmap_puttext(int sx, int sy, int ex, int ey, void *fill); diff --git a/src/conio/sdl_con.c b/src/conio/sdl_con.c index 483d5dcff1780a2a8ee3b0fe0b364b8bc9f23253..dbbbeab7dfe05678151cc6c6fb05fec0afa6b900 100644 --- a/src/conio/sdl_con.c +++ b/src/conio/sdl_con.c @@ -654,7 +654,7 @@ int sdl_setpalette(uint32_t index, uint16_t r, uint16_t g, uint16_t b) pal->g = g>>8; pal->b = b>>8; sdl_user_func(SDL_USEREVENT_SETPALETTE, pal); - force_redraws++; + update_pixels++; } } return 0; @@ -1073,7 +1073,7 @@ void setup_surfaces(void) sdl_setup_colours(new_rect); sdl.mutexV(newrect_mutex); sdl_setup_colours(win); - force_redraws++; + update_pixels++; } else if(sdl_init_good) { ev.type=SDL_QUIT; @@ -1729,7 +1729,7 @@ int sdl_video_event_thread(void *data) case SDL_VIDEOEXPOSE: { if(yuv.enabled) { - force_redraws=1; + update_pixels++; } else { if(upd_rects) {