Home | History | Annotate | Download | only in dri
      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 UI_OZONE_PLATFORM_DRI_DRI_SURFACE_H_
      6 #define UI_OZONE_PLATFORM_DRI_DRI_SURFACE_H_
      7 
      8 #include "base/memory/ref_counted.h"
      9 #include "ui/gfx/geometry/rect.h"
     10 #include "ui/gfx/geometry/size.h"
     11 #include "ui/gfx/skia_util.h"
     12 #include "ui/ozone/public/surface_ozone_canvas.h"
     13 
     14 class SkCanvas;
     15 class SkSurface;
     16 
     17 namespace ui {
     18 
     19 class DriBuffer;
     20 class DriWindowDelegate;
     21 class DriWrapper;
     22 class HardwareDisplayController;
     23 
     24 class DriSurface : public SurfaceOzoneCanvas {
     25  public:
     26   DriSurface(DriWindowDelegate* window_delegate, DriWrapper* dri);
     27   virtual ~DriSurface();
     28 
     29   // SurfaceOzoneCanvas:
     30   virtual skia::RefPtr<SkCanvas> GetCanvas() OVERRIDE;
     31   virtual void ResizeCanvas(const gfx::Size& viewport_size) OVERRIDE;
     32   virtual void PresentCanvas(const gfx::Rect& damage) OVERRIDE;
     33   virtual scoped_ptr<gfx::VSyncProvider> CreateVSyncProvider() OVERRIDE;
     34 
     35  private:
     36   void UpdateNativeSurface(const gfx::Rect& damage);
     37 
     38   DriWindowDelegate* window_delegate_;
     39 
     40   // Stores the connection to the graphics card. Pointer not owned by this
     41   // class.
     42   DriWrapper* dri_;
     43 
     44   // The actual buffers used for painting.
     45   scoped_refptr<DriBuffer> buffers_[2];
     46 
     47   // Keeps track of which bitmap is |buffers_| is the frontbuffer.
     48   int front_buffer_;
     49 
     50   skia::RefPtr<SkSurface> surface_;
     51   gfx::Rect last_damage_;
     52 
     53   DISALLOW_COPY_AND_ASSIGN(DriSurface);
     54 };
     55 
     56 }  // namespace ui
     57 
     58 #endif  // UI_OZONE_PLATFORM_DRI_DRI_SURFACE_H_
     59