Home | History | Annotate | Download | only in canvas
      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