Commit 5235b29d authored by Joel Martin's avatar Joel Martin

Significant firefox perf improvement. Update TODOs.

Interesting. Enough has changed in the Canvas tile operations, that
Canvas.prefer_js=true is better for firefox/gecko too. Approximately
2X improvement in firefox for large hextile renders.
parent dfa8db8f
...@@ -2,21 +2,24 @@ Short Term: ...@@ -2,21 +2,24 @@ Short Term:
- Test on IE 9 preview 3. - Test on IE 9 preview 3.
- Support Opera 10.60. - Support Opera 10.60 (WebSocket frames dropped).
- Possibly support IE <= 8.0 using excanvas: - Possibly support IE <= 8.0 using excanvas of fxcanvas:
http://excanvas.sourceforge.net/ http://excanvas.sourceforge.net/
http://code.google.com/p/fxcanvas/
Medium Term:
- Timing delta between frames in proxy record log, for playback - Timing delta between frames in proxy record log, for playback
support (for demo and test). support (for demo and test).
Medium Term:
- Implement Cursor pseudo-encoding (CSS cursor) - Implement Cursor pseudo-encoding (CSS cursor)
http://en.wikipedia.org/wiki/ICO_(file_format) http://en.wikipedia.org/wiki/ICO_(file_format)
https://developer.mozilla.org/en/Using_URL_values_for_the_cursor_property https://developer.mozilla.org/en/Using_URL_values_for_the_cursor_property
- Viewport and/or scaling support.
- Status bar buttons: - Status bar buttons:
- Isolate menu UI in DefaultControls.js - Isolate menu UI in DefaultControls.js
- Icons in status area upper left - Icons in status area upper left
...@@ -56,7 +59,11 @@ Longer Term: ...@@ -56,7 +59,11 @@ Longer Term:
- Get web-socket-js RFC2817 proxying working again. - Get web-socket-js RFC2817 proxying working again.
- Implement tight and ZRLE encoding
- Support for Spice protocol. - Support for Spice protocol.
- Implement tight and ZRLE encoding - Consider RDP protocol.
- Consider NX protocol.
...@@ -28,6 +28,7 @@ var Canvas, Canvas_native; ...@@ -28,6 +28,7 @@ var Canvas, Canvas_native;
Canvas = { Canvas = {
prefer_js : false, prefer_js : false,
force_canvas : false,
true_color : false, true_color : false,
colourMap : [], colourMap : [],
...@@ -176,8 +177,7 @@ init: function (id) { ...@@ -176,8 +177,7 @@ init: function (id) {
if (Canvas.has_imageData) { if (Canvas.has_imageData) {
console.log("Canvas supports imageData"); console.log("Canvas supports imageData");
Canvas._rgbxImage = Canvas._rgbxImageData; Canvas.force_canvas = false;
Canvas._cmapImage = Canvas._cmapImageData;
if (Canvas.ctx.createImageData) { if (Canvas.ctx.createImageData) {
// If it's there, it's faster // If it's there, it's faster
console.log("Using Canvas createImageData"); console.log("Using Canvas createImageData");
...@@ -186,18 +186,21 @@ init: function (id) { ...@@ -186,18 +186,21 @@ init: function (id) {
console.log("Using Canvas getImageData"); console.log("Using Canvas getImageData");
Canvas._imageData = Canvas._imageDataGet; Canvas._imageData = Canvas._imageDataGet;
} }
if (Util.Engine.webkit) { if (Util.Engine.webkit || Util.Engine.gecko) {
console.log("Prefering javascript operations"); console.log("Prefering javascript operations");
Canvas.prefer_js = true; Canvas.prefer_js = true;
} else { } else {
console.log("Prefering Canvas operations"); console.log("Prefering Canvas operations");
Canvas.prefer_js = false; Canvas.prefer_js = false;
} }
Canvas._rgbxImage = Canvas._rgbxImageData;
Canvas._cmapImage = Canvas._cmapImageData;
} else { } else {
console.log("Canvas lacks imageData, using fillRect (slow)"); console.log("Canvas lacks imageData, using fillRect (slow)");
Canvas.force_canvas = true;
Canvas.prefer_js = false;
Canvas._rgbxImage = Canvas._rgbxImageFill; Canvas._rgbxImage = Canvas._rgbxImageFill;
Canvas._cmapImage = Canvas._cmapImageFill; Canvas._cmapImage = Canvas._cmapImageFill;
Canvas.prefer_js = false;
} }
Canvas.colourMap = []; Canvas.colourMap = [];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment