| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 1482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1493 if (isContextLost()) | 1493 if (isContextLost()) |
| 1494 return false; | 1494 return false; |
| 1495 | 1495 |
| 1496 bool must_clear_now = ClearIfComposited() != kSkipped; | 1496 bool must_clear_now = ClearIfComposited() != kSkipped; |
| 1497 if (!marked_canvas_dirty_ && !must_clear_now) | 1497 if (!marked_canvas_dirty_ && !must_clear_now) |
| 1498 return false; | 1498 return false; |
| 1499 | 1499 |
| 1500 canvas()->ClearCopiedImage(); | 1500 canvas()->ClearCopiedImage(); |
| 1501 marked_canvas_dirty_ = false; | 1501 marked_canvas_dirty_ = false; |
| 1502 | 1502 |
| 1503 if (!canvas()->Buffer()) | 1503 if (!canvas()->GetOrCreateImageBuffer()) |
| 1504 return false; | 1504 return false; |
| 1505 | 1505 |
| 1506 ScopedTexture2DRestorer restorer(this); | 1506 ScopedTexture2DRestorer restorer(this); |
| 1507 ScopedFramebufferRestorer fbo_restorer(this); | 1507 ScopedFramebufferRestorer fbo_restorer(this); |
| 1508 | 1508 |
| 1509 GetDrawingBuffer()->ResolveAndBindForReadAndDraw(); | 1509 GetDrawingBuffer()->ResolveAndBindForReadAndDraw(); |
| 1510 if (!canvas()->Buffer()->CopyRenderingResultsFromDrawingBuffer( | 1510 if (!canvas() |
| 1511 GetDrawingBuffer(), source_buffer)) { | 1511 ->GetOrCreateImageBuffer() |
| 1512 ->CopyRenderingResultsFromDrawingBuffer(GetDrawingBuffer(), |
| 1513 source_buffer)) { |
| 1512 // Currently, copyRenderingResultsFromDrawingBuffer is expected to always | 1514 // Currently, copyRenderingResultsFromDrawingBuffer is expected to always |
| 1513 // succeed because cases where canvas()-buffer() is not accelerated are | 1515 // succeed because cases where canvas()-buffer() is not accelerated are |
| 1514 // handle before reaching this point. If that assumption ever stops holding | 1516 // handle before reaching this point. If that assumption ever stops holding |
| 1515 // true, we may need to implement a fallback right here. | 1517 // true, we may need to implement a fallback right here. |
| 1516 NOTREACHED(); | 1518 NOTREACHED(); |
| 1517 return false; | 1519 return false; |
| 1518 } | 1520 } |
| 1519 | 1521 |
| 1520 return true; | 1522 return true; |
| 1521 } | 1523 } |
| (...skipping 3436 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4958 | 4960 |
| 4959 void WebGLRenderingContextBase::TexImageCanvasByGPU( | 4961 void WebGLRenderingContextBase::TexImageCanvasByGPU( |
| 4960 TexImageFunctionID function_id, | 4962 TexImageFunctionID function_id, |
| 4961 HTMLCanvasElement* canvas, | 4963 HTMLCanvasElement* canvas, |
| 4962 GLenum target, | 4964 GLenum target, |
| 4963 GLuint target_texture, | 4965 GLuint target_texture, |
| 4964 GLint xoffset, | 4966 GLint xoffset, |
| 4965 GLint yoffset, | 4967 GLint yoffset, |
| 4966 const IntRect& source_sub_rectangle) { | 4968 const IntRect& source_sub_rectangle) { |
| 4967 if (!canvas->Is3d()) { | 4969 if (!canvas->Is3d()) { |
| 4968 ImageBuffer* buffer = canvas->Buffer(); | 4970 ImageBuffer* buffer = canvas->GetOrCreateImageBuffer(); |
| 4969 if (buffer && | 4971 if (buffer && |
| 4970 !buffer->CopyToPlatformTexture( | 4972 !buffer->CopyToPlatformTexture( |
| 4971 FunctionIDToSnapshotReason(function_id), ContextGL(), target, | 4973 FunctionIDToSnapshotReason(function_id), ContextGL(), target, |
| 4972 target_texture, unpack_premultiply_alpha_, unpack_flip_y_, | 4974 target_texture, unpack_premultiply_alpha_, unpack_flip_y_, |
| 4973 IntPoint(xoffset, yoffset), source_sub_rectangle)) { | 4975 IntPoint(xoffset, yoffset), source_sub_rectangle)) { |
| 4974 NOTREACHED(); | 4976 NOTREACHED(); |
| 4975 } | 4977 } |
| 4976 } else { | 4978 } else { |
| 4977 WebGLRenderingContextBase* gl = | 4979 WebGLRenderingContextBase* gl = |
| 4978 ToWebGLRenderingContextBase(canvas->RenderingContext()); | 4980 ToWebGLRenderingContextBase(canvas->RenderingContext()); |
| (...skipping 2845 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7824 void WebGLRenderingContextBase::getHTMLOrOffscreenCanvas( | 7826 void WebGLRenderingContextBase::getHTMLOrOffscreenCanvas( |
| 7825 HTMLCanvasElementOrOffscreenCanvas& result) const { | 7827 HTMLCanvasElementOrOffscreenCanvas& result) const { |
| 7826 if (canvas()) { | 7828 if (canvas()) { |
| 7827 result.setHTMLCanvasElement(static_cast<HTMLCanvasElement*>(host())); | 7829 result.setHTMLCanvasElement(static_cast<HTMLCanvasElement*>(host())); |
| 7828 } else { | 7830 } else { |
| 7829 result.setOffscreenCanvas(static_cast<OffscreenCanvas*>(host())); | 7831 result.setOffscreenCanvas(static_cast<OffscreenCanvas*>(host())); |
| 7830 } | 7832 } |
| 7831 } | 7833 } |
| 7832 | 7834 |
| 7833 } // namespace blink | 7835 } // namespace blink |
| OLD | NEW |