WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
30349
WebGL LayoutTests fail on buildbot
https://bugs.webkit.org/show_bug.cgi?id=30349
Summary
WebGL LayoutTests fail on buildbot
Chris Marrin
Reported
2009-10-13 18:57:35 PDT
Looks like it is failing because it is not able to get the desired pixel format. This may be due to the monitor being plugged in, or because the card is old or something. I need to make the code more robust in the face of a pixel format failure, make it succeed in more cases (on this buildbot if possible) and somehow avoid failing if the target machine can't run the webgl tests.
Attachments
Patch
(8.02 KB, patch)
2009-10-14 11:55 PDT
,
Chris Marrin
simon.fraser
: review-
Details
Formatted Diff
Diff
Patch
(63.24 KB, patch)
2009-10-27 10:20 PDT
,
Chris Marrin
simon.fraser
: review-
Details
Formatted Diff
Diff
Replacement patch
(56.47 KB, patch)
2009-10-27 11:02 PDT
,
Chris Marrin
no flags
Details
Formatted Diff
Diff
replacement patch
(69.29 KB, patch)
2009-10-27 13:33 PDT
,
Chris Marrin
simon.fraser
: review-
Details
Formatted Diff
Diff
replacement patch
(69.25 KB, patch)
2009-10-27 14:06 PDT
,
Chris Marrin
simon.fraser
: review+
Details
Formatted Diff
Diff
Show Obsolete
(4)
View All
Add attachment
proposed patch, testcase, etc.
Simon Fraser (smfr)
Comment 1
2009-10-13 19:47:44 PDT
<
rdar://problem/7301008
>
Chris Marrin
Comment 2
2009-10-14 11:55:10 PDT
Created
attachment 41177
[details]
Patch
Simon Fraser (smfr)
Comment 3
2009-10-14 12:02:51 PDT
Comment on
attachment 41177
[details]
Patch I don't like having to add this notion of validity everywhere. I think it would be better to just not be able to construct a GraphicsContext3D if the 3d is not available.
Chris Marrin
Comment 4
2009-10-27 10:20:23 PDT
Created
attachment 41960
[details]
Patch
Simon Fraser (smfr)
Comment 5
2009-10-27 10:32:19 PDT
Comment on
attachment 41960
[details]
Patch
> Index: WebCore/ChangeLog > ===================================================================
> + (WebCore::CanvasRenderingContext3D::create): > + (WebCore::CanvasRenderingContext3D::CanvasRenderingContext3D): > + (WebCore::CanvasRenderingContext3D::beginPaint): > + (WebCore::CanvasRenderingContext3D::endPaint): > + (WebCore::CanvasRenderingContext3D::reshape): > + (WebCore::CanvasRenderingContext3D::sizeInBytes): > + (WebCore::CanvasRenderingContext3D::activeTexture): > + (WebCore::CanvasRenderingContext3D::attachShader): > + (WebCore::CanvasRenderingContext3D::bindAttribLocation): > + (WebCore::CanvasRenderingContext3D::bindBuffer): > + (WebCore::CanvasRenderingContext3D::bindFramebuffer): > + (WebCore::CanvasRenderingContext3D::bindRenderbuffer): > + (WebCore::CanvasRenderingContext3D::bindTexture): > + (WebCore::CanvasRenderingContext3D::blendColor): > + (WebCore::CanvasRenderingContext3D::blendEquation): > + (WebCore::CanvasRenderingContext3D::blendEquationSeparate): > + (WebCore::CanvasRenderingContext3D::blendFunc): > + (WebCore::CanvasRenderingContext3D::blendFuncSeparate): > + (WebCore::CanvasRenderingContext3D::bufferData): > + (WebCore::CanvasRenderingContext3D::bufferSubData): > + (WebCore::CanvasRenderingContext3D::checkFramebufferStatus): > + (WebCore::CanvasRenderingContext3D::clear): > + (WebCore::CanvasRenderingContext3D::clearColor): > + (WebCore::CanvasRenderingContext3D::clearDepth): > + (WebCore::CanvasRenderingContext3D::clearStencil): > + (WebCore::CanvasRenderingContext3D::colorMask): > + (WebCore::CanvasRenderingContext3D::compileShader): > + (WebCore::CanvasRenderingContext3D::copyTexImage2D): > + (WebCore::CanvasRenderingContext3D::copyTexSubImage2D): > + (WebCore::CanvasRenderingContext3D::cullFace): > + (WebCore::CanvasRenderingContext3D::depthFunc): > + (WebCore::CanvasRenderingContext3D::depthMask): > + (WebCore::CanvasRenderingContext3D::depthRange): > + (WebCore::CanvasRenderingContext3D::detachShader): > + (WebCore::CanvasRenderingContext3D::disable): > + (WebCore::CanvasRenderingContext3D::disableVertexAttribArray): > + (WebCore::CanvasRenderingContext3D::drawArrays): > + (WebCore::CanvasRenderingContext3D::drawElements): > + (WebCore::CanvasRenderingContext3D::enable): > + (WebCore::CanvasRenderingContext3D::enableVertexAttribArray): > + (WebCore::CanvasRenderingContext3D::finish): > + (WebCore::CanvasRenderingContext3D::flush): > + (WebCore::CanvasRenderingContext3D::framebufferRenderbuffer): > + (WebCore::CanvasRenderingContext3D::framebufferTexture2D): > + (WebCore::CanvasRenderingContext3D::frontFace): > + (WebCore::CanvasRenderingContext3D::generateMipmap): > + (WebCore::CanvasRenderingContext3D::getActiveAttrib): > + (WebCore::CanvasRenderingContext3D::getActiveUniform): > + (WebCore::CanvasRenderingContext3D::getAttribLocation): > + (WebCore::CanvasRenderingContext3D::getBoolean): > + (WebCore::CanvasRenderingContext3D::getBooleanv): > + (WebCore::CanvasRenderingContext3D::getBufferParameteri): > + (WebCore::CanvasRenderingContext3D::getBufferParameteriv): > + (WebCore::CanvasRenderingContext3D::getError): > + (WebCore::CanvasRenderingContext3D::getFloat): > + (WebCore::CanvasRenderingContext3D::getFloatv): > + (WebCore::CanvasRenderingContext3D::getFramebufferAttachmentParameteri): > + (WebCore::CanvasRenderingContext3D::getFramebufferAttachmentParameteriv): > + (WebCore::CanvasRenderingContext3D::getInteger): > + (WebCore::CanvasRenderingContext3D::getIntegerv): > + (WebCore::CanvasRenderingContext3D::getProgrami): > + (WebCore::CanvasRenderingContext3D::getProgramiv): > + (WebCore::CanvasRenderingContext3D::getProgramInfoLog): > + (WebCore::CanvasRenderingContext3D::getRenderbufferParameteri): > + (WebCore::CanvasRenderingContext3D::getRenderbufferParameteriv): > + (WebCore::CanvasRenderingContext3D::getShaderi): > + (WebCore::CanvasRenderingContext3D::getShaderiv): > + (WebCore::CanvasRenderingContext3D::getShaderInfoLog): > + (WebCore::CanvasRenderingContext3D::getShaderSource): > + (WebCore::CanvasRenderingContext3D::getString): > + (WebCore::CanvasRenderingContext3D::getTexParameterf): > + (WebCore::CanvasRenderingContext3D::getTexParameterfv): > + (WebCore::CanvasRenderingContext3D::getTexParameteri): > + (WebCore::CanvasRenderingContext3D::getTexParameteriv): > + (WebCore::CanvasRenderingContext3D::getUniformf): > + (WebCore::CanvasRenderingContext3D::getUniformfv): > + (WebCore::CanvasRenderingContext3D::getUniformi): > + (WebCore::CanvasRenderingContext3D::getUniformiv): > + (WebCore::CanvasRenderingContext3D::getUniformLocation): > + (WebCore::CanvasRenderingContext3D::getVertexAttribf): > + (WebCore::CanvasRenderingContext3D::getVertexAttribfv): > + (WebCore::CanvasRenderingContext3D::getVertexAttribi): > + (WebCore::CanvasRenderingContext3D::getVertexAttribiv): > + (WebCore::CanvasRenderingContext3D::getVertexAttribOffset): > + (WebCore::CanvasRenderingContext3D::hint): > + (WebCore::CanvasRenderingContext3D::isBuffer): > + (WebCore::CanvasRenderingContext3D::isEnabled): > + (WebCore::CanvasRenderingContext3D::isFramebuffer): > + (WebCore::CanvasRenderingContext3D::isProgram): > + (WebCore::CanvasRenderingContext3D::isRenderbuffer): > + (WebCore::CanvasRenderingContext3D::isShader): > + (WebCore::CanvasRenderingContext3D::isTexture): > + (WebCore::CanvasRenderingContext3D::lineWidth): > + (WebCore::CanvasRenderingContext3D::linkProgram): > + (WebCore::CanvasRenderingContext3D::pixelStorei): > + (WebCore::CanvasRenderingContext3D::polygonOffset): > + (WebCore::CanvasRenderingContext3D::readPixels): > + (WebCore::CanvasRenderingContext3D::releaseShaderCompiler): > + (WebCore::CanvasRenderingContext3D::renderbufferStorage): > + (WebCore::CanvasRenderingContext3D::sampleCoverage): > + (WebCore::CanvasRenderingContext3D::scissor): > + (WebCore::CanvasRenderingContext3D::shaderSource): > + (WebCore::CanvasRenderingContext3D::stencilFunc): > + (WebCore::CanvasRenderingContext3D::stencilFuncSeparate): > + (WebCore::CanvasRenderingContext3D::stencilMask): > + (WebCore::CanvasRenderingContext3D::stencilMaskSeparate): > + (WebCore::CanvasRenderingContext3D::stencilOp): > + (WebCore::CanvasRenderingContext3D::stencilOpSeparate): > + (WebCore::CanvasRenderingContext3D::texImage2D): > + (WebCore::CanvasRenderingContext3D::texParameterf): > + (WebCore::CanvasRenderingContext3D::texParameteri): > + (WebCore::CanvasRenderingContext3D::texSubImage2D): > + (WebCore::CanvasRenderingContext3D::uniform1f): > + (WebCore::CanvasRenderingContext3D::uniform1fv): > + (WebCore::CanvasRenderingContext3D::uniform1i): > + (WebCore::CanvasRenderingContext3D::uniform1iv): > + (WebCore::CanvasRenderingContext3D::uniform2f): > + (WebCore::CanvasRenderingContext3D::uniform2fv): > + (WebCore::CanvasRenderingContext3D::uniform2i): > + (WebCore::CanvasRenderingContext3D::uniform2iv): > + (WebCore::CanvasRenderingContext3D::uniform3f): > + (WebCore::CanvasRenderingContext3D::uniform3fv): > + (WebCore::CanvasRenderingContext3D::uniform3i): > + (WebCore::CanvasRenderingContext3D::uniform3iv): > + (WebCore::CanvasRenderingContext3D::uniform4f): > + (WebCore::CanvasRenderingContext3D::uniform4fv): > + (WebCore::CanvasRenderingContext3D::uniform4i): > + (WebCore::CanvasRenderingContext3D::uniform4iv): > + (WebCore::CanvasRenderingContext3D::uniformMatrix2fv): > + (WebCore::CanvasRenderingContext3D::uniformMatrix3fv): > + (WebCore::CanvasRenderingContext3D::uniformMatrix4fv): > + (WebCore::CanvasRenderingContext3D::useProgram): > + (WebCore::CanvasRenderingContext3D::validateProgram): > + (WebCore::CanvasRenderingContext3D::vertexAttrib1f): > + (WebCore::CanvasRenderingContext3D::vertexAttrib1fv): > + (WebCore::CanvasRenderingContext3D::vertexAttrib2f): > + (WebCore::CanvasRenderingContext3D::vertexAttrib2fv): > + (WebCore::CanvasRenderingContext3D::vertexAttrib3f): > + (WebCore::CanvasRenderingContext3D::vertexAttrib3fv): > + (WebCore::CanvasRenderingContext3D::vertexAttrib4f): > + (WebCore::CanvasRenderingContext3D::vertexAttrib4fv): > + (WebCore::CanvasRenderingContext3D::vertexAttribPointer): > + (WebCore::CanvasRenderingContext3D::viewport):
No need for this huge list.
> Index: WebCore/html/canvas/CanvasRenderingContext3D.cpp > ===================================================================
> +CanvasRenderingContext3D::CanvasRenderingContext3D(HTMLCanvasElement* canvas, GraphicsContext3D* context) > : CanvasRenderingContext(canvas) > + , m_context(context) > , m_needsUpdate(true) > , m_markedCanvasDirty(false) > {
I think an ASSERT(context) would make the contract clearer.
> Index: WebCore/html/canvas/CanvasRenderingContext3D.h > ===================================================================
> > - GraphicsContext3D* graphicsContext3D() { return &m_context; } > + GraphicsContext3D* graphicsContext3D() { return m_context.get(); }
As I mentioned in previous reviews, this getter should be "const".
> Index: WebCore/platform/graphics/mac/Canvas3DLayer.mm > =================================================================== > --- WebCore/platform/graphics/mac/Canvas3DLayer.mm (revision 50115) > +++ WebCore/platform/graphics/mac/Canvas3DLayer.mm (working copy) > @@ -50,6 +50,8 @@ using namespace WebCore; > > -(CGLPixelFormatObj)copyCGLPixelFormatForDisplayMask:(uint32_t)mask > { > + UNUSED_PARAM(mask); > + /* > CGLPixelFormatAttribute attribs[] = > { > (CGLPixelFormatAttribute) kCGLPFAAccelerated, > @@ -63,6 +65,9 @@ using namespace WebCore; > > CGLChoosePixelFormat(attribs, &pixelFormatObj, &numPixelFormats); > return pixelFormatObj; > + */
Why are you commenting out this code? If it shouldn't be there, remove it.
> Index: WebCore/platform/graphics/mac/GraphicsContext3DMac.cpp > ===================================================================
> +static void setPixelFormat(CGLPixelFormatAttribute* attribs, int colorBits, int depthBits, > + bool accelerated, bool supersample, bool closest) > +{ > + *attribs++ = kCGLPFAColorSize; > + *attribs++ = static_cast<CGLPixelFormatAttribute>(colorBits); > + *attribs++ = kCGLPFADepthSize; > + *attribs++ = static_cast<CGLPixelFormatAttribute>(depthBits);
I don't like this at all. This method just blindly assumes that the caller has allocated enough space. You could use a Vector<CGLPixelFormatAttribute>, which would be much cleaner.
> @@ -176,7 +200,7 @@ void GraphicsContext3D::endPaint() > > void GraphicsContext3D::reshape(int width, int height) > { > - if (width == m_currentWidth && height == m_currentHeight) > + if (width == m_currentWidth && height == m_currentHeight || !m_contextObj) > return;
How do you ever get here with m_contextObj == 0 ?
> m_currentWidth = width; > @@ -208,6 +232,9 @@ void GraphicsContext3D::reshape(int widt > > static inline void ensureContext(CGLContextObj context) > { > + if (!context) > + return; > + > CGLContextObj currentContext = CGLGetCurrentContext(); > if (currentContext != context) > CGLSetCurrentContext(context);
r- to clean up the setPixelFormat() stuff, but in general it looks ok.
Darin Adler
Comment 6
2009-10-27 10:40:52 PDT
Comment on
attachment 41960
[details]
Patch I think that CanvasRenderContext.h needs a comment explaining that ref/deref just ref/deref the canvas. I think that m_canvas in CanvasRenderContext should be private, not protected.
> +CanvasRenderingContext3D* CanvasRenderingContext3D::create(HTMLCanvasElement* canvas)
This function should return a PassOwnPtr<CanvasRenderingContext3D>.
> + static GraphicsContext3D* create();
This function should return a PassOwnPtr<GraphicsContext3D>.
> -(CGLPixelFormatObj)copyCGLPixelFormatForDisplayMask:(uint32_t)mask > { > + UNUSED_PARAM(mask); > + /* > CGLPixelFormatAttribute attribs[] = > { > (CGLPixelFormatAttribute) kCGLPFAAccelerated, > @@ -63,6 +65,9 @@ using namespace WebCore; > > CGLChoosePixelFormat(attribs, &pixelFormatObj, &numPixelFormats); > return pixelFormatObj; > + */ > + > + return CGLRetainPixelFormat(CGLGetPixelFormat(m_contextObj)); > }
Normally we do not leave commented-out code in WebKit. Could you just delete this instead?
> +static void setPixelFormat(CGLPixelFormatAttribute* attribs, int colorBits, int depthBits, > + bool accelerated, bool supersample, bool closest)
Normally in WebKit we don't line up the second line with the parenthesis like this.
> + *attribs++ = static_cast<CGLPixelFormatAttribute>(0);
I'm surprised this cast is helpful or
> +GraphicsContext3D* GraphicsContext3D::create() > +{ > + GraphicsContext3D* context = new GraphicsContext3D(); > + if (context->m_contextObj) > + return context; > + delete context; > + return 0; > +}
It would be slightly better to use OwnPtr inside this function. Also no need for the parentheses in the new expression.
> void GraphicsContext3D::reshape(int width, int height) > { > - if (width == m_currentWidth && height == m_currentHeight) > + if (width == m_currentWidth && height == m_currentHeight || !m_contextObj) > return;
Is this needed? You made the create function return 0 if m_contextObj is 0. How can this ever be called with an m_contextObj of zero?
> static inline void ensureContext(CGLContextObj context) > { > + if (!context) > + return;
Same question. Does this get called with a context of 0? From where? Seems on the right track, but review- because I think you should be using PassOwnPtr.
Chris Marrin
Comment 7
2009-10-27 11:02:39 PDT
Created
attachment 41967
[details]
Replacement patch
Darin Adler
Comment 8
2009-10-27 11:10:59 PDT
Comment on
attachment 41967
[details]
Replacement patch Looks like you addressed Simon’s comments, but not mine.
Chris Marrin
Comment 9
2009-10-27 13:33:49 PDT
Created
attachment 41976
[details]
replacement patch This addresses Simon and Darin's comments
Simon Fraser (smfr)
Comment 10
2009-10-27 13:38:14 PDT
Comment on
attachment 41976
[details]
replacement patch
> Index: WebCore/ChangeLog > =================================================================== > --- WebCore/ChangeLog (revision 50169) > +++ WebCore/ChangeLog (working copy) > @@ -1,3 +1,34 @@ > +2009-10-27 Chris Marrin <
cmarrin@apple.com
> > + > + Reviewed by NOBODY (OOPS!). > + Make WebGL context failure more robust > +
https://bugs.webkit.org/show_bug.cgi?id=30349
> + > + The buildbot failure has already been fixed and checked in. This
This is not a useful comment in a changelog; there isn't enough context. Just say what the current patch is doing.
> +void CanvasRenderingContext2D::drawImage(HTMLCanvasElement* passedCanvas, const FloatRect& srcRect,
passedCanvas is vague. Is it the source or the destination?
> Index: WebCore/html/canvas/CanvasRenderingContext3D.cpp > =================================================================== > --- WebCore/html/canvas/CanvasRenderingContext3D.cpp (revision 50115) > +++ WebCore/html/canvas/CanvasRenderingContext3D.cpp (working copy) > @@ -42,12 +42,23 @@ > > namespace WebCore { > > -CanvasRenderingContext3D::CanvasRenderingContext3D(HTMLCanvasElement* canvas) > - : CanvasRenderingContext(canvas) > +CanvasRenderingContext3D* CanvasRenderingContext3D::create(HTMLCanvasElement* canvas)
Darin said:
> This function should return a PassOwnPtr<CanvasRenderingContext3D>.
Darin Adler
Comment 11
2009-10-27 14:05:48 PDT
Comment on
attachment 41976
[details]
replacement patch My comments are similar to Simon's.
> -void CanvasRenderingContext2D::drawImage(HTMLCanvasElement* canvas, const FloatRect& srcRect, > +void CanvasRenderingContext2D::drawImage(HTMLCanvasElement* passedCanvas, const FloatRect& srcRect,
I think sourceCanvas or srcCanvas would be clearer.
> +CanvasRenderingContext3D* CanvasRenderingContext3D::create(HTMLCanvasElement* canvas)
I suggested changing the return type of this function to PassOwnPtr. Did you decide not to? Maybe you confused this comment with the similar one about GraphicsContext3D::create?
> + PassOwnPtr<GraphicsContext3D> context = GraphicsContext3D::create();
This local variable should be OwnPtr, not PassOwnPtr.
> +CanvasRenderingContext3D::CanvasRenderingContext3D(HTMLCanvasElement* passedCanvas, PassOwnPtr<GraphicsContext3D> context) > + : CanvasRenderingContext(passedCanvas)
You could call it targetCanvas. But here passedCanvas seems OK.
> + // Ref and deref the m_canvas
We normally put a period on a comment like this one.
> - if (width == m_currentWidth && height == m_currentHeight) > + if (width == m_currentWidth && height == m_currentHeight || !m_contextObj) > return;
I believe you added this because reshape is called in the constructor. I asked you this in my last review comments, and you didn't answer or change the code. But I think I figured the answer out myself.
> static inline void ensureContext(CGLContextObj context) > { > + if (!context) > + return;
I asked why you needed to add this, but you didn't say.
Chris Marrin
Comment 12
2009-10-27 14:06:24 PDT
Created
attachment 41983
[details]
replacement patch
Simon Fraser (smfr)
Comment 13
2009-10-27 14:27:24 PDT
Comment on
attachment 41983
[details]
replacement patch
> Index: WebCore/platform/graphics/mac/GraphicsContext3DMac.cpp > ===================================================================
> +static void setPixelFormat(Vector<CGLPixelFormatAttribute>& attribs, int colorBits, int depthBits, bool accelerated, bool supersample, bool closest) > +{ > + attribs.clear(); > + > + attribs.append(kCGLPFAColorSize); > + attribs.append(static_cast<CGLPixelFormatAttribute>(colorBits)); > + attribs.append(kCGLPFADepthSize); > + attribs.append(static_cast<CGLPixelFormatAttribute>(depthBits));
So much better!
> +PassOwnPtr<GraphicsContext3D> GraphicsContext3D::create() > +{ > + PassOwnPtr<GraphicsContext3D> context = new GraphicsContext3D();
I think you should use an OwnPtr on the stack here.
> + setPixelFormat(attribs, 32, 32, true, true, false);
> + setPixelFormat(attribs, 32, 32, true, false, false);
> + setPixelFormat(attribs, 32, 16, true, false, false);
> + setPixelFormat(attribs, 32, 16, false, false, true);
This would be even more readable if we had enum values rather than 'true', 'false' here. But OK for now (since the called method is just above). r=me
Chris Marrin
Comment 14
2009-10-27 15:41:42 PDT
Sending WebCore/ChangeLog Sending WebCore/html/HTMLCanvasElement.cpp Sending WebCore/html/canvas/CanvasRenderingContext.h Sending WebCore/html/canvas/CanvasRenderingContext2D.cpp Sending WebCore/html/canvas/CanvasRenderingContext3D.cpp Sending WebCore/html/canvas/CanvasRenderingContext3D.h Sending WebCore/platform/graphics/GraphicsContext3D.h Sending WebCore/platform/graphics/mac/Canvas3DLayer.mm Sending WebCore/platform/graphics/mac/GraphicsContext3DMac.cpp Transmitting file data ......... Committed revision 50181.
Jeremy Orlow
Comment 15
2009-10-27 16:36:52 PDT
> +PassOwnPtr<GraphicsContext3D> GraphicsContext3D::create() > +{ > + PassOwnPtr<GraphicsContext3D> context = new GraphicsContext3D();
If these were RefPtr's, it seems like
http://webkit.org/coding/RefPtr.html
would suggest this should be a OwnPtr not a PassOwnPtr. I've never used a PassOwnPtr though, so maybe I'm off base?
> + return context->m_contextObj ? context : 0; > +}
Simon Fraser (smfr)
Comment 16
2009-10-27 16:47:44 PDT
Jeremy: it got fixed before the commit: PassOwnPtr<GraphicsContext3D> GraphicsContext3D::create() { OwnPtr<GraphicsContext3D> context(new GraphicsContext3D()); return context->m_contextObj ? context.release() : 0; }
Jeremy Orlow
Comment 17
2009-10-27 17:06:41 PDT
(In reply to
comment #16
)
> Jeremy: it got fixed before the commit: > > PassOwnPtr<GraphicsContext3D> GraphicsContext3D::create() > { > OwnPtr<GraphicsContext3D> context(new GraphicsContext3D()); > return context->m_contextObj ? context.release() : 0; > }
Gotcha. Sorry for the noise. :-)
Eric Seidel (no email)
Comment 18
2009-10-27 17:14:52 PDT
This change broke a security test: http/tests/security/canvas-remote-read-remote-image.html
http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r50184%20(6527)/http/tests/security/canvas-remote-read-remote-image-pretty-diff.html
I'll see if I can see the easy fix in the patch. If not, then I'll start a rollout since Chris isn't around. :(
Simon Fraser (smfr)
Comment 19
2009-10-27 17:20:33 PDT
Fixing the test bustage via
bug 30840
.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug