11//! Softbuffer implementation using CoreGraphics.
22use crate :: backend_interface:: * ;
33use crate :: error:: InitError ;
4- use crate :: { Rect , SoftBufferError } ;
4+ use crate :: { util , Rect , SoftBufferError } ;
55use objc2:: rc:: Retained ;
66use objc2:: runtime:: { AnyObject , Bool } ;
77use objc2:: { define_class, msg_send, AllocAnyThread , DefinedClass , MainThreadMarker , Message } ;
@@ -260,7 +260,7 @@ impl<D: HasDisplayHandle, W: HasWindowHandle> SurfaceInterface<D, W> for CGImpl<
260260
261261 fn buffer_mut ( & mut self ) -> Result < BufferImpl < ' _ , D , W > , SoftBufferError > {
262262 Ok ( BufferImpl {
263- buffer : vec ! [ 0 ; self . width * self . height] . into ( ) ,
263+ buffer : util :: PixelBuffer ( vec ! [ 0 ; self . width * self . height] ) ,
264264 imp : self ,
265265 } )
266266 }
@@ -269,7 +269,7 @@ impl<D: HasDisplayHandle, W: HasWindowHandle> SurfaceInterface<D, W> for CGImpl<
269269#[ derive( Debug ) ]
270270pub struct BufferImpl < ' a , D , W > {
271271 imp : & ' a mut CGImpl < D , W > ,
272- buffer : Box < [ u32 ] > ,
272+ buffer : util :: PixelBuffer ,
273273}
274274
275275impl < D : HasDisplayHandle , W : HasWindowHandle > BufferInterface for BufferImpl < ' _ , D , W > {
@@ -309,7 +309,7 @@ impl<D: HasDisplayHandle, W: HasWindowHandle> BufferInterface for BufferImpl<'_,
309309
310310 let data_provider = {
311311 let len = self . buffer . len ( ) * size_of :: < u32 > ( ) ;
312- let buffer: * mut [ u32 ] = Box :: into_raw ( self . buffer ) ;
312+ let buffer: * mut [ u32 ] = Box :: into_raw ( self . buffer . 0 . into_boxed_slice ( ) ) ;
313313 // Convert slice pointer to thin pointer.
314314 let data_ptr = buffer. cast :: < c_void > ( ) ;
315315
0 commit comments