• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2011 Google Inc.
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 #ifndef SkImageRef_ashmem_DEFINED
9 #define SkImageRef_ashmem_DEFINED
10 
11 #include "SkImageRef.h"
12 
13 struct SkAshmemRec {
14     int     fFD;
15     void*   fAddr;
16     size_t  fSize;
17     bool    fPinned;
18 };
19 
20 class SkImageRef_ashmem : public SkImageRef {
21 public:
22     SkImageRef_ashmem(const SkImageInfo&, SkStreamRewindable*, int sampleSize = 1);
23     virtual ~SkImageRef_ashmem();
24 
25     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkImageRef_ashmem)
26 
27 protected:
28     SkImageRef_ashmem(SkFlattenableReadBuffer&);
29     virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
30 
31     virtual bool onDecode(SkImageDecoder* codec, SkStreamRewindable* stream,
32                           SkBitmap* bitmap, SkBitmap::Config config,
33                           SkImageDecoder::Mode mode);
34 
35     virtual void* onLockPixels(SkColorTable**);
36     virtual void onUnlockPixels();
37 
38 private:
39     void closeFD();
40 
41     SkColorTable* fCT;
42     SkAshmemRec fRec;
43 
44     typedef SkImageRef INHERITED;
45 };
46 
47 #endif
48