Merge pull request #2837 from dtzxporter/Expose-setting-to-toggle-vsync-on/off-

Expose setting to disable vsync if requested.
This commit is contained in:
Héctor 2025-11-21 01:48:21 +01:00 • committed by GitHub
commit a81f0a2459
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 20 additions and 0 deletions

View file

@ -33,6 +33,13 @@ pub struct Settings {
/// ///
/// By default, it is enabled. /// By default, it is enabled.
pub antialiasing: bool, pub antialiasing: bool,
/// Whether or not to attempt to synchronize rendering when possible.
///
/// Disabling it can improve rendering performance on some platforms.
///
/// By default, it is enabled.
pub vsync: bool,
} }
impl Default for Settings { impl Default for Settings {
@ -43,6 +50,7 @@ impl Default for Settings {
default_font: Font::default(), default_font: Font::default(),
default_text_size: Pixels(16.0), default_text_size: Pixels(16.0),
antialiasing: true, antialiasing: true,
vsync: true,
} }
} }
} }

View file

@ -16,6 +16,11 @@ pub struct Settings {
/// ///
/// By default, it is `None`. /// By default, it is `None`.
pub antialiasing: Option<Antialiasing>, pub antialiasing: Option<Antialiasing>,
/// Whether or not to synchronize frames.
///
/// By default, it is `true`.
pub vsync: bool,
} }
impl Default for Settings { impl Default for Settings {
@ -24,6 +29,7 @@ impl Default for Settings {
default_font: Font::default(), default_font: Font::default(),
default_text_size: Pixels(16.0), default_text_size: Pixels(16.0),
antialiasing: None, antialiasing: None,
vsync: true,
} }
} }
} }
@ -42,6 +48,7 @@ impl From<core::Settings> for Settings {
}, },
default_text_size: settings.default_text_size, default_text_size: settings.default_text_size,
antialiasing: settings.antialiasing.then_some(Antialiasing::MSAAx4), antialiasing: settings.antialiasing.then_some(Antialiasing::MSAAx4),
vsync: settings.vsync,
} }
} }
} }

View file

@ -44,6 +44,11 @@ impl Default for Settings {
impl From<graphics::Settings> for Settings { impl From<graphics::Settings> for Settings {
fn from(settings: graphics::Settings) -> Self { fn from(settings: graphics::Settings) -> Self {
Self { Self {
present_mode: if settings.vsync {
wgpu::PresentMode::AutoVsync
} else {
wgpu::PresentMode::AutoNoVsync
},
default_font: settings.default_font, default_font: settings.default_font,
default_text_size: settings.default_text_size, default_text_size: settings.default_text_size,
antialiasing: settings.antialiasing, antialiasing: settings.antialiasing,