Fire development log file. ======================================== i info ! bug or bad feature ! f ;) ##.##. fixed (hopefully) (date) * todo * d ##.##. done (date) ? think about ? +/-/r ##.##. question resolved (date) ---------------------------------------- All started sometime around July 1999 (xd.c, fire-sparse.{c,h}). 29.08.1999, 0.0.0 i the real start: filter stuff, X stuff, ... i it works somehow * d 31.10. improve event handling (do not exit via exit() ! :) * d 31.10. time statistics * d 23.12. mouse movement tracing & input 05.09.1999, 0.0.1 i autorepeat off 31.10.1999, 0.0.2 i timer stuff was wrong - fixed (caused freezing on fast machines :-) i autorepeat on after quit :-) (it is global !!!) i shows FPS i some fire-sparse speed-up (little) i handle.c - event handling will go there 23.12.1999, 0.0.3 i root display hack (very ugly) * - 24.12. bounding box to allow fullscreen * d 24.12. mouse movement tracking 24.12.1999, 0.0.4 i mouse pointer used to generate sources i image grid to allow fast fullscreen i all present motion events handled at once to avoid lag of fire behind the pointer i hack: grid mask updated _after_ drawing to get rid of fire pixels after death (we do not clear screen) -> new pixels not drawn in the first frame when crossing grid borders (clean solution: grid = grid OR last grid) * d 25.12. better source placement, shape, ... (depending on actual shape?) i hack: FPS in lower right corner - mask always 1 there ? how to get key presses in root window? (how to deal with root window correctly in general?) 25.12.1999, 0.0.5 i -root switch - can run in a window again (some fixes required) i better palette, fire source shape i better fire rules i input.magic2 input file for nicer magic pointer i in window mode: sources placed along line from last pointer position to current * focus handling (autorepeat, last pointer position...) i fix: last grid size was wrong i xd.c removed from distribution i README 27.12.1999, 0.0.5, 0.0.6 i number of particles printed under FPS text i 0.0.6 started i fix & speed up: every frame the entire buffer was translated to XImage format (overlook bug :) -> now only really drawn rectangles are translated i program pauses for a time needed for 1 frame if there is no work (setitimer & pause...) i SIGALRM handling is rather wild - sometimes, the alarm signal arrived before pause() was called and the program was then locked in pause() (although the pause() line is just below the setitimer() line !) -> now the signal handler checks, if program got behind pause() and if not, issues another SIGALRM 10 us later... it seems ok, but this is my first attempt to write something like this, so wierd bugs may be within (I found libc info pages and they are great :-) i FPS setting is not much accurate... * decouple FPS and cellular automat iterations 28.12.1999, 0.0.7 i better idle cycle handling - fps divided by 10 -> less CPU activity i stats put into pixmap before displaying -> no flicker (-> mask hack removed) i name changed to cafire (fire is too general...) 11.01.2000, 0.0.8 i old grid mask stored i fsClearDataFast() - clears only relevants parts of fire data according to previous grid mask. i combineMask() - combine previous and new grid masks. i README updated (nothing important :) i autorepeat status quo i checkValue*() - input parameter checking i (re)[alloc|free]Mem() - memory stuff, primitive * d 13.01. fix 16 bpp for other color wights than 565 (started...) * d 13.01. 8, 24, 32 bpp support (started...) 13.01.2000, 0.0.9 i fix: wrong bitmap_pad parameter to XCreateImage() i 16, 24, 32 bpp {Direct/True}Color should be ok i 8 bpp indexed works, but as no colors are allocated by cafire, the particle colors are rather random (however not so ugly as expected :-) 20.01.2000, 0.0.10 i grid cell size computation fixed so that it is never bigger than "maxGridSize" i fix: explicit bytes_per_line count in XCreateImage() - Xlib got it wrong if width was odd i background preservation code started i convert8_16_masked() - put only non-zero fire pixels ! no way in X to query a background pixmap of a window !!! i -back cml parameter - after start, root window contents is stored and used as background for fire * d 27.01. other masked convert*() routines * background pixmap as a cml parameter * background color as a cml parameter * d 27.01. ignore mouse movement under heavy cpu load (low fps) 27.01.2000, 0.0.11 i background image updated before putting fire -> no 'ghost windows' anymore, but fire pixels get copied to the background -> bad anyway i partial solution: background updated only those grid cells which were empty in the previous step - almost perfect, unless you switch to another desktop when moving the pointer near a window edge :-) i masked image format conversion routines i only one mouse movement event in a row is taken into account when the FPS drops below 0.7 of the required 04.09.2000, 0.0.12 i colormap file support, subdir 'colormaps' i new: savecolormap.m - matlab script for colormap saving i new: generateStdColormap() -> updates in main.c, graphics.{c,h}, run i input file: maxColors entry deprecated - there is always 256 colors i new: blue-{g,r}.col, green-{b,r}.col, red-{b,g}.col colormaps i 'demo' script updated 05.09.2000, 0.0.13 i update: Makefile - major changes - new targets: install, uninstall i update: 'run' -> 'runcafire', modifications based on proposals of bford@talontech.com i update: 'demo' to work with 'runcafire' * d 06.09. README update 06.09.2000, 0.0.13 i README update i $CONFDIR/input/cafirerc is chmod 666 so that anybody can overwrite it 07.09.2000, 0.0.14 i some playing with pointer cursor 11.09.2000, 0.0.14 i update: demo, runcafire, Makefile according to various suggestions (Ronald Joe Record , Ben Ford ) - ~/.cafirerc, INPUTRC, COLORRC support, UnixWare 7 support and more new: killcafire i README update