@@ -90,12 +90,6 @@ impl Default for PresentMode {
9090 }
9191}
9292
93- #[ derive( Clone , Copy , Debug , PartialEq , Eq ) ]
94- enum PresentModeOverride {
95- Vsync ( bool ) ,
96- Explicit ( PresentMode ) ,
97- }
98-
9993/// Builder for configuring a `RenderContext` tied to one window.
10094///
10195/// Purpose
@@ -117,7 +111,7 @@ pub struct RenderContextBuilder {
117111 /// Reserved for future timeout handling during rendering (nanoseconds).
118112 /// Not currently enforced; kept for forward compatibility with runtime controls.
119113 _render_timeout : u64 ,
120- present_mode : Option < PresentModeOverride > ,
114+ present_mode : Option < PresentMode > ,
121115}
122116
123117impl RenderContextBuilder {
@@ -143,7 +137,11 @@ impl RenderContextBuilder {
143137 /// When disabled, the builder requests a non‑vsync mode (immediate
144138 /// presentation) and falls back to a supported low-latency mode if needed.
145139 pub fn with_vsync ( mut self , enabled : bool ) -> Self {
146- self . present_mode = Some ( PresentModeOverride :: Vsync ( enabled) ) ;
140+ self . present_mode = Some ( if enabled {
141+ PresentMode :: Vsync
142+ } else {
143+ PresentMode :: Immediate
144+ } ) ;
147145 return self ;
148146 }
149147
@@ -153,7 +151,7 @@ impl RenderContextBuilder {
153151 /// capabilities. If unsupported, the renderer falls back to a supported
154152 /// mode with similar behavior.
155153 pub fn with_present_mode ( mut self , mode : PresentMode ) -> Self {
156- self . present_mode = Some ( PresentModeOverride :: Explicit ( mode) ) ;
154+ self . present_mode = Some ( mode) ;
157155 return self ;
158156 }
159157
@@ -193,23 +191,12 @@ impl RenderContextBuilder {
193191 } ) ?;
194192
195193 let size = window. dimensions ( ) ;
196- let requested_present_mode = match present_mode {
197- Some ( PresentModeOverride :: Vsync ( enabled) ) => {
198- if enabled {
199- PresentMode :: Vsync
200- } else {
201- PresentMode :: Immediate
202- }
194+ let requested_present_mode = present_mode. unwrap_or_else ( || {
195+ if window. vsync_requested ( ) {
196+ return PresentMode :: Vsync ;
203197 }
204- Some ( PresentModeOverride :: Explicit ( mode) ) => mode,
205- None => {
206- if window. vsync_requested ( ) {
207- PresentMode :: Vsync
208- } else {
209- PresentMode :: Immediate
210- }
211- }
212- } ;
198+ return PresentMode :: Immediate ;
199+ } ) ;
213200 let platform_present_mode = match requested_present_mode {
214201 PresentMode :: Vsync => targets:: surface:: PresentMode :: Fifo ,
215202 PresentMode :: Immediate => targets:: surface:: PresentMode :: Immediate ,
0 commit comments