1. 08 Sep, 2010 4 commits
    • Joel Martin's avatar
      web-socket-js: 9e7663771 build and remove source. · 2a6018df
      Joel Martin authored
      web-socket-js now has all the functionality and fixes needed for noVNC
      so remove the include/as3crypto_patched directory and the
      include/web-socket-js/flash-src directory (i.e. the sources for
      web-socket-js). This cleans up almost 3K from the include/ directory.
      
      Update to web-socket-js build based on upstream (gimite/web-socket-js)
      9e766377188.
      2a6018df
    • Joel Martin's avatar
      default_controls.js: Fix cursor setting init. · b5087acc
      Joel Martin authored
      The rfb variable wasn't available at the point settingsDisabled() was
      being called since it was called inline with RFB() initialization. To
      solve this we pass the updateState rfb variable so that the canvas can
      be queried for setting the cursor_uri value.
      b5087acc
    • Joel Martin's avatar
      TODO and .gitignore: updates. · c0f3c664
      Joel Martin authored
      c0f3c664
    • Joel Martin's avatar
      JSLint. · d595e656
      Joel Martin authored
      d595e656
  2. 07 Sep, 2010 2 commits
  3. 01 Sep, 2010 3 commits
  4. 31 Aug, 2010 2 commits
  5. 30 Aug, 2010 3 commits
  6. 27 Aug, 2010 3 commits
  7. 26 Aug, 2010 2 commits
    • Joel Martin's avatar
      Test both builtin and base64.js functions. · 4ff85f49
      Joel Martin authored
      4ff85f49
    • Joel Martin's avatar
      Indexed receive queue. Up to 2X speedup in Chrome. · 67b4e987
      Joel Martin authored
      Generally, most servers send hextile updates as single updates
      containing many rects. Some servers send hextile updates as many small
      framebuffer updates with a few rects each (such as QEMU). This latter
      cases revealed that shifting off the beginning of the receive queue
      (which happens after each hextile FBU) performs poorly.
      
      This change switches to using an indexed receive queue (instead of
      actually shifting off the array). When the receive queue has grown to
      a certain size, then it is compacted all at once.
      
      The code is not as clean, but this change results in more than 2X
      speedup under Chrome for the pessimal case and 10-20% in firefox.
      67b4e987
  8. 12 Aug, 2010 1 commit
  9. 11 Aug, 2010 1 commit
    • Joel Martin's avatar
      Treat RFB 3.6 as 3.3. · 1a5dd77d
      Joel Martin authored
      Apparently there are versions of UltraVNC that report version 3.6.
      This is not a legal version according to the spec, but we'll just
      force version 3.3 if we receive it. Thanks to Larry Rowe for the info.
      1a5dd77d
  10. 06 Aug, 2010 1 commit
    • Joel Martin's avatar
      Scroll render test and perf speedup. · 4ed717ad
      Joel Martin authored
      Turns out when Windows is running in QEMU and a window scroll happens,
      there are lots of little hextile rects sent. This is slow in noVNC.
      
      - Some recording/playback improvement.
      - Add test harness to drive playback of recordings.
      - By pulling off the rect header in one chunk we get a 3X speedup in
        Chrome and a 20% speedup in firefox (specifically for the scroll
        test).
      - Also, get rid of some noise from creating timers for handle_message.
        Check to make sure there isn't already a pending timer first.
      4ed717ad
  11. 04 Aug, 2010 6 commits
  12. 03 Aug, 2010 2 commits
  13. 02 Aug, 2010 2 commits
    • Joel Martin's avatar
      New API. Refactor Canvas and RFB objects. · 8db09746
      Joel Martin authored
      New API:
      
      To use the RFB object, you now must instantiate it (this allows more
      than one instance of it on the same page).
      
          rfb = new RFB(settings);
      
      The 'settings' variable is a namespace that contains initial default
      settings. These can also be set and read using 'rfb.set_FOO()' and
      'rfb.get_FOO()' where FOO is the setting name. The current settings
      are (and defaults) are:
          - target: the DOM Canvas element to use ('VNC_canvas').
          - encrypt: whether to encrypt the connection (false)
          - true_color: true_color or palette (true)
          - b64encode: base64 encode the WebSockets data (true)
          - local_cursor: use local cursor rendering (true if supported)
          - connectTimeout: milliseconds to wait for connect (2000)
          - updateState: callback when RFB state changes (none)
          - clipboardReceive: callback when clipboard data received (none)
      
      The parameters to the updateState callback have also changed. The
      function spec is now updateState(rfb, state, oldstate, msg):
          - rfb: the RFB object that this state change is for.
          - state: the new state
          - oldstate: the previous state
          - msg: a message associate with the state (not always set).
      
      The clipboardReceive spec is clipboardReceive(rfb, text):
          - rfb: the RFB object that this text is from.
          - text: the clipboard text received.
      
      Changes:
      
      - The RFB and Canvas namespaces are now more proper objects. Private
        implementation is no longer exposed and the public API has been made
        explicit. Also, instantiation allows more than one VNC connection
        on the same page (to complete this, DefaultControls will also need
        this same refactoring).
      
      - Added 'none' logging level.
      
      - Removed automatic stylesheet selection workaround in util.js and
        move it to defaultcontrols so that it doesn't interfere with
        intergration.
      
      - Also, some major JSLinting.
      
      - Fix input, canvas, and cursor tests to work with new model.
      8db09746
    • Joel Martin's avatar
      Catch exceptions in cursor detection. · 8171f4d8
      Joel Martin authored
      If cursor Data URI scheme detection threw an exception, it would cause
      canvas initialization to fail. cursor detection exceptions should just
      disable local cursor change support, not cause canvas init to fail.
      8171f4d8
  14. 30 Jul, 2010 1 commit
    • Joel Martin's avatar
      Preliminary scaling code (deactivated). · 125d8bbb
      Joel Martin authored
      Uses the CSS "scale()" operation. The main problem is that the DOM
      container is not rescaled, only the size of the displayed content
      within it so there will need to be some sort of mechanism to handle
      this better so other elements reflow to the new size. Or it might just
      not work and be removed later. The zoom property seems to do the right
      behavior, but it's not widely supported. Worth exploring though.
      125d8bbb
  15. 29 Jul, 2010 2 commits
    • Joel Martin's avatar
      Give other events chance to fire. · 29ad96c5
      Joel Martin authored
      After each complete framebufferUpdate, set a short timer to continue
      processing the receive queue. This gives other events a chance to
      fire. Especially important when noVNC is integrated into another
      website.
      29ad96c5
    • Joel Martin's avatar
      Update TODO. · a867de16
      Joel Martin authored
      a867de16
  16. 26 Jul, 2010 1 commit
  17. 23 Jul, 2010 4 commits