… | |
… | |
140 | our $CONN; |
140 | our $CONN; |
141 | our $PROFILE; # current profile |
141 | our $PROFILE; # current profile |
142 | our $FAST; # fast, low-quality mode, possibly useful for software-rendering |
142 | our $FAST; # fast, low-quality mode, possibly useful for software-rendering |
143 | |
143 | |
144 | our $WANT_REFRESH; |
144 | our $WANT_REFRESH; |
|
|
145 | |
|
|
146 | our $MODE_SLIDER; |
|
|
147 | our $CAVEAT_LABEL; |
145 | |
148 | |
146 | our @SDL_MODES; |
149 | our @SDL_MODES; |
147 | our $SDL_REINIT = 1; |
150 | our $SDL_REINIT = 1; |
148 | our $WIDTH; |
151 | our $WIDTH; |
149 | our $HEIGHT; |
152 | our $HEIGHT; |
… | |
… | |
829 | $table->add_at (0, $row, new DC::UI::Label align => 1, text => "OpenGL Info"); |
832 | $table->add_at (0, $row, new DC::UI::Label align => 1, text => "OpenGL Info"); |
830 | $table->add_at (1, $row++, new DC::UI::Label fontsize => 0.8, text => DC::OpenGL::gl_vendor . ", " . DC::OpenGL::gl_version, |
833 | $table->add_at (1, $row++, new DC::UI::Label fontsize => 0.8, text => DC::OpenGL::gl_vendor . ", " . DC::OpenGL::gl_version, |
831 | can_events => 1, |
834 | can_events => 1, |
832 | tooltip => "<tt><span size='8192'>" . (DC::OpenGL::gl_extensions) . "</span></tt>"); |
835 | tooltip => "<tt><span size='8192'>" . (DC::OpenGL::gl_extensions) . "</span></tt>"); |
833 | |
836 | |
|
|
837 | $table->add_at (0, $row, new DC::UI::Label align => 1, text => "Caveats"); |
|
|
838 | $table->add_at (1, $row++, $CAVEAT_LABEL = new DC::UI::Label fontsize => 0.8, |
|
|
839 | can_events => 1, |
|
|
840 | tooltip => "This field shows any known issues with your config or driver, such as " |
|
|
841 | . "a non-accelerated display format. You can try to work around these issues " |
|
|
842 | . "by selecting a different video mode, changing the settings below or " |
|
|
843 | . "by installing the right driver for your graphics card."); |
|
|
844 | |
834 | my $vidmode_tooltip = |
845 | my $vidmode_tooltip = |
835 | "<b>Video Mode.</b> The video mode to use for fullscreen (and the window size for windowed operation). " |
846 | "<b>Video Mode.</b> The video mode to use for fullscreen (and the window size for windowed operation). " |
836 | . "The format is <i>width</i> x <i>height</i> \@ <i>depth-per-channel</i> + <i>alpha-channel</i>."; |
847 | . "The format is <i>width</i> x <i>height</i> \@ <i>depth-per-channel</i> + <i>alpha-channel</i>."; |
837 | |
848 | |
838 | $table->add_at (0, $row, new DC::UI::Label align => 1, text => "Video Mode"); |
849 | $table->add_at (0, $row, new DC::UI::Label align => 1, text => "Video Mode"); |
839 | $table->add_at (1, $row++, my $hbox = new DC::UI::HBox); |
850 | $table->add_at (1, $row++, my $hbox = new DC::UI::HBox); |
840 | |
851 | |
841 | $hbox->add (my $mode_slider = new DC::UI::Slider |
852 | $hbox->add ($MODE_SLIDER = new DC::UI::Slider |
842 | force_w => $WIDTH * 0.1, expand => 1, range => [$CFG->{sdl_mode}, 0, $#SDL_MODES, 0, 1], |
853 | force_w => $WIDTH * 0.1, expand => 1, |
843 | tooltip => $vidmode_tooltip); |
854 | tooltip => $vidmode_tooltip); |
844 | $hbox->add (my $mode_label = new DC::UI::Label |
855 | $hbox->add (my $mode_label = new DC::UI::Label |
845 | height => 0.8, template => "9999x9999@9+9", |
856 | height => 0.8, template => "9999x9999@9+9", |
846 | can_events => 1, tooltip => $vidmode_tooltip); |
857 | can_events => 1, tooltip => $vidmode_tooltip); |
847 | |
858 | |
848 | $mode_slider->connect (changed => sub { |
859 | $MODE_SLIDER->connect (changed => sub { |
849 | my ($self, $value) = @_; |
860 | my ($self, $value) = @_; |
850 | |
861 | |
851 | $CFG->{sdl_mode} = $self->{range}[0] = $value = int $value; |
862 | $CFG->{sdl_mode} = $self->{range}[0] = $value = int $value; |
852 | $mode_label->set_text (sprintf '%dx%d@%d+%d', @{$SDL_MODES[$value]}); |
863 | $mode_label->set_text (sprintf '%dx%d@%d+%d', @{$SDL_MODES[$value]}); |
853 | }); |
864 | }); |
854 | $mode_slider->emit (changed => $mode_slider->{range}[0]); |
865 | $MODE_SLIDER->emit (changed => $MODE_SLIDER->{range}[0]); |
855 | |
866 | |
856 | $table->add_at (0, $row, new DC::UI::Label align => 1, text => "Fullscreen"); |
867 | $table->add_at (0, $row, new DC::UI::Label align => 1, text => "Fullscreen"); |
857 | $table->add_at (1, $row++, $FULLSCREEN_ENABLE = new DC::UI::CheckBox |
868 | $table->add_at (1, $row++, $FULLSCREEN_ENABLE = new DC::UI::CheckBox |
858 | state => $CFG->{fullscreen}, |
869 | state => $CFG->{fullscreen}, |
859 | tooltip => "Bring the client into fullscreen mode.", |
870 | tooltip => "Bring the client into fullscreen mode.", |
… | |
… | |
2379 | $BUTTONBAR->show; |
2390 | $BUTTONBAR->show; |
2380 | $SETUP_DIALOG->show; |
2391 | $SETUP_DIALOG->show; |
2381 | $MESSAGE_WINDOW->show; |
2392 | $MESSAGE_WINDOW->show; |
2382 | } |
2393 | } |
2383 | |
2394 | |
|
|
2395 | $MODE_SLIDER->set_range ([$CFG->{sdl_mode}, 0, $#SDL_MODES, 1, 1]); |
|
|
2396 | $MODE_SLIDER->emit (changed => $CFG->{sdl_mode}); |
|
|
2397 | |
|
|
2398 | $CAVEAT_LABEL->set_text ("None :)"); |
|
|
2399 | $CAVEAT_LABEL->set_text ("Non-accelerated video mode") |
|
|
2400 | unless DC::SDL_GL_GetAttribute DC::SDL_GL_ACCELERATED_VISUAL; |
|
|
2401 | |
2384 | $STATUSBOX->add ("Set video mode $WIDTH×$HEIGHT", timeout => 10, fg => [1, 1, 1, 0.5]); |
2402 | $STATUSBOX->add ("Set video mode $WIDTH×$HEIGHT", timeout => 10, fg => [1, 1, 1, 0.5]); |
2385 | } |
2403 | } |
2386 | |
2404 | |
2387 | sub video_shutdown { |
2405 | sub video_shutdown { |
2388 | DC::OpenGL::shutdown; |
2406 | DC::OpenGL::shutdown; |