[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."