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

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

Issue 1363243003: Manage WebGLRenderingContextBase's weak refs manually without Oilpan. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: reinstate WebGLContextObject dtor (non-Oilpan) Created 5 years, 2 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
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 // Dispatches a context lost event once it is determined that one is needed. 505 // Dispatches a context lost event once it is determined that one is needed.
506 // This is used for synthetic, WEBGL_lose_context and real context losses. F or real ones, it's 506 // This is used for synthetic, WEBGL_lose_context and real context losses. F or real ones, it's
507 // likely that there's no JavaScript on the stack, but that might be depende nt 507 // likely that there's no JavaScript on the stack, but that might be depende nt
508 // on how exactly the platform discovers that the context was lost. For bett er 508 // on how exactly the platform discovers that the context was lost. For bett er
509 // portability we always defer the dispatch of the event. 509 // portability we always defer the dispatch of the event.
510 Timer<WebGLRenderingContextBase> m_dispatchContextLostEventTimer; 510 Timer<WebGLRenderingContextBase> m_dispatchContextLostEventTimer;
511 bool m_restoreAllowed; 511 bool m_restoreAllowed;
512 Timer<WebGLRenderingContextBase> m_restoreTimer; 512 Timer<WebGLRenderingContextBase> m_restoreTimer;
513 513
514 bool m_markedCanvasDirty; 514 bool m_markedCanvasDirty;
515 PersistentHeapHashSetWillBeHeapHashSet<WeakMember<WebGLContextObject>> m_con textObjects; 515 #if ENABLE(OILPAN)
516 HeapHashSet<WeakMember<WebGLContextObject>> m_contextObjects;
517 #else
518 // The hash set isn't traced, hence the references are effectively
519 // weakly kept. Each WebGLContextObject is responsible for detaching
520 // itself upon finalization if the WebGLRenderingContextBase hasn't been
521 // finalized already and detached them via detachAndRemoveAllObjects().
522 GC_PLUGIN_IGNORE("534524")
523 HashSet<WebGLContextObject*> m_contextObjects;
524 #endif
516 525
517 PersistentWillBeMember<WebGLRenderingContextLostCallback> m_contextLostCallb ackAdapter; 526 PersistentWillBeMember<WebGLRenderingContextLostCallback> m_contextLostCallb ackAdapter;
518 PersistentWillBeMember<WebGLRenderingContextErrorMessageCallback> m_errorMes sageCallbackAdapter; 527 PersistentWillBeMember<WebGLRenderingContextErrorMessageCallback> m_errorMes sageCallbackAdapter;
519 528
520 // List of bound VBO's. Used to maintain info about sizes for ARRAY_BUFFER a nd stored values for ELEMENT_ARRAY_BUFFER 529 // List of bound VBO's. Used to maintain info about sizes for ARRAY_BUFFER a nd stored values for ELEMENT_ARRAY_BUFFER
521 PersistentWillBeMember<WebGLBuffer> m_boundArrayBuffer; 530 PersistentWillBeMember<WebGLBuffer> m_boundArrayBuffer;
522 531
523 PersistentWillBeMember<WebGLVertexArrayObjectBase> m_defaultVertexArrayObjec t; 532 PersistentWillBeMember<WebGLVertexArrayObjectBase> m_defaultVertexArrayObjec t;
524 PersistentWillBeMember<WebGLVertexArrayObjectBase> m_boundVertexArrayObject; 533 PersistentWillBeMember<WebGLVertexArrayObjectBase> m_boundVertexArrayObject;
525 void setBoundVertexArrayObject(WebGLVertexArrayObjectBase* arrayObject) 534 void setBoundVertexArrayObject(WebGLVertexArrayObjectBase* arrayObject)
(...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after
1106 static IntSize oldestContextSize(); 1115 static IntSize oldestContextSize();
1107 }; 1116 };
1108 1117
1109 DEFINE_TYPE_CASTS(WebGLRenderingContextBase, CanvasRenderingContext, context, co ntext->is3d(), context.is3d()); 1118 DEFINE_TYPE_CASTS(WebGLRenderingContextBase, CanvasRenderingContext, context, co ntext->is3d(), context.is3d());
1110 1119
1111 } // namespace blink 1120 } // namespace blink
1112 1121
1113 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(blink::WebGLRenderingContextB ase::TextureUnitState); 1122 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(blink::WebGLRenderingContextB ase::TextureUnitState);
1114 1123
1115 #endif // WebGLRenderingContextBase_h 1124 #endif // WebGLRenderingContextBase_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698