@@ -12,7 +12,9 @@ use raw_window_handle::AndroidNdkWindowHandle;
1212use raw_window_handle:: { HasDisplayHandle , HasWindowHandle , RawWindowHandle } ;
1313
1414use crate :: error:: InitError ;
15- use crate :: { util, AlphaMode , BufferInterface , Pixel , Rect , SoftBufferError , SurfaceInterface } ;
15+ use crate :: {
16+ util, AlphaMode , BufferInterface , Pixel , PixelFormat , Rect , SoftBufferError , SurfaceInterface ,
17+ } ;
1618
1719/// The handle to a window for software buffering.
1820#[ derive( Debug ) ]
@@ -53,8 +55,12 @@ impl<D: HasDisplayHandle, W: HasWindowHandle> SurfaceInterface<D, W> for Android
5355 }
5456
5557 #[ inline]
56- fn supports_alpha_mode ( & self , alpha_mode : AlphaMode ) -> bool {
57- matches ! ( alpha_mode, AlphaMode :: Opaque | AlphaMode :: Ignored )
58+ fn supported_pixel_formats ( & self , alpha_mode : AlphaMode ) -> & [ PixelFormat ] {
59+ if matches ! ( alpha_mode, AlphaMode :: Opaque | AlphaMode :: Ignored ) {
60+ & [ PixelFormat :: Rgba8 ]
61+ } else {
62+ & [ ]
63+ }
5864 }
5965
6066 /// Also changes the pixel format.
@@ -63,6 +69,7 @@ impl<D: HasDisplayHandle, W: HasWindowHandle> SurfaceInterface<D, W> for Android
6369 width : NonZeroU32 ,
6470 height : NonZeroU32 ,
6571 alpha_mode : AlphaMode ,
72+ _pixel_format : PixelFormat ,
6673 ) -> Result < ( ) , SoftBufferError > {
6774 let ( width, height) = ( || {
6875 let width = NonZeroI32 :: try_from ( width) . ok ( ) ?;
@@ -90,7 +97,11 @@ impl<D: HasDisplayHandle, W: HasWindowHandle> SurfaceInterface<D, W> for Android
9097 Ok ( ( ) )
9198 }
9299
93- fn next_buffer ( & mut self , _alpha_mode : AlphaMode ) -> Result < BufferImpl < ' _ > , SoftBufferError > {
100+ fn next_buffer (
101+ & mut self ,
102+ _alpha_mode : AlphaMode ,
103+ _pixel_format : PixelFormat ,
104+ ) -> Result < BufferImpl < ' _ > , SoftBufferError > {
94105 let native_window_buffer = self . native_window . lock ( None ) . map_err ( |err| {
95106 SoftBufferError :: PlatformError (
96107 Some ( "Failed to lock ANativeWindow" . to_owned ( ) ) ,
0 commit comments