1. 06 Aug, 2015 8 commits
    • Solly Ross's avatar
      Use Typed Arrays for the send queue · 9ff86fb7
      Solly Ross authored
      This commit converts the send queue to use typed arrays, and converts
      message creation functions in 'rfb.js' to create messages directly into
      the socket's send queue.  This commit also removes the separate mouse array,
      which is no longer needed.
      9ff86fb7
    • Solly Ross's avatar
      Avoid Creating Small Objects Frequently · d1800d09
      Solly Ross authored
      Creating lots of small objects frequently can drastically decrease
      performance.  This commit introduces three fixes which avoid this:
      
      - Use a preallocated palette and indexed-to-rgb destination Typed Array
        (the destination typed array is currently allocated at `4 * width *
        height`).
      
      - Inline `getTightCLength`, which returned a two-item array.
      
      - Pass RGBX data directly in a Typed Array to the Display, which
        avoids an extra loop, and only creates a new Typed Array View,
        instead of a whole new ArrayBuffer.
      d1800d09
    • Solly Ross's avatar
      Use Typed Arrays for the Websock receive queue · 38781d93
      Solly Ross authored
      **This commit removes Base64 (and Flash) support**
      
      This commit converts websock.js to used Typed Arrays for the
      receive queue (and tweaks rfb.js to ensure that it continues
      to function, since only Firefox implements
      `%TypedArray%.prototype.slice`).  Base64 support was removed
      to simplify code paths, and pave the way for using Typed Arrays
      for the send queue as well.
      
      This provides two advantages: first, we allocate a buffer ahead
      of time, meaning the browser doesn't have to do any work dynamically
      increasing the receive queue size.  Secondly, we are now able to pass
      around Typed Array Views (e.g. `Uint8Array`), which are lightweight, and
      don't involve copying.
      
      The downside is that we initially allocate more memory -- we currently
      start out with 4 MiB, and then automatically double when it looks like
      the amount unused is getting to small.
      
      The commit also explicitly adds a check to the compacting logic that
      avoids calling the copy functions if `_rQlen === _rQi`.
      38781d93
    • Solly Ross's avatar
      Remove unecessarily nested loop · 6c883653
      Solly Ross authored
      This commit removes a nested loop in indexedToRGB, converting it into a
      plain loop without multiplication.
      6c883653
    • Solly Ross's avatar
      WIP: Switch to Pako for zlib · 6940936f
      Solly Ross authored
      This commit introduces an alternate implementation of the zlib
      decompressor based on Pako (https://github.com/nodeca/pako).
      6940936f
    • Solly Ross's avatar
      Fix RFB.js JSHint Errors · 0442e153
      Solly Ross authored
      This fixes a couple of JSHint errors in RFB.js caused
      by using `==` instead of `===`.
      0442e153
    • Solly Ross's avatar
      Fix up vnc_playback.html and playback.js · efed2eea
      Solly Ross authored
      This commit fixes vnc_playback.html and playback.js
      so that they work with the current version of noVNC.
      efed2eea
    • Solly Ross's avatar
      CI: Switch to Container-Based Travis · bc4414f5
      Solly Ross authored
      This commit switches the Travis tests over to Travis's new
      container-based infrastructure.  It also tells Travis to
      cache the node_modules directory for faster setup.
      bc4414f5
  2. 01 Jul, 2015 1 commit
  3. 25 Jun, 2015 7 commits
  4. 24 Jun, 2015 1 commit
  5. 16 Jun, 2015 1 commit
  6. 12 Jun, 2015 2 commits
  7. 19 May, 2015 2 commits
  8. 05 May, 2015 1 commit
    • Samuel's avatar
      Update LICENSE.txt · 613f05ee
      Samuel authored
      Removed old no longer existing vnc.js and added playback.js
      613f05ee
  9. 04 May, 2015 2 commits
  10. 29 Apr, 2015 1 commit
  11. 07 Apr, 2015 1 commit
  12. 27 Mar, 2015 2 commits
  13. 26 Mar, 2015 3 commits
    • Solly Ross's avatar
      Throw exceptions from RFB constructor · d9fc1c7b
      Solly Ross authored
      Previously, if an error was thrown from the Display constructor
      in the RFB constructor, we would attempt to use `RFB#updateState`
      to handle this.  However, `RFB#updateState` attempts to close
      the WebSocket connection, which doesn't exist at this point.
      
      In the constructor, it's probably just better to raise an exception
      instead (making sure to clean up anything relevant).
      
      Fixes #460
      d9fc1c7b
    • Solly Ross's avatar
      Create RFB object on connect · 58ded70d
      Solly Ross authored
      In e543525f, we switched to creating
      a new RFB object on disconnect.  This caused issues, however, since
      any errors were only displayed briefly before the new "loaded" text
      was displayed instead.
      
      Now, we create the RFB object on connect.  This essentially removes
      the usefulness of the "loaded" state, but prevents the aforementioned
      problem.
      
      To facilitate this, the code which does detection of cursor URI support
      was moved from this Display constructor (which now calls the new
      function) into its own function, `Util.browserSupportsCursorURIs()`.
      
      Fixes #467
      58ded70d
    • Solly Ross's avatar
      Follow symbolic links in launch.sh · 2ace90e6
      Solly Ross authored
      Previously, in launch.sh, `$HERE` was the directory of `$0`.
      However, if `$0` was actually a symlink, `$HERE` would be
      wherever the symlink was, which could cause issues (for
      example, the script wouldn't be able to local `$WEB` or
      `$WEBSOCKIFY` properly).
      
      Now, `$HERE` looks at whatever `$0` points at instead.
      
      Closes #447.
      2ace90e6
  14. 11 Mar, 2015 1 commit
  15. 10 Mar, 2015 1 commit
  16. 09 Mar, 2015 1 commit
    • samhed's avatar
      * Don't check specific html elements from the display code (Fixes #446) · fdedbafb
      samhed authored
      * Renamed and reworked fbuClip to clippingDisplay
      * Added tests for clippingDisplay
      * Use the a noVNC_container which covers the entire page to get the full size
        (Fixes #463)
      * Added maxWidth and maxHeight to the canvas which can limit the viewport size
      * Only show either the canvas or the logo, hide one when the other is shown
      * Always center the canvas (previously it was only centered when not clipping)
      * Removed iOS specific "position-fixed" fixes and start calling setBarPosition
        on every resize
      * Removed the noVNC_screen_pad
      fdedbafb
  17. 05 Mar, 2015 3 commits
  18. 03 Mar, 2015 1 commit
    • Solly Ross's avatar
      Support local scaling · 72747869
      Solly Ross authored
      This commit adds two new addition scaling options.  Both options do
      local scaling.  The first "Local Scaling", does both upscaling and
      downscaling.  The second option, "Local Downscaling", only downscales.
      
      This is based on work by @mightypenguin (with an additional bug
      reported by @glazik12).
      72747869
  19. 27 Feb, 2015 1 commit
    • Solly Ross's avatar
      Update UI to allow for different scaling modes · 8b46c0de
      Solly Ross authored
      This commit updates the UI to allow for different
      scaling modes.  The "resize" option was changed to
      be a dropdown with the following options: "None" (nothing),
      "Remote Resizing" (SetDesktopSize).
      8b46c0de