These patches fix bug #1102991 (Duplicate grapical
display of the same monster) for all clients (cfclient,
gcfclient, gcfclient2) and for all display modes
(default/sdl/opengl).
The patches should be applied to current cvs. You have
to patch both parts (server and client) to really make
them work. (OTOH patched clients connecting to an
unpatched server, as well as unpatched clients
connecting to a patched server still do work. But (of
course) you still experience duplicated big faces.)
To check the patch I cleared various maps, including
raffle2 and the Titan Quest. (These latter maps produce
lots of display errors without this patch.) I did not
notice anymore any display errors.
I added the patches to the patches tracker to get
feedback before I actually commit them. If I do not
receive any serious complaints, I'll commit them later.
client.diff contains the following changes:
- smoothing:
- (gtk/gtk2+sdl/gdk) Previously did always use layer
0 when checking if smoothing was necessary.
- (gtk/gtk2+sdl/gdk/opengl) Fix array access to out
of bounds cells.
- map drawing:
- (all) Properly clear big faces.
- (gtk/gtk2) Previously did redraw whole map after
each map_scroll. Now redraws only affected tiles.
- (x11/gtk) Add new option -mapscroll/-nomapscroll to
enable/disable map_scroll processing via bitmap copying
instead of individual tile redraws. The default is "on"
(behavior like before).
- (gtk2) Add new option -smooth/-nosmooth the
enable/disable smoothing from command line.
- (x11) Implement map_scroll processing via bitmap
copying. (You can disable this with the new command
line option -nomapscroll.)
- other:
- Move all code updating (face) information in
the_map into mapdata.c.
- (gtk2+opengl) It does compile but I didn't test it
because it crashes at startup with a "BadMatch (invalid
parameter attributes)" error.
- (gnome) I did not fix this client because it is
very old (it lacks big face support at all) and it is
not even compilable.
- (gtk/gtk2+gdk/sdl) Previously did crash in -cache
mode if a question mark face was displayed as a fog of
war tile.
- (gtk/gtk2) Previously did not initialize the
question mark face for fog of war display.
server.diff contains the following changes:
- Now clears the map state when sending a newmap command.
- The mapredraw command now is non-functional -- now it
is ignored by the server. This is necessary because it
results in differing map views of client and server.
- Increase MAX_HEAD_OFFSET to 8 because a Demon Lord is
4x8 tiles big. It is not yet a big face but that
probably will change.
- Previously did not properly clear big faces.
- Now properly clears the newly visible area when
scrolling the map. Previously sometimes obsolete
information was scrolled into the newly visible area.
- Remove a few redundant or unused conditions and
statements.
- Fix uninitialized variable.
- Fix out of bounds array access.
Diff against client repository; fixes client display logic
Diff against server repository; fixes server display logic
Logged In: YES
user_id=98826
At a very quick glance, looks OK.
Only note would be that the new files should get the standard
crossfire banner (GPL license, contact, etc).
Logged In: YES
user_id=707817
Your patch has been applied to CVS.
It may take a few hours for this change to go from the
developper cvs to the anonymous cvs.
You can find informations on how to download the latest
anonymous cvs there:
http://sourceforge.net/cvs/?group_id=13833
Thanks for helping the crossfire team.