3.3
3.3a8 (27 Nov 01)
- note: if you don't want a server or are using NOS 2.0 (or have problems), you should continue to use 3.3a7;
this release took longer than anticipated due to additional experiments, tuning and testing
- NOS 2.1 only: tenatively removed NOS 2.0 compatibility -- ??? are there any actual NOS 2.0 users out there
- fixed problem of exit generating delayed errors (3.3a7 workaround: Disconnect manually before exit)
- full+bar setting overlays rather than actually removes button bar -- faster, more reliable/compatible
- clipboard from server automatically sets/creates Newton clipboard object at margin
- added Prefs and Log buttons to Connect dialog
- some additional keys supported (if available): up/down arrows and Fn keys -- ??? any eMate users who can test
- VNC server! screenshot using WinVNC Viewer;
earlier documentation has been partially updated; tested with viewers: [Windows] WinVNC, TightVNC, TridiaVNC; [Macintosh] MacVNC and VNCThing 2.2;
here is a summary of usage/functionality
- Connect
- select either Viewer [default] or Server radio button
- button label changes to Connect (for Viewer) or Listen (for Server)
- for Server, you can enter a System Name (default: "newtVNC: <user name>") and Password (optional)
- ??? ideally the server application would not use the full screen, but just consist of Connect dialog?
- !!! set viewer preference to force 8-bit/256-color (for MacVNC, you may have to manually edit "VNCViewer Preferences")
- if you select Listen, Server displays its IP# and waits for a connection from viewer
- once connected, newtVNC automatically hides (accessible via * menu or Extras icon)
- after disconnect, it automatically shows and redisplays connect dialog
- ??? later it may automatically Listen again if viewer initiated Disconnect (or an error occurred)
- Prefs
- currently, newtVNC server shares only the Viewer prefs: Encoding, Display Size, Refresh,
- ??? perhaps separate Prefs for Viewer and Server or selective hiding
- Encoding
- only Raw is supported currently, so viewer Encoding settings are basically ignored; however,
if your viewer supports RRE or CoRRE, and newtVNC detects a same-color bitmap,
it can send an RRE (or CoRRE) fill rectangle (only 2 instead of w*h bytes) -- this is faster for plain background areas;
it can also pre-erase larger bitmap update areas -- which can be useful to indicate that an update is still in progress;
to disable these fills, select Raw encoding in newtVNC; to enable these fills, select any non-Raw encoding in newtVNC
and check your viewer's encodings: for WinVNC and TridiaVNC, select RRE as preferred encoding; for TightVNC,
any encoding is fine; for MacVNC and VNCThing, xxx (local buffer option); ??? for some reason, many viewers that include RRE or CoRRE
in their supported encodings list, tend to ignore those unless it's the preferred encoding (a bug IMHO; and they also
often include the obsolete "3" encoding).
- ??? initial Hextile support was slower than Raw + RRE/CoRRE same-color optimization, so not included
- ??? Zlib may be possible but only on MP2100; however, initial experiments
did not yield major speed or compression improvements -- Paul is investigating
- Display Size
- defines how large a screen to create and update --
typically, full or full+bar, though smaller sizes could work for small apps
- Grays
- ignored -- server sends update using 16-grays; since it's sent in small slices,
a large bitmap/buffer isn't needed; since the same number of 8-bit (256 color) pixels are sent to viewer,
b&w or 4-grays would not be faster or smaller (but would look worse)
- Refresh
- defines how frequently to check/send incremental updates; however,
Refresh is immediate if viewer requests a full screen update, immediately after a pen tap,
or while there are pending updates; short delay between multiple keystrokes should minimize separate refreshes
- color issues
- !!! since only 256 colors are used, the color representation is not ideal/accurate;
if backlight is turned on, a greener set of colors is used (similar to NPDS); if anyone would like to try fine tuning
these colors in NTK Inspector, I can tell you how to compute/patch the two color arrays
- ??? VNC servers/viewers do not currently/widely support actual "color maps",
so it's necessary to encode colors as "true" rgb bit values;
for 8-bit pixels, this is bbgggrrr, which isn't really adequate; perhaps if newtVNC used 16-bit pixels
(which would double the amount of data sent), it could use 5-bits for each r,g,b value -- this option may be added
in a future update, and/or I will look into using color maps if enough viewers indeed support them
- update/refresh issues
- when newtVNC detects a new open application (or global view like a popup), it updates the app's area, including border,
and patches several methods in the app (and its child views) such as viewQuitscript,
and either viewDrawScript or a class-specific change script so that it can be notified about incremental changes to the screen;
??? this patching/notification mechanism still needs much tuning to be more complete, while minimizing the number of update requests and size of update areas
- some current known refresh problems are: help books (expanding topic hierarchy in a help book),
books (i:About, i:Prefs, scroll arrows)
month view (after selecting month popup),
day picker (in Dates Prefs),
some children not patched (e.g., radio buttons in Extras:Filing; analog clock popup in statusbar)
progress bars slow down updating,
and no text caret (anyone know loc of bitmap?) or highlighting; if you don't see an expected change, you can send
a full update request from your viewer; you can also tell me the app and what didn't refresh
- newtVNC attempts to eliminate unnecessary updates, e.g., contained already in pending requests;
however, there are still situations where an app that animates or updates frequently could still cause
extra refreshes,e.g., the "Card" app
- newtVNC should unpatch apps when disconnected; hopefully there are no incompatibilities with
other 3rd party apps. don't remove memory card or Rotate while newtVNC server connected.
- !!! when NIE connected on MP2K/eMate, closing a full-screen app can often be excruciatingly slow (due to Newton system bug)
- keyboard
- regular keys work fine; Alt- on Windows maps to cmd- on Newton; I haven't tested other modifier keys/combinations
- F1-F12: I've got unicode result codes, but need low-level (hardware) keycodes (??? any eMate developers out there)
- views and controls may appear highlighted as if external keyboard were connected
- pointing
- tap, drawing, handwriting and simple gestures work!
- ??? hilighting text, selecting apps (in Extras icon mode), and dragging windows do not currently work
(unsure if it's possible to use InsertTabletSample or other low-level function)
3.3a7 (8 Nov 01)
- faster bitmap drawing for b&w and 4-grays (thanks to Paul Guyot).
current recommended Encoding is now Zlib (if available on your server), then Raw
- for those who want every screen pixel available: Display Size: full+bar
hides Newton button bar and adds its commands (including Overview) to action menu;
restores button bar for a different screen size or when exiting newtVNC.
Compact(float) makes the command bar floating/draggable.
- added Create Overview preference [and eliminated separate 3.3a6 command on action menu]
3.3a6 (6 Nov 01)
- Newton VNC client now named "newtVNC"
- drawing optimizations (thanks to Paul Guyot): faster fill b&w (1+ bpp) (fill), faster bitmap 16-gray(4 bpp)
- Zlib encoding added;
requires Zlib.pkg library from Paul Guyot
- Compact layout appears at bottom; if you want former "Compact" layout, select Compact(top)
- Title shows local Display Size when not connected
- added Overview command to action menu to create a miniature overview of entire remote screen;
overview button displays this overview (if present), rather than scrolling to 0,0
- doubletap seems to work better; ??? move (aka remote drag) still not working on Mac
- human readable messages included for some error codes in Log
3.3a5 (29 Oct 01)
- some drawing fixes, some optimizations removed and others added -- many thanks to Paul Guyot for a C++ FillRect function;
b&w still uses "reliable" (& slow) drawing
- added more text entry methods: drag-and-drop,
Cut, Copy, Paste (action menu);
and Undo and Select All
- CopyRect should now fill in missing gaps
- Connect dialog improved error handling:
empty password now ok (as long as server doesn't ask for it; and also doesn't generate error);
more specific message about empty host, display or port
3.3a4 (26 Oct 01)
- fixed coordinates so that gestures (tap, move, etc.) work after local scrolling has occurred
- added some changes so hopefully the NIE link (after an incomplete connect) should be cleaned up properly,
and more status messages should appear in Log. To help me track down remaining problems:
- remote system disconnects or you manually Disconnect
- do not exit VNC
- try turning off your Newton
- if the dialog appears asking whether to turn off anyway, tap "No"
- check VNC's Log and let me know what it says
- Log adds new items at top
(making it possible to see newest information if list becomes long)
- Handwriting preference controls whether handwriting recognition is on/off,
and also recognition of double-tap and hilite gestures
- Local UI preference let you choose from two styles of interface:
- Expanded [default: same as 3.3a3 interface]
- top: title, status
- right: vertical scroll controls
- bottom: info, horizontal scroll controls, kbd, action, close
- Compact
- top command bar only: info, title, compact scroll arrows (same as 3.3a2), kbd, action, close
- no status or long horizontal/vertical scroll controls; more space for remote display
- changed Mouse Buttons preference to Right Click preference (now works for Mac)
- Scroll Increment preference used only for
compact scroll arrows if Local UI set to Compact
- Hide moved to action menu
- 4-grays should be displayed more accurately
- some initial optimizations included to try to speed up processing and drawing into bitmap
3.3a3 (23 Oct 01)
- biggest change: client maintains a local bitmap rather than drawing directly/temporarily
to screen; this has a number of implications:
- + other views (e.g., popup views) don't get overwritten
- + when other views or handwriting "dirty" VNC, it immediately redraws
- + CopyRect encoding supported; useful typically
if something moves, e.g., remote window drag or scroll
(server can send much less data to update)
- + handwriting recognition (HWR) enabled:
when recognized chars cause the view to erase, it just refreshes
- + partial scrolls faster (server updates only new part)
- - scroll (drag) gesture removed (it's hidden by HWR)
- - up to 64K storage space for screen bitmap needed on Default Store;
see Requirements,
Display Size,
Gray Level
- since screen does not update for each little rectangle,
there are other ways to indicate progress: status area,
title
- User Interface:
- added application Extras icon -- thanks to an "anonymous contributor"
- moved: status area, title
- moved: action button to left to make room for horizontal scroll bar
- added: scrollbars
- removed: small scrollers and coordinate text field
- enabled: handwriting recognition; disabled: drag gesture
- added: hide/minimize button at upper right
- Clipboard larger; Log lists connect and disconnect status and error messages
- Preferences:
- Communication
- Raw encoding now included explicitly in ranked order of preferences sent to server
(earlier it was assumed to be implicit -- perhaps this is why some users could only connect via Raw explicitly?)
- NIE link should be released properly during Disconnect or quit
(VNC was not properly recognizing it still had a partial connection, even if no endpoint was created)
- NIE 2.0: uses 'verbose' versions of GrabLink & ReleaseLink (with automatic progress dialogs)
- various optimizations:
- (re)introduced a more careful optimization to recycle output buffers
- special handling for single 16-Gray pixels (1x1, 2x1 rectangles occur very frequently)
- changed RRE, CoRRE to do more intermediate transfers to reduce peak memory demands
3.3a2 (17 Oct 01)
- fixes a race condition/avoids buffer overwrite (and zeroes some pad bytes) when sending output to server
- some users have reported better luck when setting Encoding to Raw
3.3a1 (17 Oct 01)