Bug 1272877 - Allow access to derived Image classes; r=sotaro draft
authorMunro Mengjue Chiang <mchiang@mozilla.com>
Tue, 23 Aug 2016 15:44:40 +0800
changeset 405224 7da96726ab3f9664f3dc9efb9927e1cfc1337c40
parent 402944 cf06fbc831754e54c6abb71d3136597488a530e0
child 405225 6051e7a789c4ba461128228b9af4bb18e3075b9e
child 406722 a418c6baa2e2ecb52155dc9f7a1320b41acd3b6b
push id27438
push usermchiang@mozilla.com
push dateThu, 25 Aug 2016 03:50:57 +0000
reviewerssotaro
bugs1272877
milestone51.0a1
Bug 1272877 - Allow access to derived Image classes; r=sotaro MozReview-Commit-ID: 3fXjwaDN5KV
gfx/layers/GLImages.h
gfx/layers/ImageContainer.h
--- 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; }