mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-24 00:24:14 +00:00
Backout e401dfeab8b7 (bug 991572) for crashtest assertion. r=orange
This commit is contained in:
parent
c10f7fac73
commit
2aca4e1214
@ -6,7 +6,6 @@
|
||||
#ifndef nsICanvasRenderingContextInternal_h___
|
||||
#define nsICanvasRenderingContextInternal_h___
|
||||
|
||||
#include "mozilla/gfx/2D.h"
|
||||
#include "nsISupports.h"
|
||||
#include "nsIInputStream.h"
|
||||
#include "nsIDocShell.h"
|
||||
@ -15,8 +14,8 @@
|
||||
#include "mozilla/RefPtr.h"
|
||||
|
||||
#define NS_ICANVASRENDERINGCONTEXTINTERNAL_IID \
|
||||
{ 0x3cc9e801, 0x1806, 0x4ff6, \
|
||||
{ 0x86, 0x14, 0xf9, 0xd0, 0xf4, 0xfb, 0x3b, 0x08 } }
|
||||
{ 0x9a6a5bdf, 0x1261, 0x4057, \
|
||||
{ 0x85, 0xcc, 0xaf, 0x97, 0x6c, 0x36, 0x99, 0xa9 } }
|
||||
|
||||
class gfxContext;
|
||||
class gfxASurface;
|
||||
@ -85,6 +84,10 @@ public:
|
||||
const char16_t *aEncoderOptions,
|
||||
nsIInputStream **aStream) = 0;
|
||||
|
||||
// If this canvas context can be represented with a simple Thebes surface,
|
||||
// return the surface. Otherwise returns an error.
|
||||
NS_IMETHOD GetThebesSurface(gfxASurface **surface) = 0;
|
||||
|
||||
// This gets an Azure SourceSurface for the canvas, this will be a snapshot
|
||||
// of the canvas at the time it was called.
|
||||
virtual mozilla::TemporaryRef<mozilla::gfx::SourceSurface> GetSurfaceSnapshot() = 0;
|
||||
|
@ -1058,12 +1058,13 @@ CanvasRenderingContext2D::Render(gfxContext *ctx, GraphicsFilter aFilter, uint32
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
RefPtr<SourceSurface> surface = mTarget->Snapshot();
|
||||
if (!surface) {
|
||||
nsRefPtr<gfxASurface> surface;
|
||||
|
||||
if (NS_FAILED(GetThebesSurface(getter_AddRefs(surface)))) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsRefPtr<gfxPattern> pat = new gfxPattern(surface, Matrix());
|
||||
nsRefPtr<gfxPattern> pat = new gfxPattern(surface);
|
||||
|
||||
pat->SetFilter(aFilter);
|
||||
pat->SetExtend(gfxPattern::EXTEND_PAD);
|
||||
@ -4159,6 +4160,27 @@ CanvasRenderingContext2D::PutImageData_explicit(int32_t x, int32_t y, uint32_t w
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
CanvasRenderingContext2D::GetThebesSurface(gfxASurface **surface)
|
||||
{
|
||||
EnsureTarget();
|
||||
if (!IsTargetValid()) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsRefPtr<gfxASurface> thebesSurface =
|
||||
gfxPlatform::GetPlatform()->GetThebesSurfaceForDrawTarget(mTarget);
|
||||
|
||||
if (!thebesSurface) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
*surface = thebesSurface;
|
||||
NS_ADDREF(*surface);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
static already_AddRefed<ImageData>
|
||||
CreateImageData(JSContext* cx, CanvasRenderingContext2D* context,
|
||||
uint32_t w, uint32_t h, ErrorResult& error)
|
||||
|
@ -464,6 +464,7 @@ public:
|
||||
NS_IMETHOD GetInputStream(const char* aMimeType,
|
||||
const char16_t* aEncoderOptions,
|
||||
nsIInputStream **aStream) MOZ_OVERRIDE;
|
||||
NS_IMETHOD GetThebesSurface(gfxASurface **surface) MOZ_OVERRIDE;
|
||||
|
||||
mozilla::TemporaryRef<mozilla::gfx::SourceSurface> GetSurfaceSnapshot() MOZ_OVERRIDE
|
||||
{ EnsureTarget(); return mTarget->Snapshot(); }
|
||||
|
@ -827,6 +827,12 @@ WebGLContext::GetInputStream(const char* aMimeType,
|
||||
encoder, aEncoderOptions, aStream);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
WebGLContext::GetThebesSurface(gfxASurface **surface)
|
||||
{
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
}
|
||||
|
||||
void WebGLContext::UpdateLastUseIndex()
|
||||
{
|
||||
static CheckedInt<uint64_t> sIndex = 0;
|
||||
|
@ -174,6 +174,7 @@ public:
|
||||
NS_IMETHOD GetInputStream(const char* aMimeType,
|
||||
const char16_t* aEncoderOptions,
|
||||
nsIInputStream **aStream) MOZ_OVERRIDE;
|
||||
NS_IMETHOD GetThebesSurface(gfxASurface **surface) MOZ_OVERRIDE;
|
||||
mozilla::TemporaryRef<mozilla::gfx::SourceSurface> GetSurfaceSnapshot() MOZ_OVERRIDE;
|
||||
|
||||
NS_IMETHOD SetIsOpaque(bool b) MOZ_OVERRIDE { return NS_OK; };
|
||||
|
Loading…
Reference in New Issue
Block a user