--- deliantra/Deliantra-Client/DC.pm 2007/04/06 07:45:33 1.140 +++ deliantra/Deliantra-Client/DC.pm 2007/12/26 18:20:45 1.166 @@ -17,7 +17,7 @@ use Carp (); BEGIN { - $VERSION = '0.97'; + $VERSION = '0.9961'; use XSLoader; XSLoader::load "CFPlus", $VERSION; @@ -29,12 +29,8 @@ use Pod::POM (); use File::Path (); use Storable (); # finally - -BEGIN { - use Crossfire::Protocol::Base (); - *to_json = \&Crossfire::Protocol::Base::to_json; - *from_json = \&Crossfire::Protocol::Base::from_json; -} +use Fcntl (); +use JSON::XS qw(encode_json decode_json); =item guard { BLOCK } @@ -166,15 +162,7 @@ local $/; my $CFG = <$fh>; - if ($CFG =~ /^---/) { ## TODO compatibility cruft, remove - require YAML; - utf8::decode $CFG; - $::CFG = YAML::Load ($CFG); - } elsif ($CFG =~ /^\{/) { - $::CFG = from_json $CFG; - } else { - $::CFG = eval $CFG; ## todo comaptibility cruft - } + $::CFG = decode_json $CFG; } sub write_cfg { @@ -184,7 +172,7 @@ open my $fh, ">:utf8", $file or return; - print $fh to_json $::CFG; + print $fh encode_json $::CFG; } sub http_proxy { @@ -228,10 +216,26 @@ $res } +sub fh_nonblocking($$) { + my ($fh, $nb) = @_; + + if ($^O eq "MSWin32") { + $nb = (! ! $nb) + 0; + ioctl $fh, 0x8004667e, \$nb; # FIONBIO + } else { + fcntl $fh, &Fcntl::F_SETFL, $nb ? &Fcntl::O_NONBLOCK : 0; + } + +} + package CFPlus::Layout; +$CFPlus::OpenGL::INIT_HOOK{"CFPlus::Layout"} = sub { + glyph_cache_restore; +}; + $CFPlus::OpenGL::SHUTDOWN_HOOK{"CFPlus::Layout"} = sub { - reset_glyph_cache; + glyph_cache_backup; }; 1;