Mohammed Naser [Thu, 17 May 2012 16:48:42 +0000 (13:48 -0300)]
Remove old flagfile support
default_flagfile has been removed from the nova trunk in favour of .ini files (https://github.com/openstack/nova/commit/7e3e9b8e9cea4f1bf78d127ffb915b79c854fdbe)
Joel Martin [Thu, 17 May 2012 16:19:07 +0000 (11:19 -0500)]
rfb: Use the render queue for copyrect.
This will keep copyrect rendering actions in order with tight and tightPNG
rendering actions (otherwise you can get visual image corruption when
they are mixed together).
Warning:
RAW, RRE and HEXTILE still use immediate render commands so there is
still the risk of out-of-order rendering if RAW, RRE, and HEXTILE are
mixed with tight and tightPNG. Copyrect will work with either because
the renderQ_push function will render copyrects immediately if they
are the only thing being pushed on the queue.
Joel Martin [Thu, 17 May 2012 16:13:08 +0000 (11:13 -0500)]
Move render queue processing to Display and use requestAnimationFrame
The imgQ code in RFB should be a generic rendering queue system in
Display.
The reason for the render queue in the first place is that images
loaded from raw data URI strings aren't immediately ready to display
so we have to wait for them to complete 'loading'. However, when data
URI images are mixed with other types of rendering actions then things
can get out of order. This is the reason for the rendering queue.
Currently this only keeps display actions for tight and tightPNG
related actions in order (because they use a mix of fills, raw pixel
data and data URI images).
Joel Martin [Thu, 10 May 2012 23:13:07 +0000 (18:13 -0500)]
Add/use display.drawImage which is viewport relative.
Fixes https://github.com/kanaka/noVNC/issues/163
When using an encoding with raw images (tight, tightPNG) we need to
draw those image relative to the viewport so that clipping works when
the viewport isn't at 0, 0.
Joel Martin [Thu, 26 Apr 2012 13:18:27 +0000 (08:18 -0500)]
Comment out duplicates in unicodeTable.
Unfortunately the values for those duplicate keys are not the same and
I'm not sure which ones are more correct. However, for now, I've
commented out the second occurrence.
This data is generated from /usr/include/X11/keysymdef.h using the
utils/u2x11 script.
Anthony Young [Tue, 3 Apr 2012 17:08:41 +0000 (10:08 -0700)]
Add nova-novncproxy
* Adds the nova-novncproxy binary, to provide support for vnc + OpensStack nova
* Adds the ability to pass an auth token in via url, which is subsequently
passed back to the proxy as a cookie.
Joel Martin [Wed, 14 Mar 2012 01:29:02 +0000 (20:29 -0500)]
Release down/pressed keys when window loses focus.
May window managers have a keyboard shortcut that switch away from the
current desktop (e.g. desktop switcher). Unfortunately, when this
happens, the meta/control keys that are used with the shortcut will
send a down event to the browser, but the up event will never be sent
because the browser no longer has focus at the point when the up event
happens. This can cause weird stuck key issues for VNC clients (not
just noVNC). To get around this, we try and detect when the browser
loses focus and release any keys that are on the keyDownList.
As an aside, if you run into this situation (in noVNC or another VNC
client), you can unstick the state by pressing and releasing the Ctrl,
Shift, Alt, etc.
Joel Martin [Sun, 11 Mar 2012 01:56:19 +0000 (19:56 -0600)]
Stats: count pixels instead of just FBU.rects.
With last_rect, the rects count can be high until a last_rect
pseudo-encoding is received which messes with the timing stats. So
count up the number of pixels rendered and show timing after the pixel
count reaches the width*height of the screen.
Joel Martin [Thu, 2 Feb 2012 15:29:02 +0000 (09:29 -0600)]
Make WebSocket encrypt setting default to page protocol.
I.e. if the page is https:// then the WebSocket encrypt setting will
default to wss:// (TLS encryption).
Note that since noVNC settings are saved in cookies, this will only
affect first load. If you have already loaded the page, then the
encrypt setting will be whatever you last set it to.
Joel Martin [Fri, 27 Jan 2012 22:03:20 +0000 (16:03 -0600)]
Default path 'websockify' for Clojure Websockify.
The Jetty WebSocket server code used by the Clojure version of
websockify doesn't support WebSocket and Web at the same path so pass
in a default value for the path so that we can support the Clojure
version websockify.
Joel Martin [Thu, 12 Jan 2012 23:07:07 +0000 (17:07 -0600)]
Merge remote branch 'origin/issue-70'
Conflicts:
include/display.js
include/rfb.js
This merges in the fix for https://github.com/kanaka/noVNC/issues/70
This changes noVNC to use the preferred color ordering that most VNC
server prefer and that VMWare VNC requires. It's possible this may
break some VNC servers out there in which case we might have to do
something a bit more subtle such as having alternate render functions
for little and big endian color ordering.
Based on proposal from @mightpenguin:
Matthew Balman <emperor@mightypenguin.org>
If view_only option is set then do not send mouse and keyboard events.
This is not a secure/enforced way to make a client view only. To
enforce view only at the server, most VNC servers support setting
a view only password.
- Use array module for unmasking HyBi when no numpy module is
available.
- Detect client close properly when using python 3.
- Print request URL path is specified.
- New option --run-once will exit after handling a single WebSocket
connection (but not ater flash policy or normal web requests).
- New option --timeout TIME will stop listening for new connections
after exit after TIME seconds (the master process shuts down).
Existing WebSocket connections will continue but once all
connections are closed all processes will terminate.
Joel Martin [Mon, 26 Sep 2011 16:28:24 +0000 (11:28 -0500)]
Remove support for non-HTML5 browsers.
Display API change:
- getTile -> startTile (no longer returns a tile)
- setSubTile -> subTile (drop img/tile first parameter)
- putTile -> finishTile (no longer takes img/tile paramter)
The Display tile logic uses canvas image data directly and
caches/reuses a 16x16 imageData tile (for other sizes, the tile is
create for each call). This gives a 30% speedup on Chrome
13 (and no significant change for Firefox 3.6/4.0).
Other:
- Remove rgbxImageFill and cmapImageFill routines.
- Simplify constructor tests and just error if createImageData is not
supported by canvas instead of .
- Remove webkit canvas bug workaround that effects Chrome 7. Chrome
7 usage share is now less than 0.5 percent and the workaround is
ugly. Drop the function wrapping in the constructor and the canvas
flush() routine.
- Remove support for getImageData (Opera 11+ now required)