Re: [PATCH spice-html5 2/2] Implement handling of SPICE_MSG_DISPLAY_INVAL_LIST

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



ACK, and pushed, thanks!

On 09/16/2013 11:13 AM, Aric Stewart wrote:
> 
> Also converts the display cache from an array to an object. This is to help enforce proper sparceness of the data as well as make it easier to reliably fully delete a given cache entry without affecting access to the remaining entries.
> 
> ---
>  display.js  | 16 +++++++++++++---
>  spicemsg.js | 24 ++++++++++++++++++++++++
>  2 files changed, 37 insertions(+), 3 deletions(-)
> 
> diff --git a/display.js b/display.js
> index d0d0994..6d7dafc 100644
> --- a/display.js
> +++ b/display.js
> @@ -527,6 +527,16 @@ SpiceDisplayConn.prototype.process_channel_message = function(msg)
>          this.streams[m.id] = undefined;
>          return true;
>      }
> +    if (msg.type == SPICE_MSG_DISPLAY_INVAL_LIST)
> +    {
> +        var m = new SpiceMsgDisplayInvalList(msg.data);
> +        var i;
> +        DEBUG > 1 && console.log(this.type + ": MsgInvalList " + m.count + " items");
> +        for (i = 0; i < m.count; i++)
> +            if (this.cache[m.resources[i].id] != undefined)
> +                delete this.cache[m.resources[i].id];
> +        return true;
> +    }
>  
>      return false;
>  }
> @@ -575,7 +585,7 @@ SpiceDisplayConn.prototype.draw_copy_helper = function(o)
>      if (o.descriptor && (o.descriptor.flags & SPICE_IMAGE_FLAGS_CACHE_ME))
>      {
>          if (! ("cache" in this))
> -            this.cache = [];
> +            this.cache = {};
>          this.cache[o.descriptor.id] = o.image_data;
>      }
>  
> @@ -766,7 +776,7 @@ function handle_draw_jpeg_onload()
>              (this.o.descriptor.flags & SPICE_IMAGE_FLAGS_CACHE_ME))
>          {
>              if (! ("cache" in this.o.sc))
> -                this.o.sc.cache = [];
> +                this.o.sc.cache = {};
>  
>              this.o.sc.cache[this.o.descriptor.id] = 
>                  t.getImageData(0, 0,
> @@ -786,7 +796,7 @@ function handle_draw_jpeg_onload()
>              (this.o.descriptor.flags & SPICE_IMAGE_FLAGS_CACHE_ME))
>          {
>              if (! ("cache" in this.o.sc))
> -                this.o.sc.cache = [];
> +                this.o.sc.cache = {};
>  
>              this.o.sc.cache[this.o.descriptor.id] = 
>                  context.getImageData(this.o.base.box.left, this.o.base.box.top,
> diff --git a/spicemsg.js b/spicemsg.js
> index ca69d42..de39aec 100644
> --- a/spicemsg.js
> +++ b/spicemsg.js
> @@ -881,3 +881,27 @@ SpiceMsgDisplayStreamDestroy.prototype =
>          this.id = dv.getUint32(at, true); at += 4;
>      },
>  }
> +
> +function SpiceMsgDisplayInvalList(a, at)
> +{
> +    this.count = 0;
> +    this.resources = [];
> +    this.from_buffer(a,at);
> +}
> +
> +SpiceMsgDisplayInvalList.prototype =
> +{
> +    from_buffer: function (a, at)
> +    {
> +        var i;
> +        at = at || 0;
> +        var dv = new SpiceDataView(a);
> +        this.count = dv.getUint16(at, true); at += 2;
> +        for (i = 0; i < this.count; i++)
> +        {
> +            this.resources[i] = {};
> +            this.resources[i].type = dv.getUint8(at, true); at++;
> +            this.resources[i].id = dv.getUint64(at, true); at += 8;
> +        }
> +    },
> +}
> 
> 
> 
> 
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel@xxxxxxxxxxxxxxxxxxxxx
> http://lists.freedesktop.org/mailman/listinfo/spice-devel

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]