Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(238)

Side by Side Diff: third_party/WebKit/Source/modules/webgl/WebGLObject.h

Issue 2273683003: Use visitDOMWrapper to preserve WebGL JS object wrappers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: style Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * 12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26 #ifndef WebGLObject_h 26 #ifndef WebGLObject_h
27 #define WebGLObject_h 27 #define WebGLObject_h
28 28
29 #include "bindings/core/v8/DOMWrapperWorld.h"
29 #include "bindings/core/v8/ScriptWrappable.h" 30 #include "bindings/core/v8/ScriptWrappable.h"
30 #include "platform/heap/Handle.h" 31 #include "platform/heap/Handle.h"
31 #include "third_party/khronos/GLES2/gl2.h" 32 #include "third_party/khronos/GLES2/gl2.h"
32 #include "wtf/Assertions.h" 33 #include "wtf/Assertions.h"
33 34
34 namespace gpu { 35 namespace gpu {
35 namespace gles2 { 36 namespace gles2 {
36 class GLES2Interface; 37 class GLES2Interface;
37 } 38 }
38 } 39 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 // object()==0 indicates the OpenGL resource is deleted. 74 // object()==0 indicates the OpenGL resource is deleted.
74 bool isDeleted() { return m_deleted; } 75 bool isDeleted() { return m_deleted; }
75 76
76 // True if this object belongs to the group or context. 77 // True if this object belongs to the group or context.
77 virtual bool validate(const WebGLContextGroup*, const WebGLRenderingContextB ase*) const = 0; 78 virtual bool validate(const WebGLContextGroup*, const WebGLRenderingContextB ase*) const = 0;
78 virtual bool hasObject() const = 0; 79 virtual bool hasObject() const = 0;
79 80
80 DEFINE_INLINE_VIRTUAL_TRACE() { } 81 DEFINE_INLINE_VIRTUAL_TRACE() { }
81 82
82 protected: 83 protected:
84 // To allow WebGL[2]RenderingContextBase to call visitChildDOMWrappers.
85 friend class WebGLRenderingContextBase;
86 friend class WebGL2RenderingContextBase;
87
83 explicit WebGLObject(WebGLRenderingContextBase*); 88 explicit WebGLObject(WebGLRenderingContextBase*);
84 89
85 // deleteObjectImpl should be only called once to delete the OpenGL resource . 90 // deleteObjectImpl should be only called once to delete the OpenGL resource .
86 // After calling deleteObjectImpl, hasObject() should return false. 91 // After calling deleteObjectImpl, hasObject() should return false.
87 virtual void deleteObjectImpl(gpu::gles2::GLES2Interface*) = 0; 92 virtual void deleteObjectImpl(gpu::gles2::GLES2Interface*) = 0;
88 93
89 virtual bool hasGroupOrContext() const = 0; 94 virtual bool hasGroupOrContext() const = 0;
90 95
91 void detach(); 96 void detach();
92 void detachAndDeleteObject(); 97 void detachAndDeleteObject();
93 98
94 virtual gpu::gles2::GLES2Interface* getAGLInterface() const = 0; 99 virtual gpu::gles2::GLES2Interface* getAGLInterface() const = 0;
95 100
101 virtual void visitChildDOMWrappers(v8::Isolate*, const v8::Persistent<v8::Ob ject>&) { }
102
96 private: 103 private:
97 unsigned m_attachmentCount; 104 unsigned m_attachmentCount;
98 bool m_deleted; 105 bool m_deleted;
99 }; 106 };
100 107
101 } // namespace blink 108 } // namespace blink
102 109
103 #endif // WebGLObject_h 110 #endif // WebGLObject_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/webgl/WebGLFramebuffer.idl ('k') | third_party/WebKit/Source/modules/webgl/WebGLProgram.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698