Bug 1351189 - update WR external image callback interface. r=sotaro

The new parameter "channel index" is used to select the specific channel data from a multiple channel textureHost(e.g. yuv format textureHost).

MozReview-Commit-ID: Ey1cA25Z6WH
This commit is contained in:
JerryShih 2017-04-28 14:16:26 +08:00
parent c77714e7cd
commit ed60edae0c
4 changed files with 12 additions and 12 deletions

View File

@ -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<RendererOGL*>(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<RendererOGL*>(aObj);
RenderTextureHost* texture = renderer->GetRenderTexture(aId);

View File

@ -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();

View File

@ -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);
}
}

View File

@ -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;