[AD] The last WIP of the millenium

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


... is on http://www.sunsite.auc.dk/allegro/wip.html

As of tommorrow I'm off to spend Christmas with my family in Shropshire, and 
will be away from the net until early January. This means that:

   A) If it breaks, I can't fix it. By all means dump things in my inbox, 
      and I'll deal with them when I get back. Or if I've done something 
      really stupid, I'm sure someone like Michael, George, or Peter will be 
      able to correct it in my absence. But just to be safe, you might want 
      to keep a copy of 3.9.29 around while installing this version, in case 
      it all goes horribly wrong!

and:

   B) I won't have to read all the pedantic "but it isn't really the last 
      WIP of the millenium until next year" posts that are sure to follow 
      this :-)


There are a couple of things in particular that I'm a bit nervous about:

I've fixed the problem with double-XOR datafile encryption, that was making 
them so easy to break. This involves a major change to the encrypted file 
format, but I've kept a backward compatibility mode for reading old style 
encrypted files. I made a fairly comprehensie test suite for this, but I 
don't have any actual programs that use encrypted data, and obviously there 
is a chance of problems. If you do find any encrypted files that won't load 
any more, you can fix this by reading them into an earlier grabber version, 
saving them out without encryption, loading that unprotected version into 
the 3.9.30 grabber, and saving it out again with the new format encryption. 
Hopefully you won't have to do that, but if you do encounter any files that 
require it, that's a bug, so please save a copy of your original non-working 
file so that I can look at it when I get back (I'd hate to just find some 
emails saying that this was broken, but then find that you hadn't kept a 
copy of the files in question :-)

I've also made some fairly heavy changes to the Windows code, altering the 
surface locking mechanism to allow better hardware accelerator performance, 
and fixing many things to do with the switching mechanism. I did most of 
this work on my machine at work, and when I left on Friday evening, there 
were some problems with switching away and then back to a fullscreen Allegro 
program. Unfortunately this problem didn't occur on my home system, so I was 
unable to fix it over the weekend. In other words, there is a problem (my 
guess is a timing issue between the different threads) to do with fullscreen 
switching. It may or may not occur on your system: if it does, don't bother 
reporting it, because I know this exits, can duplicate it on my work 
machine, and will fix it when I get back. Of course if anyone else can find 
out a fix in the meantime, that would be great!


Full changes since 3.9.29:

   Fixed the double XOR that was making datafile passwords so easy to 
   reverse. The new code can still read old-style encrypted files, but data 
   written by this version can't be accessed by older copies of Allegro.

   Made load_datafile(), load_datafile_object(), and the file.dat#object 
   syntax work correctly in all possible combinations.

   Vincent Penquerc'h added a scare_mouse_area() function.

   Changed the DirectX surface locking mechanism, to improve the performance 
   of hardware accelerated drawing.

   George Foot improved the Linux LED code, and made the internal X driver 
   state visible via xalleg.h.

   Added EINTR retry handling to read/write calls. I hope I got this right: 
   if anyone who properly groks this stuff could check over file.c, that 
   would be cool.

   Made the Windows mouse driver work correctly in windowed mode.

   Fixed various problems with Windows foreground/background switching (keys 
   were getting stuck down, timers weren't being paused, and not all the 
   right switching modes were being reported to the caller).

   Made the X keyboard handler release all keys when it loses the input 
   focus, to avoid stuck buttons when you alt+tab between windows.

   Made the allegro-lib script arguments compatible with the standard used 
   by GTK, ESD, etc, and renamed it to allegro-config. This changes the 
   syntax for linking Allegro programs on Unix: see readme.uni for details 
   of the new method.

   George Foot improved the Unix shared library system.

   Joerg Rueppel added a find_datafile_object() function.

   Peter Wang improved the SVGAlib driver.

   Peter Wang improved the Linux joystick driver.


btw. as a result of the various datafile changes, load_datafile_object() is 
now implemented entirely in terms of pack_fopen("datafile#object"). This 
means that if anyone wants to have a go at the datafile index caching 
optimisation, there is now only a single location that needs to know about 
this.



--
Shawn Hargreaves - shawn@xxxxxxxxxx - http://www.talula.demon.co.uk/
"A binary is barely software: it's more like hardware on a floppy disk."



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/