Skip to content

Commit

Permalink
Merge pull request novnc#582 from kanaka/bug/render-queue-corruption
Browse files Browse the repository at this point in the history
Make sure to copy arrays when using render queue
  • Loading branch information
DirectXMan12 committed Feb 24, 2016
2 parents 670dbdd + 7bc383e commit b403cb9
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions include/display.js
Original file line number Diff line number Diff line change
Expand Up @@ -471,9 +471,14 @@ var Display;

blitImage: function (x, y, width, height, arr, offset, from_queue) {
if (this._renderQ.length !== 0 && !from_queue) {
// NB(directxman12): it's technically more performant here to use preallocated arrays,
// but it's a lot of extra work for not a lot of payoff -- if we're using the render queue,
// this probably isn't getting called *nearly* as much
var new_arr = new Uint8Array(width * height * 4);
new_arr.set(new Uint8Array(arr.buffer, 0, new_arr.length));
this.renderQ_push({
'type': 'blit',
'data': arr,
'data': new_arr,
'x': x,
'y': y,
'width': width,
Expand All @@ -488,9 +493,14 @@ var Display;

blitRgbImage: function (x, y , width, height, arr, offset, from_queue) {
if (this._renderQ.length !== 0 && !from_queue) {
// NB(directxman12): it's technically more performant here to use preallocated arrays,
// but it's a lot of extra work for not a lot of payoff -- if we're using the render queue,
// this probably isn't getting called *nearly* as much
var new_arr = new Uint8Array(width * height * 4);
new_arr.set(new Uint8Array(arr.buffer, 0, new_arr.length));
this.renderQ_push({
'type': 'blitRgb',
'data': arr,
'data': new_arr,
'x': x,
'y': y,
'width': width,
Expand All @@ -506,7 +516,7 @@ var Display;

blitRgbxImage: function (x, y, width, height, arr, offset, from_queue) {
if (this._renderQ.length !== 0 && !from_queue) {
// NB(directxman12): it's technically more performant here to use preallocated arrays, but it
// NB(directxman12): it's technically more performant here to use preallocated arrays,
// but it's a lot of extra work for not a lot of payoff -- if we're using the render queue,
// this probably isn't getting called *nearly* as much
var new_arr = new Uint8Array(width * height * 4);
Expand Down

0 comments on commit b403cb9

Please sign in to comment.