@@ -21,7 +21,7 @@ use stereokit_rust::{material::Material, shader::Shader};
2121use waynest:: {
2222 server:: {
2323 Client , Dispatcher , Result ,
24- protocol:: core:: wayland:: { wl_buffer :: WlBuffer , wl_output:: Transform , wl_surface:: * } ,
24+ protocol:: core:: wayland:: { wl_output:: Transform , wl_surface:: * } ,
2525 } ,
2626 wire:: ObjectId ,
2727} ;
@@ -144,6 +144,9 @@ impl Surface {
144144 . get_all_param_info ( )
145145 . set_texture ( "diffuse" , new_tex) ;
146146 }
147+ let _ = self
148+ . message_sink
149+ . send ( Message :: ReleaseBuffer ( buffer. clone ( ) ) ) ;
147150 self . apply_surface_materials ( ) ;
148151
149152 let _ = state_lock. current ( ) . clean_lock . set ( ( ) ) ;
@@ -171,9 +174,7 @@ impl Surface {
171174 }
172175 pub fn frame_event ( & self ) {
173176 if let Some ( callback_obj) = self . frame_callback_object . lock ( ) . take ( ) {
174- let _ = self
175- . message_sink
176- . send ( Message :: FrameNotification ( callback_obj) ) ;
177+ let _ = self . message_sink . send ( Message :: Frame ( callback_obj) ) ;
177178 }
178179 }
179180 // pub fn size(&self) -> Option<Vector2<u32>> {
@@ -185,25 +186,25 @@ impl Surface {
185186 // .map(|b| [b.size.x as u32, b.size.y as u32].into())
186187 // }
187188
188- async fn release_old_buffer ( & self , client : & mut Client ) -> Result < ( ) > {
189- let ( old_buffer, object) = {
190- let lock = self . state . lock ( ) ;
189+ // pub async fn release_old_buffer(&self, client: &mut Client) -> Result<()> {
190+ // let (old_buffer, object) = {
191+ // let lock = self.state.lock();
191192
192- let Some ( old_buffer) = lock. current ( ) . buffer . clone ( ) else {
193- return Ok ( ( ) ) ;
194- } ;
195- let new_buffer = lock. pending . buffer . as_ref ( ) ;
196- if new_buffer. map ( Arc :: as_ptr) == Some ( Arc :: as_ptr ( & old_buffer) ) {
197- return Ok ( ( ) ) ;
198- }
199- drop ( lock) ;
193+ // let Some(old_buffer) = lock.current().buffer.clone() else {
194+ // return Ok(());
195+ // };
196+ // let new_buffer = lock.pending.buffer.as_ref();
197+ // if new_buffer.map(Arc::as_ptr) == Some(Arc::as_ptr(&old_buffer)) {
198+ // return Ok(());
199+ // }
200+ // drop(lock);
200201
201- ( old_buffer. clone ( ) , old_buffer. id )
202- } ;
203- old_buffer. release ( client, object) . await ?;
202+ // (old_buffer.clone(), old_buffer.id)
203+ // };
204+ // old_buffer.release(client, object).await?;
204205
205- Ok ( ( ) )
206- }
206+ // Ok(())
207+ // }
207208}
208209impl WlSurface for Surface {
209210 async fn attach (
@@ -263,9 +264,7 @@ impl WlSurface for Surface {
263264 Ok ( ( ) )
264265 }
265266
266- async fn commit ( & self , client : & mut Client , _sender_id : ObjectId ) -> Result < ( ) > {
267- self . release_old_buffer ( client) . await ?;
268-
267+ async fn commit ( & self , _client : & mut Client , _sender_id : ObjectId ) -> Result < ( ) > {
269268 {
270269 let mut lock = self . state . lock ( ) ;
271270
0 commit comments