v1.59, Sun Dec 4 01:03:30 PST 1994 ****** PLEASE NOTE ****** Version 1.59 of wb requires changes to your .sd.tcl file. The file NOTES contains a new wb script that should replace the one in your .sd.tcl. ************************* - make `receiveOnly' default to true to minimize damage from scribblers who don't update their sd.tcl. (suggested by Steve Casner) - were treating postscript strings with embedded '%' as comments and discarding rest of line when printing ps files. (this particularly affected mac ps files & converted them to invalid postscript). (bug reported by Paul Suhler suhler@xanthus.usc.edu & Greg Earle earle@isolar.Tujunga.CA.US). - loosen up the definition of a 'point' for click-and-type to make it easier for caffeine junkies to type in strings. (suggested by Steve Deering & Deborah Estrin) - make printing work on an Alpha running osf/1 - rewrote interviews pager to get rid of some of the weird page flipping behavior (double stepping, bouncing pages just after flip in large conf, etc.). - just complain, don't abort, if user tries to import a ps file with bad structure. - don't coredump if we change page orientation after a postscript error has caused ps interpreter to exit. - do a lot more sanity checking on incoming packets to try to avoid coredumps from bad drawops. - font scaling stuff from 1.58 was pretty broken: need to flush font cache when page is resized and need to scale x font widths by current page scale factor or text gets all scrunched up. - implement Sally Floyd's suggestion on a deadtime after a repair response to flush duplicate repair requests. v1.58, Fri Jul 29 21:13:32 PDT 1994 - Added soft `receive only' mode. If wb is set receiveOnly, the user can't make any marks on a page, import files or force remote page flips. 'ReceiveOnly' mode is controlled by the X resource "wb.receiveOnly" (which defaults to 'false'), the command line flags -r (sets receiveOnly to true) & +r (sets receiveOnly to false) and the "Receive Only" check box in the sitebox window. (this mode suggested by Angela Sasse & Mark Handley of UCL.) - Keep names in sitebox sorted. (Collating order is case-independent on letters with all ip addresses after all names). - Added "wb.IconMark" X resource that will add mark to iconified wb's title when it is drawn on (similar to IconMark resource in vat). (suggested by Mark Handley of UCL) - Changed Interviews font machinery so that fonts are scaled by picking closest size X font rather than scaling bitmaps. - Changed brush machinery so that drawing line thickness is scaled appropriately when window is resized. - Added 'wb.CompactLayout' X resource to force a more compact screen layout (color palatte turned into menu). Also removed `clone page' button since `history' machinery to support its intended use hasn't been implemented yet & it is frequently abused. Result of this, font & brush change it that it's possible to shrink a wb down to ~1/4 screen size & still use it. (changes suggested by Atanu Ghosh & Mark Handley of UCL) - Correct mapping of font numbers to X LFD names (was turning 'oblique' into italic so helvetica oblique wouldn't work; also had most of the weights wrong & was missing 6 of the Adobe 'standard 15' faces). - Printing of ellipses was broken (used wrong coordinate system for brush size). - Added b-spline fit to smooth freehand lines (when drawing button released the straight line segments are replaced by a smoother b-spline approximation). The X resource "wb.LineSmoothness" can be used to control the "smoothness" of the final line. Larger numbers make the line "smoother" but a poorer approximation to the user's line segments. Smaller values make the spline a better approximation to the user's line segments but 'rougher'. The default LineSmoothness is 16. The lower limit is probably 2 (the fit may blow up if smoothness gets too small) and the upper limit is probably 200 (more than this & the fit will bear no resemblance to the user's line). Setting wb.SmoothLines to "true" will turn on the b-spline fit (default is false). Can also toggle line smoothing on/off via "Smooth Lines" check box on sitebox window. - Added 'wb.dpsUseColor' to control whether Display Postscript displays in color or just with grayscale. If wb.dpsUseColor is false, DPS will use a 32 level gray ramp (the same one used by nv) and map colors to gray. (This is to free color map cells for video use since it seems to be impossible to force DPS to use a color map that doesn't conflict with nv on SGIs.) - Added PointerMotionHintMask back to drawing window so motion events get compressed & wb doesn't get so far behind when doing arrows, moves or copies on busy pages. This allowed passive grabs on buttons to be removed which seems to make 'point to type' mode work much more reliably. - Did some work to try to reduce X traffic during drawing (the Interviews redraw model is just fundamentally broken). Hacked library so clip mask never messed with in drawing window so we don't have to reset it every drawop. Made sitebox highlighting and activity updates be done directly rather than going through IV (which cut X traffic by a factor of 70). (problems reported by Chris Kantarjiev of PARC.) - Still had packet source stuff wrong -- was using ip src addr instead of src id field in packet header. - Fixed abort on invalid font id (were passing 0 to strlen). - Try to do a better job infering when click-and-type is allowed. - Port to DEC OSF/1 v2.0 (i.e., undo all the workarounds we had for bugs with the v1.3 C++ environment). - Deal with BSDI's gratuitous change to the multicast sockopt numbers: If running on x86, try both the correct & BSDI's numbers for the sockopts & use whichever works (so program will run on both versions on BSD/386, NetBSD, etc.). v1.5[5-7], Mon Dec 20 03:26:01 PST 1993 - Added "Print" button that saves current page contents as a postscript file that can either be saved to disk or piped to lpr. - Made more changes in postscript handling to try to accomodate broken postscript files (particularly the weird, non-conforming junk that FrameMaker produces): - set $brkpage to try to circumvent Framemaker's confused ideas on 'error recovery'. - added sigchld & sigpipe handlers so we can detect when bad ps causes gs to abort. - wasn't setting up DPS clippath after changing page layout so programs that queried clippath to get device imageable area got bogus numbers. - removed bogus packet source check that screwed up multi-homed hosts and kept Anders Klemets' wb playback tool from working. (bugs reported by Anders Klemets and Brad Parker). - fixed really stupid bug where characters were being drawn twice if page wasn't in portrait orientation. - ignore ENOPROTOOPT errors on network sends (bug reported by Carl Malamud). - lots of changes needed to port to Alpha OSF/1 and HPUX. v1.54, Mon Oct 11 00:13:46 PDT 1993 - Added -S (suppress/mute new sites) flag and checkbox control on bottom of sitebox. If this flag is on, new sites will come up muted (e.g., their scribbling won't show up on your display). For example, if you are watching a lecture you might want to start wb with the -S flag then unmute the lecturer's site. This will save your view of the lecture from being interrupted by random scribbling or page changes. - Finished implementing 'point to type' mode and added checkbox control to turn it on. (In point to type mode the text you type is placed at the current cursor position. You don't have to click before typing.) (change requested by Deborah Estrin). - Fixed several problems with gs locking up when importing badly formed postscript files (files missing a showpage, files containing infinite loops, non-conforming files containing multiple pages, etc.). Pretty much re-wrote the way wb talks to gs so data to be imaged is written to a temp file & gs is fed something that looks a lot like a ps printer's server loop so we can detect `stopped' programs, eof, etc. (Bugs reported by Jon Crowcroft et. al. of the MICE project.) - Made default page 'name' use IP address rather than hostname. The hostname lookup on SunOS/Solaris is so pathetic that huge delays were being introduced from wb doing a 'gethostbyaddr' to construct the page name. (Problem reported by Mark Handley at UCL.) - Added a MaxPostScriptSize X resource and "-P size_in_bytes" command line flag. People have been importing multi-megabyte screendumps into wb which take forever to send and do horrible things to the network. Wb now refuses to send a PS page that's bigger than MaxPostScriptSize. MaxPostScriptSize defaults to 32KB but can be changed (up to a max of 1MB) be setting the X resource or supplying -P on the command line. NOTE: If you get the error: -wb: can't send PS pages larger than NNN bytes (is SSS) take a look at the file NOTES for suggestions on how to reduce the size of PostScript files (and investigate 'lzps' and 'distill'). - Fixed a bug that could result in binding to the wrong local address for unicast conferences on a multi-homed host. - Fixed a bunch of bugs in site muting (were several ways that a 'muted' site could put marks on screen or change page -- there shouldn't be any now). - Fixed DefaultBrushColor X resource (was intended to select which brush color is initially selected but thing that build menu was using wrong name for resource). - Timers were still too aggressive. Need to average at least 300ms between replyers & want >100ms before first reply to accumulate multiple requests (otherwise if request arrives while we're in middle of reply we'll do duplicate reply). - Fixed DPS bug: was always using screen 0 for DPS context even if wb window on some other screen. (problem reported by Tom Kessler at Sun.) - Fixed several bugs in repair of pages that had been `cloned' from some other page (old code simply didn't work). v1.53, Tue Aug 10 02:56:09 PDT 1993 - Added 'quit' and 'undo' buttons. (Actually 'undo' is 'undelete', e.g., the same as shift-right mouse but 'undelete' was too long a label.) - Changed sense of 'landscape' (-l) & 'seascape' (+l) orientations since 90 deg rotation seems to be what most postscript programs consider 'landscape'. This change means default page orientation is rotated 180 deg. from what it used to be. - Re-did tool bar to fit new buttons, reduce width for small screens (e.g., 640x480 Powerbook or PARC pad) and improve (I hope) appearance on color displays. On small screens the 'color' palette now turns into a menu since there wasn't enough room for the palette in landscape orientation. - Added code to derive page names from participant name rather than host name. (Uses up to 8 characters of name, breaking, if possible, at the last non-alpha character in the first 8.) - Made title default to "destAddr/port" (like vat) rather than 'wb'. - Added orientation to response to wbimport "?" query so wbimport can supply correct orientation to X window dump & scan procedures. - Added kluge to allow multiple wb's for the same conference on one cpu. Starting wb with a -M flag or setting "wb.AllowMultWB: true" in .Xdefaults will set SO_REUSEADDR on the receive socket so multiple wb's can be started & will enable local loopback on the send socket so those wb's can hear each other. The effect of this is that you can start two wb's, one displaying on your workstation and one displaying on your pad & they will appear to the outside world as one participant - anything you do on either screen will be "owned" by both. *NOTE THAT THIS IS A KLUGE* intended to get around a particular problem at PARC using wb with Pads. Don't use it unless you have to. If you have to use it, note that *all* wb's have to have the -M flag or very strange things will happen (this has to do with the way the multicast kernel uses SO_REUSEADDR). So if you regularly use a PARC Pad, it's probably best to set "wb.AllowMultWB: true" in your X resources rather than trying to remember to always supply -M. - Fixed yet another bug in 'repair' processing of blank pages -- it original owner had vanished, wb would always say page was incomplete ('*' in front of page name). v1.51/1.52, Wed Aug 4 04:03:37 PDT 1993 - Made displayed page number be abbreviated form of 'global name' rather than local slot number. (suggested by Mark Handley & George Michaelson) - Added support for page names (site that creates a page can give it a 1 - 32 char name). Added support to wbimport for naming pages & extracting current page names from wb. (suggested by Mark Handley) - Added '*' marker on page name if current page was incomplete. (suggested by Mark Handley). - Fixed problem with importing non-conforming, multi-page postscript files: since wb can't know where boundary of first page is, it's trying to push data after first page down to gs while gs is trying to send back a 'page' event & things lock up. Now do non-blocking writes to gs & kill gs if all the postscript data isn't consumed (since stuff in pipe after first page will confuse future ps rendering.) This doesn't handle case where all of 2nd page fits in pipe but is better than what we had (there isn't a good general solution other than asking people to use standard conforming files). - Added wb.RasterCacheSize resource to control amount of X server space used to cache pixmaps of rendered postscript images. Size defaults to 16. (suggested by Jon Crowcroft) - Repair reply timers were much too aggressive. Backed them off an order of magnitude to cut down on duplicate replies. v1.50, Sun Jul 11 06:15:48 PDT 1993 - Fixed lots of brokeness in repair processing. It now seems to work fairly reliably & not get too far behind. - weren't killing gs on exit or when scaling or orientation changed so machine tended to fill up with gs processes if wb run for a while. v1.46, Wed Jun 30 18:52:38 PDT 1993 - there's no longer a default address or port for wb -- you always have to supply an address & port. The 'persistent information' model turned out to be too persistent to support a 'default conference' -- there was no way to make it go away as long as someone in the world had a wb running. - suppression of duplicate repair responses was completely broken. Were looking who sent data instead of original source of data so everyone would reply to every repair request. We now look at data identity, not sender's identity to suppress duplicates. - re-did interface to gs to speed up gs rendering. We now fire off a gs & keep using it until screen orientation or scaling changes. Seems to speed up ps rendering by a factor of two or more. - added a lot more checking for invalid drawop so `killer wb's with bogus data should find it harder to make wb core dump. (harder, but not impossible -- much more work needs to be done in this area). - keep track of 'user mode' drawops that we receive sequentially so we can request repair of missing ops in real time. - implemented new protocol for wbimport: can now request normal or 'deferred' import or to go to particular page. optional reply can be returned giving page # of imported file if import successful. - handle '^C' & '^Q' in sitebox window as well as in main window. - Use new IV selection stuff so paste now uses ICCCM standard selection mechanism rather than cut buffer. Also can now cut and paste in typein boxes (like encryption key or ps filename). - changed Ghostscript color model so you could tell it to only use colors from DEFAULT_RGB_MAP color cube (& made this the default) so color allocation won't change from image to image and earlier color images won't look strange if you flip back to them. (This change requires new gs which is available on ftp.ee.lbl.gov). v1.40,41,42 Mon Jun 7 22:24:06 PDT 1993 - fixed bug in 'repair' processing that prevented some postscript files from every being shipped if data lost didn't include at least one 'visible' drawop. (problem reported & diagnostic help from Jim Martin @ rutgers). - When I added net info to sitebox, I seem to have broken width resizing (could only change height). Fixed. v1.39, Mon Jun 7 19:15:31 PDT 1993 - put in rescaling support. resizing the wb window now rescales all the drawing for the new window size. also added X window manager calls to set window aspect ratio & max size so zoom & resize will work correctly. (requested by Robert Elz & Steve Deering.) - added indicator to sitename to show when site repairing current page. (suggested by Robert Elz & George Michaelson.) - wb now always attempts to use Display PostScript then, if the X server doesn't support it, falls back to ghostscript. Added an X resource wb.UseDPS: false and a command line flag (-d) to disable use of DPS so wb will always choose ghostscript. (suggested by George Michaelson.) - make '\f' start a new page when importing text. (suggested by Steve Deering) - switching between the two landscape orientations now correctly redraws the screen (used to have to go through portrait to get screen drawn in new orientation). - if site supplied postscript background, suppressing site now hides background in addition to site's drawing operations. - wb now sets DISPLAY environment variable for ghostscript to be display wb is running on (so "wb -display x:0" now works with gs rendering). (problem reported by Ron Frederick.) - changed 'paste' & text file insertion to 'defer' character ops so things don't get sent one character per packet. - made psdata drawops a bit smaller to allow room for leading nop & trailing pscomp (prevent sending bunch of big packets sandwiched between two small ones which seemed to cause packet losses). - changed postscript file parser to not get confused by pages that embed other pages with their own pagination pseudo-comments. - redid the postscript rendering logic so it's less likely to wedge completely on errors. - fixed a lot of bugs in 'repair' processing: 'visible only' repairs were always resending all the data, ignoring stuff that the receiver claimed it had. - fixed 'expose' event handling to erase damaged portion of view window (bug report from George Michaelson).