diff --git a/docs/TODO b/docs/TODO index c4b6545..bf8a5d9 100644 --- a/docs/TODO +++ b/docs/TODO @@ -2,21 +2,24 @@ Short Term: - 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/ - - -Medium Term: + http://code.google.com/p/fxcanvas/ - Timing delta between frames in proxy record log, for playback support (for demo and test). + +Medium Term: + - Implement Cursor pseudo-encoding (CSS cursor) http://en.wikipedia.org/wiki/ICO_(file_format) https://developer.mozilla.org/en/Using_URL_values_for_the_cursor_property +- Viewport and/or scaling support. + - Status bar buttons: - Isolate menu UI in DefaultControls.js - Icons in status area upper left @@ -56,7 +59,11 @@ Longer Term: - Get web-socket-js RFC2817 proxying working again. -- Support for Spice protocol. - - Implement tight and ZRLE encoding +- Support for Spice protocol. + +- Consider RDP protocol. + +- Consider NX protocol. + diff --git a/include/canvas.js b/include/canvas.js index 3509cfb..1abc146 100644 --- a/include/canvas.js +++ b/include/canvas.js @@ -28,6 +28,7 @@ var Canvas, Canvas_native; Canvas = { prefer_js : false, +force_canvas : false, true_color : false, colourMap : [], @@ -176,8 +177,7 @@ init: function (id) { if (Canvas.has_imageData) { console.log("Canvas supports imageData"); - Canvas._rgbxImage = Canvas._rgbxImageData; - Canvas._cmapImage = Canvas._cmapImageData; + Canvas.force_canvas = false; if (Canvas.ctx.createImageData) { // If it's there, it's faster console.log("Using Canvas createImageData"); @@ -186,18 +186,21 @@ init: function (id) { console.log("Using Canvas getImageData"); Canvas._imageData = Canvas._imageDataGet; } - if (Util.Engine.webkit) { + if (Util.Engine.webkit || Util.Engine.gecko) { console.log("Prefering javascript operations"); Canvas.prefer_js = true; } else { console.log("Prefering Canvas operations"); Canvas.prefer_js = false; } + Canvas._rgbxImage = Canvas._rgbxImageData; + Canvas._cmapImage = Canvas._cmapImageData; } else { console.log("Canvas lacks imageData, using fillRect (slow)"); + Canvas.force_canvas = true; + Canvas.prefer_js = false; Canvas._rgbxImage = Canvas._rgbxImageFill; Canvas._cmapImage = Canvas._cmapImageFill; - Canvas.prefer_js = false; } Canvas.colourMap = [];