diff --git a/gfx/webrender_bindings/RendererOGL.cpp b/gfx/webrender_bindings/RendererOGL.cpp index ec9d2eb9102c..250ad7d274d4 100644 --- a/gfx/webrender_bindings/RendererOGL.cpp +++ b/gfx/webrender_bindings/RendererOGL.cpp @@ -16,7 +16,7 @@ namespace mozilla { namespace wr { -WrExternalImage LockExternalImage(void* aObj, WrExternalImageId aId) +WrExternalImage LockExternalImage(void* aObj, WrExternalImageId aId, uint8_t aChannelIndex) { RendererOGL* renderer = reinterpret_cast(aObj); RenderTextureHost* texture = renderer->GetRenderTexture(aId); @@ -42,7 +42,7 @@ WrExternalImage LockExternalImage(void* aObj, WrExternalImageId aId) } } -void UnlockExternalImage(void* aObj, WrExternalImageId aId) +void UnlockExternalImage(void* aObj, WrExternalImageId aId, uint8_t aChannelIndex) { RendererOGL* renderer = reinterpret_cast(aObj); RenderTextureHost* texture = renderer->GetRenderTexture(aId); diff --git a/gfx/webrender_bindings/RendererOGL.h b/gfx/webrender_bindings/RendererOGL.h index e28e34405d57..b3da5a4ca8ce 100644 --- a/gfx/webrender_bindings/RendererOGL.h +++ b/gfx/webrender_bindings/RendererOGL.h @@ -40,8 +40,8 @@ class RenderTextureHost; /// on the render thread instead of the compositor thread. class RendererOGL { - friend WrExternalImage LockExternalImage(void* aObj, WrExternalImageId aId); - friend void UnlockExternalImage(void* aObj, WrExternalImageId aId); + friend WrExternalImage LockExternalImage(void* aObj, WrExternalImageId aId, uint8_t aChannelIndex); + friend void UnlockExternalImage(void* aObj, WrExternalImageId aId, uint8_t aChannelIndex); public: WrExternalImageHandler GetExternalImageHandler(); diff --git a/gfx/webrender_bindings/src/bindings.rs b/gfx/webrender_bindings/src/bindings.rs index ec9acffbfd1f..4c6645b87cc3 100644 --- a/gfx/webrender_bindings/src/bindings.rs +++ b/gfx/webrender_bindings/src/bindings.rs @@ -555,8 +555,8 @@ struct WrExternalImage { size: usize, } -type LockExternalImageCallback = fn(*mut c_void, WrExternalImageId) -> WrExternalImage; -type UnlockExternalImageCallback = fn(*mut c_void, WrExternalImageId); +type LockExternalImageCallback = fn(*mut c_void, WrExternalImageId, u8) -> WrExternalImage; +type UnlockExternalImageCallback = fn(*mut c_void, WrExternalImageId, u8); #[repr(C)] pub struct WrExternalImageHandler { @@ -568,9 +568,9 @@ pub struct WrExternalImageHandler { impl ExternalImageHandler for WrExternalImageHandler { fn lock(&mut self, id: ExternalImageId, - _channel_index: u8) + channel_index: u8) -> ExternalImage { - let image = (self.lock_func)(self.external_image_obj, id.into()); + let image = (self.lock_func)(self.external_image_obj, id.into(), channel_index); match image.image_type { WrExternalImageType::NativeTexture => { @@ -596,8 +596,8 @@ impl ExternalImageHandler for WrExternalImageHandler { fn unlock(&mut self, id: ExternalImageId, - _channel_index: u8) { - (self.unlock_func)(self.external_image_obj, id.into()); + channel_index: u8) { + (self.unlock_func)(self.external_image_obj, id.into(), channel_index); } } diff --git a/gfx/webrender_bindings/webrender_ffi_generated.h b/gfx/webrender_bindings/webrender_ffi_generated.h index 82d7fc3324a3..b79fc0748672 100644 --- a/gfx/webrender_bindings/webrender_ffi_generated.h +++ b/gfx/webrender_bindings/webrender_ffi_generated.h @@ -485,9 +485,9 @@ struct WrExternalImage { } }; -typedef WrExternalImage (*LockExternalImageCallback)(void*, WrExternalImageId); +typedef WrExternalImage (*LockExternalImageCallback)(void*, WrExternalImageId, uint8_t); -typedef void (*UnlockExternalImageCallback)(void*, WrExternalImageId); +typedef void (*UnlockExternalImageCallback)(void*, WrExternalImageId, uint8_t); struct WrExternalImageHandler { void* external_image_obj;