… | |
… | |
121 | } |
121 | } |
122 | |
122 | |
123 | BEGIN { |
123 | BEGIN { |
124 | $SIG{__DIE__} = sub { |
124 | $SIG{__DIE__} = sub { |
125 | return if $^S; |
125 | return if $^S; |
126 | crash ("CRASH/DIE: $_[0]" => 1); |
126 | crash "CRASH/DIE: $_[0]" => 1; |
127 | DC::fatal Carp::longmess "$_[0]"; |
127 | DC::fatal Carp::longmess "$_[0]"; |
128 | } |
128 | } |
129 | } |
129 | } |
130 | |
130 | |
131 | use DC::OpenGL (); |
131 | use DC::OpenGL (); |
… | |
… | |
145 | |
145 | |
146 | $SIG{QUIT} = sub { Carp::cluck "QUIT" }; |
146 | $SIG{QUIT} = sub { Carp::cluck "QUIT" }; |
147 | $SIG{PIPE} = 'IGNORE'; |
147 | $SIG{PIPE} = 'IGNORE'; |
148 | |
148 | |
149 | $EV::DIED = sub { |
149 | $EV::DIED = sub { |
150 | crash ("CRASH/EV::DIED: $@" => 1); |
150 | crash "CRASH/EV::DIED: $@" => 1; |
151 | DC::fatal Carp::longmess $@; |
151 | DC::fatal Carp::longmess $@; |
152 | }; |
152 | }; |
153 | |
153 | |
154 | my $MAX_FPS = 60; |
154 | my $MAX_FPS = 60; |
155 | |
155 | |
… | |
… | |
245 | my $buf = delete $CONN->{wbuf}; |
245 | my $buf = delete $CONN->{wbuf}; |
246 | |
246 | |
247 | $buf .= pack "n/a*", "exti " . JSON::XS::encode_json [clientlog => undef, substr $msg, 0, 8000]; |
247 | $buf .= pack "n/a*", "exti " . JSON::XS::encode_json [clientlog => undef, substr $msg, 0, 8000]; |
248 | |
248 | |
249 | AnyEvent::Util::fh_nonblocking $fh, 0; |
249 | AnyEvent::Util::fh_nonblocking $fh, 0; |
250 | |
|
|
251 | syswrite $fh, $buf; |
250 | syswrite $fh, $buf; |
252 | AnyEvent::Util::fh_nonblocking $fh, 1; |
251 | AnyEvent::Util::fh_nonblocking $fh, 1; |
253 | |
252 | |
254 | $msg =~ s/\s+$//; |
253 | $msg =~ s/\s+$//; |
255 | |
254 | |
256 | # backtrace as second step, in case it crashes, too |
255 | # backtrace as second step, in case it crashes, too |
257 | crash (Carp::longmess "$msg\nbacktrace, for client version $DC::VERSION, generated") |
256 | crash Carp::longmess "$msg\nbacktrace, for client version $DC::VERSION, generated" |
258 | if $backtrace; |
257 | if $backtrace; |
259 | }; |
258 | }; |
260 | |
259 | |
261 | ############################################################################# |
260 | ############################################################################# |
262 | |
261 | |
… | |
… | |
2250 | DC::SDL_Init DC::SDL_INIT_AUDIO #| DC::SDL_NOPARACHUTE |
2249 | DC::SDL_Init DC::SDL_INIT_AUDIO #| DC::SDL_NOPARACHUTE |
2251 | and die "SDL::Init failed!\n"; |
2250 | and die "SDL::Init failed!\n"; |
2252 | } |
2251 | } |
2253 | |
2252 | |
2254 | sub video_init { |
2253 | sub video_init { |
|
|
2254 | DC::set_theme $CFG->{theme}; |
|
|
2255 | |
2255 | DC::SDL_InitSubSystem DC::SDL_INIT_VIDEO if $SDL_REINIT; |
2256 | DC::SDL_InitSubSystem DC::SDL_INIT_VIDEO if $SDL_REINIT; |
2256 | $SDL_REINIT = 0; |
2257 | $SDL_REINIT = 0; |
2257 | |
2258 | |
2258 | @SDL_MODES = DC::SDL_ListModes 8, $CFG->{disable_alpha} ? 0 : 8; |
2259 | @SDL_MODES = DC::SDL_ListModes 8, $CFG->{disable_alpha} ? 0 : 8; |
2259 | @SDL_MODES = DC::SDL_ListModes 8, 8 unless @SDL_MODES; |
2260 | @SDL_MODES = DC::SDL_ListModes 8, 8 unless @SDL_MODES; |
… | |
… | |
2263 | @SDL_MODES = sort { $a->[0] * $a->[1] <=> $b->[0] * $b->[1] } @SDL_MODES; |
2264 | @SDL_MODES = sort { $a->[0] * $a->[1] <=> $b->[0] * $b->[1] } @SDL_MODES; |
2264 | |
2265 | |
2265 | if (!defined $CFG->{sdl_mode} or $CFG->{sdl_mode} > $#SDL_MODES) { |
2266 | if (!defined $CFG->{sdl_mode} or $CFG->{sdl_mode} > $#SDL_MODES) { |
2266 | $CFG->{sdl_mode} = 0; # lowest resolution by default |
2267 | $CFG->{sdl_mode} = 0; # lowest resolution by default |
2267 | |
2268 | |
2268 | # now choose biggets mode <= 1024x768 |
2269 | # now choose biggest mode <= 1024x768 |
2269 | for (0 .. $#SDL_MODES) { |
2270 | for (0 .. $#SDL_MODES) { |
2270 | if ($SDL_MODES[$_][0] * $SDL_MODES[$_][1] <= 1024 * 768) { |
2271 | if ($SDL_MODES[$_][0] * $SDL_MODES[$_][1] <= 1024 * 768) { |
2271 | $CFG->{sdl_mode} = $_; |
2272 | $CFG->{sdl_mode} = $_; |
2272 | } |
2273 | } |
2273 | } |
2274 | } |
… | |
… | |
2465 | $BUTTONBAR->show; |
2466 | $BUTTONBAR->show; |
2466 | $SETUP_DIALOG->show; |
2467 | $SETUP_DIALOG->show; |
2467 | $MESSAGE_WINDOW->show; |
2468 | $MESSAGE_WINDOW->show; |
2468 | } |
2469 | } |
2469 | |
2470 | |
2470 | $MODE_SLIDER->set_range ([$CFG->{sdl_mode}, 0, $#SDL_MODES, 1, 1]); |
2471 | $MODE_SLIDER->set_range ([$CFG->{sdl_mode}, 0, scalar @SDL_MODES, 1, 1]); |
2471 | $MODE_SLIDER->emit (changed => $CFG->{sdl_mode}); |
2472 | $MODE_SLIDER->emit (changed => $CFG->{sdl_mode}); |
2472 | |
2473 | |
2473 | $CAVEAT_LABEL->set_text ("None :)"); |
2474 | $CAVEAT_LABEL->set_text ("None :)"); |
2474 | $CAVEAT_LABEL->set_text ("Software Rendering (very slow)") |
2475 | $CAVEAT_LABEL->set_text ("Software Rendering (very slow)") |
2475 | unless DC::SDL_GL_GetAttribute DC::SDL_GL_ACCELERATED_VISUAL; |
2476 | unless DC::SDL_GL_GetAttribute DC::SDL_GL_ACCELERATED_VISUAL; |
… | |
… | |
2640 | inv_sort => "mtime", |
2641 | inv_sort => "mtime", |
2641 | default => "profile", # default profile |
2642 | default => "profile", # default profile |
2642 | show_tips => 1, |
2643 | show_tips => 1, |
2643 | logview_max_par => 1000, |
2644 | logview_max_par => 1000, |
2644 | shift_fire_stop => 0, |
2645 | shift_fire_stop => 0, |
|
|
2646 | theme => "wood", |
2645 | ); |
2647 | ); |
2646 | |
2648 | |
2647 | while (my ($k, $v) = each %DEF_CFG) { |
2649 | while (my ($k, $v) = each %DEF_CFG) { |
2648 | $CFG->{$k} = $v unless exists $CFG->{$k}; |
2650 | $CFG->{$k} = $v unless exists $CFG->{$k}; |
2649 | } |
2651 | } |