* [Qemu-devel] [PATCH] fix vnc regression
@ 2011-02-25 6:26 Wen Congyang
2011-02-25 7:03 ` [Qemu-devel] " Corentin Chary
0 siblings, 1 reply; 4+ messages in thread
From: Wen Congyang @ 2011-02-25 6:26 UTC (permalink / raw)
To: Corentin Chary, qemu-devel
This patch fix the following two regressions:
1. we should use bitmap_set() and bitmap_clear() to replace vnc_set_bits().
2. The unit of bitmap_intersects()'third parameter is bit, not words.
But we pass the num of words to bitmap_intersects().
Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
---
ui/vnc.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/ui/vnc.c b/ui/vnc.c
index 610f884..fff34af 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -1655,7 +1655,10 @@ static void framebuffer_update_request(VncState *vs, int incremental,
if (!incremental) {
vs->force_update = 1;
for (i = 0; i < h; i++) {
- bitmap_set(vs->dirty[y_position + i], x_position / 16, w / 16);
+ bitmap_set(vs->dirty[y_position + i], 0,
+ (ds_get_width(vs->ds) / 16));
+ bitmap_clear(vs->dirty[y_position + i], (ds_get_width(vs->ds) / 16),
+ VNC_DIRTY_WORDS * BITS_PER_LONG);
}
}
}
@@ -2406,7 +2409,8 @@ static int vnc_refresh_server_surface(VncDisplay *vd)
guest_row = vd->guest.ds->data;
server_row = vd->server->data;
for (y = 0; y < vd->guest.ds->height; y++) {
- if (bitmap_intersects(vd->guest.dirty[y], width_mask, VNC_DIRTY_WORDS)) {
+ if (bitmap_intersects(vd->guest.dirty[y], width_mask,
+ VNC_DIRTY_WORDS * BITS_PER_LONG)) {
int x;
uint8_t *guest_ptr;
uint8_t *server_ptr;
--
1.7.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] Re: [PATCH] fix vnc regression
2011-02-25 6:26 [Qemu-devel] [PATCH] fix vnc regression Wen Congyang
@ 2011-02-25 7:03 ` Corentin Chary
2011-03-01 1:48 ` [Qemu-devel] [PATCH v2] " Wen Congyang
0 siblings, 1 reply; 4+ messages in thread
From: Corentin Chary @ 2011-02-25 7:03 UTC (permalink / raw)
To: Wen Congyang; +Cc: Anthony Liguori, qemu-devel
On Fri, Feb 25, 2011 at 7:26 AM, Wen Congyang <wency@cn.fujitsu.com> wrote:
> This patch fix the following two regressions:
> 1. we should use bitmap_set() and bitmap_clear() to replace vnc_set_bits().
> 2. The unit of bitmap_intersects()'third parameter is bit, not words.
> But we pass the num of words to bitmap_intersects().
>
> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
>
> ---
> ui/vnc.c | 8 ++++++--
> 1 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/ui/vnc.c b/ui/vnc.c
> index 610f884..fff34af 100644
> --- a/ui/vnc.c
> +++ b/ui/vnc.c
> @@ -1655,7 +1655,10 @@ static void framebuffer_update_request(VncState *vs, int incremental,
> if (!incremental) {
> vs->force_update = 1;
> for (i = 0; i < h; i++) {
> - bitmap_set(vs->dirty[y_position + i], x_position / 16, w / 16);
> + bitmap_set(vs->dirty[y_position + i], 0,
> + (ds_get_width(vs->ds) / 16));
> + bitmap_clear(vs->dirty[y_position + i], (ds_get_width(vs->ds) / 16),
> + VNC_DIRTY_WORDS * BITS_PER_LONG);
> }
> }
> }
Oh, right, (!incremental) case was broken.
> @@ -2406,7 +2409,8 @@ static int vnc_refresh_server_surface(VncDisplay *vd)
> guest_row = vd->guest.ds->data;
> server_row = vd->server->data;
> for (y = 0; y < vd->guest.ds->height; y++) {
> - if (bitmap_intersects(vd->guest.dirty[y], width_mask, VNC_DIRTY_WORDS)) {
> + if (bitmap_intersects(vd->guest.dirty[y], width_mask,
> + VNC_DIRTY_WORDS * BITS_PER_LONG)) {
> int x;
> uint8_t *guest_ptr;
> uint8_t *server_ptr;
Good catch,
Thanks,
Acked-by: Corentin Chary <corentin.chary@gmail.com>
--
Corentin Chary
http://xf.iksaif.net
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PATCH v2] fix vnc regression
2011-02-25 7:03 ` [Qemu-devel] " Corentin Chary
@ 2011-03-01 1:48 ` Wen Congyang
2011-03-01 13:26 ` [Qemu-devel] " Corentin Chary
0 siblings, 1 reply; 4+ messages in thread
From: Wen Congyang @ 2011-03-01 1:48 UTC (permalink / raw)
To: Corentin Chary; +Cc: Anthony Liguori, qemu-devel
This patch fix the following two regressions:
1. we should use bitmap_set() and bitmap_clear() to replace vnc_set_bits().
2. The unit of bitmap_intersects()'third parameter is bit, not words.
But we pass the num of words to bitmap_intersects().
Changes from v1 to v2:
1. fix the third argument of bitmap_clear()
Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
---
ui/vnc.c | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/ui/vnc.c b/ui/vnc.c
index 610f884..655aae6 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -1655,7 +1655,11 @@ static void framebuffer_update_request(VncState *vs, int incremental,
if (!incremental) {
vs->force_update = 1;
for (i = 0; i < h; i++) {
- bitmap_set(vs->dirty[y_position + i], x_position / 16, w / 16);
+ bitmap_set(vs->dirty[y_position + i], 0,
+ (ds_get_width(vs->ds) / 16));
+ bitmap_clear(vs->dirty[y_position + i], (ds_get_width(vs->ds) / 16),
+ VNC_DIRTY_WORDS * BITS_PER_LONG -
+ (ds_get_width(vs->ds) / 16));
}
}
}
@@ -2406,7 +2410,8 @@ static int vnc_refresh_server_surface(VncDisplay *vd)
guest_row = vd->guest.ds->data;
server_row = vd->server->data;
for (y = 0; y < vd->guest.ds->height; y++) {
- if (bitmap_intersects(vd->guest.dirty[y], width_mask, VNC_DIRTY_WORDS)) {
+ if (bitmap_intersects(vd->guest.dirty[y], width_mask,
+ VNC_DIRTY_WORDS * BITS_PER_LONG)) {
int x;
uint8_t *guest_ptr;
uint8_t *server_ptr;
--
1.7.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] Re: [PATCH v2] fix vnc regression
2011-03-01 1:48 ` [Qemu-devel] [PATCH v2] " Wen Congyang
@ 2011-03-01 13:26 ` Corentin Chary
0 siblings, 0 replies; 4+ messages in thread
From: Corentin Chary @ 2011-03-01 13:26 UTC (permalink / raw)
To: Wen Congyang; +Cc: Anthony Liguori, qemu-devel
On Tue, Mar 1, 2011 at 1:48 AM, Wen Congyang <wency@cn.fujitsu.com> wrote:
> This patch fix the following two regressions:
> 1. we should use bitmap_set() and bitmap_clear() to replace vnc_set_bits().
> 2. The unit of bitmap_intersects()'third parameter is bit, not words.
> But we pass the num of words to bitmap_intersects().
>
> Changes from v1 to v2:
> 1. fix the third argument of bitmap_clear()
>
> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
Seems ok, tested with valgrind this time.
But could you re-send this one and the other one at
http://patchwork.ozlabs.org/patch/84887/ :
- with appropriate Signed-off-by: and changelog for the other patch
- using a const size_t width = ds_get_width(vs->ds) / 16; in both
patchs to make the call more explicit
Thanks,
--
Corentin Chary
http://xf.iksaif.net
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-03-01 13:26 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-25 6:26 [Qemu-devel] [PATCH] fix vnc regression Wen Congyang
2011-02-25 7:03 ` [Qemu-devel] " Corentin Chary
2011-03-01 1:48 ` [Qemu-devel] [PATCH v2] " Wen Congyang
2011-03-01 13:26 ` [Qemu-devel] " Corentin Chary
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).