]> Joshua Wise's Git repositories - netwatch.git/commitdiff
Merge nyus.joshuawise.com:/storage/git/netwatch
authorJoshua Wise <joshua@rebirth.joshuawise.com>
Sun, 14 Dec 2008 08:26:13 +0000 (03:26 -0500)
committerJoshua Wise <joshua@rebirth.joshuawise.com>
Sun, 14 Dec 2008 08:26:13 +0000 (03:26 -0500)
net/rfb.c
video/text.c

index 13f6fb47e81849aa4acd4de541c4cdbb12b0ebfd..9b9d4e9c8e947b3063d5bd29249441467bc6d128 100644 (file)
--- 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;
index 962af0ca0afc65d7587e11f0970336cc4fd15b7f..86cc3b67560caa991e7361a4ff3cfb230672e148 100644 (file)
@@ -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;
 }
This page took 0.03481 seconds and 4 git commands to generate.