From 9fc405c10fd886d16b6016c386bed32dd7d0788b Mon Sep 17 00:00:00 2001 From: Scott Johnson Date: Mon, 3 Oct 2011 13:39:05 -0700 Subject: [PATCH] Bug 666446, Part 1/18 - Add method to imgIContainer for notification of refresh driver events. [r=dholbert,joe][sr=bz] --- modules/libpr0n/public/imgIContainer.idl | 12 ++++++++++++ modules/libpr0n/src/RasterImage.cpp | 8 ++++++++ modules/libpr0n/src/RasterImage.h | 1 + modules/libpr0n/src/VectorImage.cpp | 9 ++++++++- modules/libpr0n/src/VectorImage.h | 2 ++ 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/modules/libpr0n/public/imgIContainer.idl b/modules/libpr0n/public/imgIContainer.idl index 01ce8df91bf..364b692357e 100644 --- a/modules/libpr0n/public/imgIContainer.idl +++ b/modules/libpr0n/public/imgIContainer.idl @@ -56,6 +56,10 @@ interface imgIDecoderObserver; #include "limits.h" class nsIFrame; + +namespace mozilla { +class TimeStamp; +} %} [ptr] native gfxImageSurface(gfxImageSurface); @@ -68,6 +72,7 @@ native gfxGraphicsFilter(gfxPattern::GraphicsFilter); [ref] native nsIntRect(nsIntRect); [ref] native nsIntSize(nsIntSize); [ptr] native nsIFrame(nsIFrame); +[ref] native TimeStamp(mozilla::TimeStamp); /** * imgIContainer is the interface that represents an image. It allows @@ -261,6 +266,13 @@ interface imgIContainer : nsISupports */ void unlockImage(); + /** + * Indicates that this imgIContainer has been triggered to update + * its internal animation state. Likely this should only be called + * from within nsImageFrame or objects of similar type. + */ + [notxpcom] void requestRefresh([const] in TimeStamp aTime); + /** * Animation mode Constants * 0 = normal diff --git a/modules/libpr0n/src/RasterImage.cpp b/modules/libpr0n/src/RasterImage.cpp index ac78b16a07c..42968543890 100644 --- a/modules/libpr0n/src/RasterImage.cpp +++ b/modules/libpr0n/src/RasterImage.cpp @@ -313,6 +313,14 @@ RasterImage::Init(imgIDecoderObserver *aObserver, return NS_OK; } +//****************************************************************************** +/* [notxpcom] void requestRefresh ([const] in TimeStamp aTime); */ +NS_IMETHODIMP_(void) +RasterImage::RequestRefresh(const mozilla::TimeStamp& aTime) +{ + // TODO: Implement me as part of b666446 +} + //****************************************************************************** /* [noscript] imgIContainer extractFrame(PRUint32 aWhichFrame, * [const] in nsIntRect aRegion, diff --git a/modules/libpr0n/src/RasterImage.h b/modules/libpr0n/src/RasterImage.h index 7318f48e1fa..b1aae1b6b56 100644 --- a/modules/libpr0n/src/RasterImage.h +++ b/modules/libpr0n/src/RasterImage.h @@ -183,6 +183,7 @@ public: NS_SCRIPTABLE NS_IMETHOD LockImage(void); NS_SCRIPTABLE NS_IMETHOD UnlockImage(void); NS_SCRIPTABLE NS_IMETHOD ResetAnimation(void); + NS_IMETHOD_(void) RequestRefresh(const mozilla::TimeStamp& aTime); // END NS_DECL_IMGICONTAINER RasterImage(imgStatusTracker* aStatusTracker = nsnull); diff --git a/modules/libpr0n/src/VectorImage.cpp b/modules/libpr0n/src/VectorImage.cpp index a3fa3c0c478..2e028e0ba81 100644 --- a/modules/libpr0n/src/VectorImage.cpp +++ b/modules/libpr0n/src/VectorImage.cpp @@ -171,7 +171,6 @@ SVGDrawingCallback::operator()(gfxContext* aContext, gfxContextMatrixAutoSaveRestore contextMatrixRestorer(aContext); aContext->Multiply(gfxMatrix(aTransform).Invert()); - nsPresContext* presContext = presShell->GetPresContext(); NS_ABORT_IF_FALSE(presContext, "pres shell w/out pres context"); @@ -329,6 +328,14 @@ VectorImage::GetWidth(PRInt32* aWidth) return NS_OK; } +//****************************************************************************** +/* [notxpcom] void requestRefresh ([const] in TimeStamp aTime); */ +NS_IMETHODIMP_(void) +VectorImage::RequestRefresh(const mozilla::TimeStamp& aTime) +{ + // TODO: Implement for b666446. +} + //****************************************************************************** /* readonly attribute PRInt32 height; */ NS_IMETHODIMP diff --git a/modules/libpr0n/src/VectorImage.h b/modules/libpr0n/src/VectorImage.h index d12b9b89d11..e3982a2e6b5 100644 --- a/modules/libpr0n/src/VectorImage.h +++ b/modules/libpr0n/src/VectorImage.h @@ -42,6 +42,7 @@ #include "Image.h" #include "nsIStreamListener.h" #include "nsWeakReference.h" +#include "mozilla/TimeStamp.h" class imgIDecoderObserver; @@ -76,6 +77,7 @@ public: NS_SCRIPTABLE NS_IMETHOD LockImage(void); NS_SCRIPTABLE NS_IMETHOD UnlockImage(void); NS_SCRIPTABLE NS_IMETHOD ResetAnimation(void); + NS_IMETHOD_(void) RequestRefresh(const mozilla::TimeStamp& aTime); // END NS_DECL_IMGICONTAINER VectorImage(imgStatusTracker* aStatusTracker = nsnull);