ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ext/schmorp-clientchk.ext
Revision: 1.10
Committed: Fri Mar 16 02:37:54 2007 UTC (17 years, 2 months ago) by root
Branch: MAIN
CVS Tags: HEAD
Changes since 1.9: +0 -0 lines
State: FILE REMOVED
Log Message:
- implement yet another bug workaround for gcfclient. its rather sad.

when bg scrubbing, the server sends images in advance, about twice per second.

then receiving a new image, gcfclient destroys the imventory and rebuilds it
(the widgets). this makes using it rather hard, as twice per seconds all widgets
go away and are replaced by new ones, so mouse clicks, if not fast enough, will
be ignored, making the client rather hard to use.

soo.... only to background sending for cfplus, which needs it least.

File Contents

# Content
1 #! perl # MANDATORY
2
3 # check client version and string for old clients and possibly issue warnings for them
4
5 cf::client->attach (
6 on_addme => sub {
7 my ($ns) = @_;
8
9 my $client = $ns->version;
10
11 my $is_cf = $client =~ /^(?:GTK2?|X11) (?:Unix|Win32) Client ([.0-9]+)/
12 ? join "", map chr, split /\./, $1
13 : undef;
14
15 my $is_jx = $client =~ /^JCrossclient 1.0 alpha-(\d+)/
16 ? join "", map chr, split /\./, $1
17 : undef;
18
19 if ($client =~ /^(JCrossclient) /) {
20 $ns->send_drawinfo ("(enabling workaround for map redraw bug)", cf::NDI_RED);
21 $ns->force_image_newmap (1);
22 }
23
24 if ($is_cf) { # && $is_cf lt v1.9.2) {
25 $ns->send_drawinfo ("(enabling workaround for client buffer overflow)", cf::NDI_RED);
26 $ns->buggy_mapscroll (1);
27 $ns->send_drawinfo ("(enabling workaround for broken face caching)", cf::NDI_RED);
28 $ns->force_bad_checksum (1);
29 }
30
31 if ($is_jx) {
32 $ns->send_drawinfo ("(enabling buggy map scroll workaround)", cf::NDI_RED);
33 $ns->buggy_mapscroll (1);
34 }
35
36 if ($is_jx) {
37 $ns->send_drawinfo ("You are using a known to be buggy client (an alpha version, too). "
38 . "If you encounter map freezes or other bugs, consider using a more stable client "
39 . "such as CFPlus or gcfclient or gcfclient2", cf::NDI_RED);
40 }
41
42 if ($is_cf && $is_cf lt v1.9.1) {
43 $ns->send_drawinfo (<<EOF, cf::NDI_RED);
44
45 *** *** *** *** *** *** *** *** *** *** *** *** *** ***
46 *** *** *** *** *** *** *** *** *** *** *** *** *** ***
47 *** WARNING: Your client is BUGGY
48 *** *** *** *** *** *** *** *** *** *** *** *** *** ***
49 *** *** *** *** *** *** *** *** *** *** *** *** *** ***
50
51 Your client ($client) is known to be buggy. Upgrading is highly recommended, otherwise you may experience crashes, strange lockups or other problems.
52
53 EOF
54 }
55 },
56 );
57