aboutsummaryrefslogtreecommitdiff
path: root/MediaTek/gralloc_extra/GraphicBufferExtra.cpp
blob: 77eaadbe3c9b8dbc9397ccb51ead9eb71aa17097 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#define LOG_TAG "GraphicBufferExtra"
#define ATRACE_TAG ATRACE_TAG_GRAPHICS
#include <cutils/log.h>
#include <ui/GraphicBufferExtra.h>
#include <hardware/graphics_mtk_defs.h>

namespace android {
// ---------------------------------------------------------------------------

ANDROID_SINGLETON_STATIC_INSTANCE( GraphicBufferExtra )

static GraphicBufferExtra * s_singleton_obj = NULL;

GraphicBufferExtra::GraphicBufferExtra()
    : mExtraDev(0)
{
    hw_module_t const* module;
    int err = hw_get_module(GRALLOC_HARDWARE_MODULE_ID, &module);

    ALOGE_IF(err, "FATAL: can't find the %s module", GRALLOC_HARDWARE_MODULE_ID);
    if (err == 0)
    {
        gralloc_extra_open(module, &mExtraDev);
    }

    s_singleton_obj = this;
}

// dlclose
static void __attribute__((destructor)) gralloc_extra_dlclose(void)
{
    if (s_singleton_obj)
    {
        delete s_singleton_obj;
        s_singleton_obj = NULL;
    }
}

GraphicBufferExtra::~GraphicBufferExtra()
{
    if (mExtraDev)
    {
        gralloc_extra_close(mExtraDev);
    }
    s_singleton_obj = NULL;
}

// ---------------------------------------------------------------------------
}; // namespace android