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@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel

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

Reply via email to