Commit Graph

61 Commits

Author SHA1 Message Date
Stephen Heumann b0fc30052e Explicitly recommend Marinetti 3.0b9 or later for best performance. 2018-07-04 20:45:07 -05:00
Stephen Heumann 15ae230609 Update title/description for site. 2017-04-20 21:46:03 -05:00
Stephen Heumann b4c8941871 Set theme jekyll-theme-dinky 2017-04-20 21:41:37 -05:00
Stephen Heumann 0d491e2402 Fix README formatting 2017-04-20 21:41:02 -05:00
Stephen Heumann ffa63e2bb4 Update version number 2016-09-30 17:43:29 -05:00
Stephen Heumann 4788d6ac0c Update README 2016-09-30 15:54:51 -05:00
Stephen Heumann 1e7b5a13fe Check for events during raw drawing based on time, rather than every 16 lines.
This avoids situations where the system may seem unresponsive for some time (primarily, I think, due to network processing being relatively slow).
2016-09-29 20:16:18 -05:00
Stephen Heumann a11e065a35 Adjust the mode-switching code to provide smoother transitions.
This leaves the SHR screen active throughout the mode switch.
2016-09-28 23:22:16 -05:00
Stephen Heumann 26037d8c62 Support sending non-ASCII characters in key events.
This involves a mapping from the IIgs character set (MacRoman) to X11-style keysyms. This is possible for all of them, but not all of these are necessarily supported in every client.
2016-09-28 19:21:16 -05:00
Stephen Heumann 99e38a1d6a Update README 2016-09-25 18:09:51 -05:00
Stephen Heumann 8dab988cd6 Update version numbers 2016-09-25 17:01:10 -05:00
Stephen Heumann b97dcb39e8 Make sure connection is closed and ipid is logged out in error cases. 2016-09-21 23:52:25 -05:00
Stephen Heumann e15038f3ec Avoid long hangs on disconnect if the connection is disrupted. 2016-09-21 21:23:06 -05:00
Stephen Heumann 5c1fc77f9b Don't request another FBUpdate in NextRect if one is already coming.
This helps avoid issues where the GS may be unable to "catch up" with the stream of FBUpdates, resulting in it continually drawing out-of-date screen data.
2016-09-21 18:30:03 -05:00
Stephen Heumann a6a34dd080 Don't block waiting for large clipboard transfers. 2016-09-21 17:52:47 -05:00
Stephen Heumann f4c403d8d8 Translate character sets on clipboard send/receive, so non-ASCII text can be exchanged.
The RFB spec says the clipboard data should be in the ISO 8859-1 character set, but we follow several other VNC implementations in actually using Windows-1252 (which is a superset of ISO 8859-1).
2016-09-17 18:01:31 -05:00
Stephen Heumann aa868d6ff6 Move TCP read routines to a separate file.
Also, clean up some of the includes in various files.
2016-09-17 17:06:53 -05:00
Stephen Heumann ceeaeb7767 Access data in read buffer using pointer instead of handle.
This is a prelude to revamping the read routines.
2016-09-15 21:40:39 -05:00
Stephen Heumann e8a4d86f6b Remove old version number in README 2016-09-06 18:29:00 -05:00
Stephen Heumann 9e5dc390a5 Update version and copyright year 2016-09-05 22:58:50 -05:00
Stephen Heumann 0bf868147c Update README 2016-09-05 22:56:55 -05:00
Stephen Heumann 462b351425 Report zero-length reads as successful.
I've encountered a server that sometimes sends zero-size cursor updates, which can trigger this case.
2016-09-05 21:52:24 -05:00
Stephen Heumann af7b5b8119 Do raw drawing incrementally while data is being received.
This currently disables the support for skipping invisible pixels. It is generally not very important, since raw drawing speed usually is not the bottleneck.
2016-09-05 17:22:10 -05:00
Stephen Heumann ec3cbc6748 Implement option to tune Marinetti for high throughput.
This sets the tcpTUNEIPUSERPOLLCT and tcpTUNEIPRUNQCT tuning parameters to 10 (the maximum) instead of the default of 2. This makes Marinetti process more incoming data at once and significantly increases throughput. (Actually, current versions of Marinetti only seem to use tcpTUNEIPUSERPOLLCT, but we set both for compatibility with any future versions that actually use tcpTUNEIPRUNQCT.)
2016-09-02 19:08:45 -05:00
Stephen Heumann 3f9fadd8cb Add check box to tune Marinetti for high throughput.
This is a precursor to a patch to actually implement the tuning.
2016-08-31 23:37:18 -05:00
Stephen Heumann d281a30f98 Use less ugly (and faster) code for content origin calculations.
Specifically, use a union rather than pointer-based type punning to convert the Long value returned by GetContentOrigin() to a Point. This makes for more readable code and should also generate somewhat better assembly code.
2016-05-28 23:58:04 -05:00
Stephen Heumann aa15c60672 Have Marinetti return a new handle in ReadFixup.
This should be faster, as in DoReadTCP, and it simplifies the code a little.

Also, check for returned data size of 0 in DoReadTCP. I don't think this should happen, but in case it did, the returned handle could be invalid.
2016-05-28 23:19:13 -05:00
Stephen Heumann e1288f7e1b Small refactoring to reduce boilerplate code
DoReadTCP automatically disposes the old read buffer handle before doing the read, and then locks the new read buffer handle before returning. This removes the need for most explicit locking/unlocking of the handle. A macro is provided to dispose of the handle earlier (useful in a few cases where it may be big, and another read isn't immediately performed).

Also, set displayInProgress to FALSE in NextRect, rather than in code for each encoding.
2016-05-28 21:59:35 -05:00
Stephen Heumann 3a175f9b02 Have Marinetti return read data in a new handle.
This should be faster than the other options (reusing an existing handle or using a pointer) because it avoids an extra copy of the data inside Marinetti. For the other options, Marinetti will create a new handle and copy the data to it anyway, but then copy it again into the requested destination.
2016-05-28 20:41:43 -05:00
Stephen Heumann 46a1657580 Properly set up for next rectangle after out-of-bounds CopyRect. 2016-05-28 18:33:31 -05:00
Stephen Heumann bb65891a4a Use shadowing and fast port optimizations for QuickDraw.
This should cause a bit of a speedup, although it wasn't really noticeable in my tests.
2016-05-21 12:35:51 -05:00
Stephen Heumann d1b2e10489 Don't duplicatively regenerate color table entries.
The logic for making sure the color table was complete before connecting was slightly broken due to wraparound, so it would cause all entries to be generated, re-generating any that already had been. This fixes it, which should make the initial connection process slightly faster on slow systems.
2016-05-21 00:23:48 -05:00
Stephen Heumann 1b4d47b690 Speed up raw drawing by calling EventAvail and SystemTask less often.
They are now called only every 16 lines, instead of every line. This is enough to maintain reasonable responsiveness, while providing a measurable speedup.
2016-05-20 23:09:40 -05:00
Stephen Heumann aa38f6d209 Use faster assembly routine for 320-mode raw pixel decoding too.
The assembly code for the 640-mode and 320-mode routines is moved to a macro so it can be shared between them.
2016-05-20 22:08:05 -05:00
Stephen Heumann 9e401f4a83 Switch to using faster assembly routine (instead of C) for 640-mode pixel decoding loop. 2016-05-14 17:30:44 -05:00
Stephen Heumann 12999358b5 Use a static (instead of dynamically allocated) buffer for SHR pixels generated from raw decoding.
The program code is moved to a separate segment to make room for the buffer.
2016-05-13 21:44:12 -05:00
Stephen Heumann 141739c985 Clean up headers and make things static where appropriate.
Also include a few missing prototypes, which could possibly fix bugs.
2016-05-13 20:19:27 -05:00
Stephen Heumann b8bdc81eda Statically allocate space for color tables in an assembly file.
This is a prelude to rewriting the raw decoding logic in more efficient assembly code.
2016-05-13 18:34:23 -05:00
Stephen Heumann b9699111da Add link to binary releases. 2015-09-29 18:00:32 -05:00
Stephen Heumann e0044468e3 Fix a memory leak in ReadFixup.
The buffer from the last read is still left around until the next one, but this should usually be fairly small, and it's the same behavior as the main DoReadTCP routine.
2015-09-29 17:21:37 -05:00
Stephen Heumann c6389c9925 Optimize 640 mode raw decoding for case where consecutive blocks of 4 pixels are the same.
This is also a win provided it can use the optimized case over ~40% of the time.
2015-09-28 22:48:23 -05:00
Stephen Heumann 2f13669a2f Optimize 320-mode raw pixel decoding for the case where two consecutive pairs of pixels are the same.
This is only a win if we can use the optimized case a reasonable proportion of the time (~40% or more), but that should be the case for most real screen images.

The equality comparisons are written with XORs because that produces better assembly code.
2015-09-28 20:53:45 -05:00
Stephen Heumann 13cd339277 Add a file.
This is a slightly reformatted version of the existing README.
2015-09-26 23:58:19 -05:00
Stephen Heumann 3c069bc35d Raw decoding optimization: Do operations using 16 bits where possible.
This saves a few instructions that were being used to switch to 8-bit mode or mask values down to 8 bits.
2015-09-26 22:16:04 -05:00
Stephen Heumann f810cb3799 Optimize the core loops for decoding raw pixels a little, in particular deferring increments to the end. 2015-09-26 14:26:05 -05:00
Stephen Heumann 59a3bf938c Use 16-bit computations for shifts, where possible.
This causes ORCA/C to generate better code, using shift instructions rather than function calls.
2015-09-26 01:24:58 -05:00
Stephen Heumann 8861cb4a3a Replace a few mod-by-power-of-2 operations with bit masking, since ORCA/C wasn't optimizing them 2015-09-26 00:33:08 -05:00
Stephen Heumann 8ee57096d2 Fix bug where the rightmost few pixels of a cursor could sometimes be corrupted 2015-09-25 23:47:09 -05:00
Stephen Heumann 8cdef04732 Terminate blocking reads on TCP errors, instead of waiting for timer to expire.
This should avoid most cases where the program seems to hang for 15 seconds.
2015-09-25 19:02:52 -05:00
Stephen Heumann 50a273440a Update README for version 1.0b2.
Use a standard open source license (two-clause BSD license).
2015-09-24 22:33:24 -05:00