Commit a0ecfb73b196147215a621236bc7ad8f500b95ea

Authored by balrog
1 parent 8fccda83

Reduce redundant timer ticks in VNC, by Anders Melchiorsen.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3904 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 8 additions and 14 deletions
@@ -506,6 +506,8 @@ static void vnc_update_client(void *opaque) @@ -506,6 +506,8 @@ static void vnc_update_client(void *opaque)
506 int saved_offset; 506 int saved_offset;
507 int has_dirty = 0; 507 int has_dirty = 0;
508 508
  509 + vga_hw_update();
  510 +
509 vnc_set_bits(width_mask, (vs->width / 16), VNC_DIRTY_WORDS); 511 vnc_set_bits(width_mask, (vs->width / 16), VNC_DIRTY_WORDS);
510 512
511 /* Walk through the dirty map and eliminate tiles that 513 /* Walk through the dirty map and eliminate tiles that
@@ -580,22 +582,11 @@ static void vnc_update_client(void *opaque) @@ -580,22 +582,11 @@ static void vnc_update_client(void *opaque)
580 vnc_flush(vs); 582 vnc_flush(vs);
581 583
582 } 584 }
583 - qemu_mod_timer(vs->timer, qemu_get_clock(rt_clock) + VNC_REFRESH_INTERVAL);  
584 -}  
585 585
586 -static void vnc_timer_init(VncState *vs)  
587 -{  
588 - if (vs->timer == NULL) {  
589 - vs->timer = qemu_new_timer(rt_clock, vnc_update_client, vs);  
590 - qemu_mod_timer(vs->timer, qemu_get_clock(rt_clock)); 586 + if (vs->csock != -1) {
  587 + qemu_mod_timer(vs->timer, qemu_get_clock(rt_clock) + VNC_REFRESH_INTERVAL);
591 } 588 }
592 -}  
593 589
594 -static void vnc_dpy_refresh(DisplayState *ds)  
595 -{  
596 - VncState *vs = ds->opaque;  
597 - vnc_timer_init(vs);  
598 - vga_hw_update();  
599 } 590 }
600 591
601 static int vnc_listen_poll(void *opaque) 592 static int vnc_listen_poll(void *opaque)
@@ -1926,6 +1917,7 @@ static void vnc_listen_read(void *opaque) @@ -1926,6 +1917,7 @@ static void vnc_listen_read(void *opaque)
1926 vs->has_resize = 0; 1917 vs->has_resize = 0;
1927 vs->has_hextile = 0; 1918 vs->has_hextile = 0;
1928 vs->ds->dpy_copy = NULL; 1919 vs->ds->dpy_copy = NULL;
  1920 + vnc_update_client(vs);
1929 } 1921 }
1930 } 1922 }
1931 1923
@@ -1959,10 +1951,12 @@ void vnc_display_init(DisplayState *ds) @@ -1959,10 +1951,12 @@ void vnc_display_init(DisplayState *ds)
1959 if (!vs->kbd_layout) 1951 if (!vs->kbd_layout)
1960 exit(1); 1952 exit(1);
1961 1953
  1954 + vs->timer = qemu_new_timer(rt_clock, vnc_update_client, vs);
  1955 +
1962 vs->ds->data = NULL; 1956 vs->ds->data = NULL;
1963 vs->ds->dpy_update = vnc_dpy_update; 1957 vs->ds->dpy_update = vnc_dpy_update;
1964 vs->ds->dpy_resize = vnc_dpy_resize; 1958 vs->ds->dpy_resize = vnc_dpy_resize;
1965 - vs->ds->dpy_refresh = vnc_dpy_refresh; 1959 + vs->ds->dpy_refresh = NULL;
1966 1960
1967 memset(vs->dirty_row, 0xFF, sizeof(vs->dirty_row)); 1961 memset(vs->dirty_row, 0xFF, sizeof(vs->dirty_row));
1968 1962