• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef WebGLSharedWebGraphicsContext3D_h
6 #define WebGLSharedWebGraphicsContext3D_h
7 
8 #include "wtf/Forward.h"
9 #include "wtf/RefCounted.h"
10 #include "wtf/RefPtr.h"
11 
12 namespace blink {
13 
14 class WebGraphicsContext3D;
15 class DrawingBuffer;
16 
17 #if ENABLE(OILPAN)
18 // The attached WebGLContextObjects are finalized using the
19 // blink::WebGraphicsContext3D object of this object's DrawingBuffer.
20 // Naturally the DrawingBuffer must then be kept alive until those
21 // finalizers have run. With Oilpan, accomplish that by having the
22 // WebGLContextObjects keep a RefPtr<> to an off-heap object that
23 // safely handles the eventual release of the underlying
24 // DrawingBuffer.
25 class WebGLSharedWebGraphicsContext3D FINAL : public RefCounted<WebGLSharedWebGraphicsContext3D> {
26 public:
27     static PassRefPtr<WebGLSharedWebGraphicsContext3D> create(PassRefPtr<DrawingBuffer>);
28 
29     ~WebGLSharedWebGraphicsContext3D();
30 
31     // Disposing and updating the underlying DrawingBuffer;
32     // needed when handling loss and restoration of graphics contexts.
33     void dispose();
34     void update(PassRefPtr<DrawingBuffer>);
35 
36     DrawingBuffer* drawingBuffer() const;
37 
38     blink::WebGraphicsContext3D* webContext() const;
39 private:
40     explicit WebGLSharedWebGraphicsContext3D(PassRefPtr<DrawingBuffer>);
41 
42     RefPtr<DrawingBuffer> m_buffer;
43 };
44 #endif
45 
46 }
47 
48 #endif // WebGLSharedWebGraphicsContext3D_h
49