[Spice-devel] [PATCH spice-gtk] display: blank surface on creation

Alon Levy alevy at redhat.com
Thu Oct 17 10:23:30 CEST 2013


On 10/16/2013 10:08 PM, Marc-André Lureau wrote:
> In theory, zero-ing the surface shouldn't be necessary, as only
> invalidated/painted region should be shown. However, this results in
> less artifacts on resolution changes (probably some regions are painted,
> but with masks, blend, copy etc), in particular on console after VM
> reboot.
ACK. On guest reboot / resolution change (reboot is just a special case 
because of entering vga mode, which is from server pov a special case of 
resolution change) the server sends a new surface, which is not blank 
(not all zeros). That is an emulation error since I don't believe it 
happens in real life, but it's way easier to fix it here. so ack.

> ---
>   gtk/channel-display.c | 6 +++++-
>   1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/gtk/channel-display.c b/gtk/channel-display.c
> index a57453f..96b311d 100644
> --- a/gtk/channel-display.c
> +++ b/gtk/channel-display.c
> @@ -723,7 +723,11 @@ static int create_canvas(SpiceChannel *channel, display_surface *surface)
>       }
>   
>       if (surface->shmid == -1) {
> -        surface->data = spice_malloc(surface->size);
> +        /* in theory, zero-ing the surface shouldn't be necessary, as
> +           only invalidated/painted region should be shown however,
> +           this shows less artifact on resolution changes (probably
> +           some regions are painted, but with masks etc) */
> +        surface->data = g_malloc0(surface->size);
>       }
>   
>       g_return_val_if_fail(c->glz_window, 0);



More information about the Spice-devel mailing list