From: Joshua Wise Date: Sun, 14 Dec 2008 08:26:13 +0000 (-0500) Subject: Merge nyus.joshuawise.com:/storage/git/netwatch X-Git-Url: http://git.joshuawise.com/netwatch.git/commitdiff_plain/81fdcc99873a7926940642e33c2e2b25b11a689c?hp=9eee8073b16fad5359206bb7d832293ce878dd16 Merge nyus.joshuawise.com:/storage/git/netwatch --- diff --git a/net/rfb.c b/net/rfb.c index 13f6fb4..9b9d4e9 100644 --- a/net/rfb.c +++ b/net/rfb.c @@ -126,6 +126,8 @@ struct rfb_state { uint32_t chunk_height; uint32_t chunk_lindex; + + uint32_t chunk_checksum; uint32_t chunk_actually_sent; }; @@ -188,7 +190,6 @@ static void send_fsm(struct tcp_pcb *pcb, struct rfb_state *state) { struct update_header hdr; int lines_left; unsigned char * lptr; - uint32_t checksum; int totaldim; err_t err; @@ -243,17 +244,16 @@ static void send_fsm(struct tcp_pcb *pcb, struct rfb_state *state) { /* Do we _actually_ need to send this chunk? */ if (fb->checksum_rect) { - checksum = fb->checksum_rect(state->chunk_xpos, state->chunk_ypos, - state->chunk_width, state->chunk_height); + state->chunk_checksum = fb->checksum_rect(state->chunk_xpos, state->chunk_ypos, + state->chunk_width, state->chunk_height); - if (checksum == state->checksums[state->chunk_xnum][state->chunk_ynum]) { - outputf("!!!!!!! SKIPPING: %08x", checksum); + if (state->chunk_checksum == state->checksums[state->chunk_xnum][state->chunk_ynum]) { + outputf("!!!!!!! SKIPPING: %08x", state->chunk_checksum); if (advance_chunk(state)) return; continue; - } else { - state->checksums[state->chunk_xnum][state->chunk_ynum] = checksum; } + /* Checksum gets set in data block, AFTER the data has been sent. */ } outputf("actually sent"); @@ -290,6 +290,7 @@ static void send_fsm(struct tcp_pcb *pcb, struct rfb_state *state) { if (lines_left == 0) { state->send_state = SST_HEADER; + state->checksums[state->chunk_xnum][state->chunk_ynum] = state->chunk_checksum; if (advance_chunk(state)) return; break; diff --git a/video/text.c b/video/text.c index 962af0c..86cc3b6 100644 --- a/video/text.c +++ b/video/text.c @@ -34,7 +34,7 @@ void text_render(char *buf, int x, int y, int w, int h) unsigned char ch, at, font; smram_state_t old_state = smram_save_state(); - outputf("text_render: buf %08x, (%d,%d),(%d,%d)", buf, x, y, w, h); + outputf("text_render: (%d,%d),(%d,%d)", buf, x, y, w, h); smram_aseg_set_state(SMRAM_ASEG_SMMCODE); for (cy = y; cy < (y + h); cy++) @@ -84,8 +84,6 @@ uint32_t text_checksum(int x, int y, int w, int h) uint32_t cksm = 0; smram_state_t old_state = smram_save_state(); - outputf("checksum: (%d,%d),(%d,%d)", x,y,w,h); - smram_aseg_set_state(SMRAM_ASEG_SMMCODE); for (cy = y; cy < (y + h); cy++) @@ -111,7 +109,5 @@ uint32_t text_checksum(int x, int y, int w, int h) smram_restore_state(old_state); - outputf("checksum: %08x", cksm); - return cksm; }