~ubuntu-branches/ubuntu/karmic/gears/karmic

« back to all changes in this revision

Viewing changes to third_party/skia/src/images/SkImageRef_GlobalPool.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Stefan Lesicnik
  • Date: 2009-04-30 19:15:25 UTC
  • Revision ID: james.westby@ubuntu.com-20090430191525-0790sb5wzg8ou0xb
Tags: upstream-0.5.21.0~svn3334+dfsg
ImportĀ upstreamĀ versionĀ 0.5.21.0~svn3334+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "SkImageRef_GlobalPool.h"
 
2
#include "SkImageRefPool.h"
 
3
#include "SkThread.h"
 
4
 
 
5
extern SkMutex gImageRefMutex;
 
6
 
 
7
static SkImageRefPool gGlobalImageRefPool;
 
8
 
 
9
SkImageRef_GlobalPool::SkImageRef_GlobalPool(SkStream* stream,
 
10
                                             SkBitmap::Config config,
 
11
                                             int sampleSize)
 
12
        : SkImageRef(stream, config, sampleSize) {
 
13
    this->mutex()->acquire();
 
14
    gGlobalImageRefPool.addToHead(this);
 
15
    this->mutex()->release();
 
16
}
 
17
 
 
18
SkImageRef_GlobalPool::~SkImageRef_GlobalPool() {
 
19
    this->mutex()->acquire();
 
20
    gGlobalImageRefPool.detach(this);
 
21
    this->mutex()->release();
 
22
}
 
23
    
 
24
bool SkImageRef_GlobalPool::onDecode(SkImageDecoder* codec, SkStream* stream,
 
25
                                     SkBitmap* bitmap, SkBitmap::Config config,
 
26
                                     SkImageDecoder::Mode mode) {
 
27
    if (!this->INHERITED::onDecode(codec, stream, bitmap, config, mode)) {
 
28
        return false;
 
29
    }
 
30
    if (mode == SkImageDecoder::kDecodePixels_Mode) {
 
31
        gGlobalImageRefPool.justAddedPixels(this);
 
32
    }
 
33
    return true;
 
34
}
 
35
    
 
36
void SkImageRef_GlobalPool::onUnlockPixels() {
 
37
    this->INHERITED::onUnlockPixels();
 
38
    
 
39
    gGlobalImageRefPool.canLosePixels(this);
 
40
}
 
41
 
 
42
SkImageRef_GlobalPool::SkImageRef_GlobalPool(SkFlattenableReadBuffer& buffer)
 
43
        : INHERITED(buffer) {
 
44
    this->mutex()->acquire();
 
45
    gGlobalImageRefPool.addToHead(this);
 
46
    this->mutex()->release();
 
47
}
 
48
 
 
49
SkPixelRef* SkImageRef_GlobalPool::Create(SkFlattenableReadBuffer& buffer) {
 
50
    return SkNEW_ARGS(SkImageRef_GlobalPool, (buffer));
 
51
}
 
52
 
 
53
static SkPixelRef::Registrar::Registrar reg("SkImageRef_GlobalPool",
 
54
                                            SkImageRef_GlobalPool::Create);
 
55
 
 
56
///////////////////////////////////////////////////////////////////////////////
 
57
// global imagerefpool wrappers
 
58
 
 
59
size_t SkImageRef_GlobalPool::GetRAMBudget() {
 
60
    SkAutoMutexAcquire ac(gImageRefMutex);
 
61
    return gGlobalImageRefPool.getRAMBudget();
 
62
}
 
63
 
 
64
void SkImageRef_GlobalPool::SetRAMBudget(size_t size) {
 
65
    SkAutoMutexAcquire ac(gImageRefMutex);
 
66
    gGlobalImageRefPool.setRAMBudget(size);
 
67
}
 
68
 
 
69
size_t SkImageRef_GlobalPool::GetRAMUsed() {
 
70
    SkAutoMutexAcquire ac(gImageRefMutex);    
 
71
    return gGlobalImageRefPool.getRAMUsed();
 
72
}
 
73
 
 
74
void SkImageRef_GlobalPool::SetRAMUsed(size_t usage) {
 
75
    SkAutoMutexAcquire ac(gImageRefMutex);
 
76
    gGlobalImageRefPool.setRAMUsed(usage);
 
77
}
 
78
 
 
79
void SkImageRef_GlobalPool::DumpPool() {
 
80
    SkAutoMutexAcquire ac(gImageRefMutex);
 
81
    gGlobalImageRefPool.dump();
 
82
}
 
83