Bug 1272877 - Allow access to derived Image classes; r=sotaro
MozReview-Commit-ID: 3fXjwaDN5KV
--- a/gfx/layers/GLImages.h
+++ b/gfx/layers/GLImages.h
@@ -17,16 +17,20 @@
namespace mozilla {
namespace layers {
class GLImage : public Image {
public:
explicit GLImage(ImageFormat aFormat) : Image(nullptr, aFormat){}
virtual already_AddRefed<gfx::SourceSurface> GetAsSourceSurface() override;
+
+ GLImage* AsGLImage() override {
+ return this;
+ }
};
class EGLImageImage : public GLImage {
public:
EGLImageImage(EGLImage aImage, EGLSync aSync,
const gfx::IntSize& aSize, const gl::OriginPos& aOrigin,
bool aOwns);
--- a/gfx/layers/ImageContainer.h
+++ b/gfx/layers/ImageContainer.h
@@ -158,16 +158,17 @@ struct ImageBackendData
{
virtual ~ImageBackendData() {}
protected:
ImageBackendData() {}
};
/* Forward declarations for Image derivatives. */
+class GLImage;
class EGLImageImage;
class SharedRGBImage;
#ifdef MOZ_WIDGET_ANDROID
class SurfaceTextureImage;
#elif defined(XP_MACOSX)
class MacIOSurfaceImage;
#elif defined(MOZ_WIDGET_GONK)
class OverlayImage;
@@ -225,16 +226,17 @@ public:
/**
* For use with the CompositableClient only (so that the later can
* synchronize the TextureClient with the TextureHost).
*/
virtual TextureClient* GetTextureClient(CompositableClient* aClient) { return nullptr; }
/* Access to derived classes. */
virtual EGLImageImage* AsEGLImageImage() { return nullptr; }
+ virtual GLImage* AsGLImage() { return nullptr; }
#ifdef MOZ_WIDGET_ANDROID
virtual SurfaceTextureImage* AsSurfaceTextureImage() { return nullptr; }
#endif
#ifdef XP_MACOSX
virtual MacIOSurfaceImage* AsMacIOSurfaceImage() { return nullptr; }
#endif
virtual PlanarYCbCrImage* AsPlanarYCbCrImage() { return nullptr; }