ManaPlus
src
resources
resource.cpp
Go to the documentation of this file.
1
/*
2
* The ManaPlus Client
3
* Copyright (C) 2004-2009 The Mana World Development Team
4
* Copyright (C) 2009-2010 The Mana Developers
5
* Copyright (C) 2011-2019 The ManaPlus Developers
6
* Copyright (C) 2019-2021 Andrei Karas
7
*
8
* This file is part of The ManaPlus Client.
9
*
10
* This program is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation; either version 2 of the License, or
13
* any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the GNU General Public License
21
* along with this program. If not, see <http://www.gnu.org/licenses/>.
22
*/
23
24
#include "
resources/resource.h
"
25
26
#include "
logger.h
"
27
28
#include "
utils/cast.h
"
29
30
#include "
resources/resourcemanager/resourcemanager.h
"
31
32
#include "
debug.h
"
33
34
Resource::~Resource
()
35
{
36
}
37
38
void
Resource::incRef
()
39
{
40
#ifdef DEBUG_IMAGES
41
logger
->
log
(
"before incRef for: %p"
,
static_cast<
void
*
>
(
this
));
42
mRefCount
++;
43
logger
->
log
(
"after incRef: %p, %u"
,
static_cast<
void
*
>
(
this
),
mRefCount
);
44
#else
// DEBUG_IMAGES
45
46
mRefCount
++;
47
#endif
// DEBUG_IMAGES
48
}
49
50
void
Resource::decRef
()
51
{
52
#ifdef DEBUG_IMAGES
53
logger
->
log
(
"before decRef for: %p"
,
static_cast<
void
*
>
(
this
));
54
#endif
// DEBUG_IMAGES
55
56
// Reference may not already have reached zero
57
if
(
mRefCount
== 0)
58
{
59
logger
->
log
(
"Warning: mRefCount already zero for %s"
,
mIdPath
.c_str());
60
return
;
61
}
62
63
mRefCount
--;
64
65
#ifdef DEBUG_IMAGES
66
logger
->
log
(
"after decRef: %p, %u"
,
static_cast<
void
*
>
(
this
),
mRefCount
);
67
#endif
// DEBUG_IMAGES
68
69
if
(
mRefCount
== 0 && !
mNotCount
)
70
{
71
// Warn the manager that this resource is no longer used.
72
ResourceManager::release
(
this
);
73
}
74
}
75
76
int
Resource::calcMemoryLocal
()
const
77
{
78
return
CAST_S32
(
sizeof
(
Resource
)) +
79
CAST_S32
(
mIdPath
.size()) +
80
CAST_S32
(
mSource
.size());
81
}
cast.h
CAST_S32
#define CAST_S32
Definition:
cast.h:30
Logger::log
void log(const char *const log_text,...)
Definition:
logger.cpp:269
Resource
Definition:
resource.h:35
Resource::~Resource
~Resource()
Definition:
resource.cpp:34
Resource::mIdPath
std::string mIdPath
Definition:
resource.h:84
Resource::incRef
virtual void incRef()
Definition:
resource.cpp:38
Resource::decRef
virtual void decRef()
Definition:
resource.cpp:50
Resource::mSource
std::string mSource
Definition:
resource.h:85
Resource::mRefCount
unsigned int mRefCount
Definition:
resource.h:87
Resource::calcMemoryLocal
int calcMemoryLocal() const
Definition:
resource.cpp:76
Resource::mNotCount
bool mNotCount
Definition:
resource.h:89
debug.h
logger
Logger * logger
Definition:
logger.cpp:89
logger.h
ResourceManager::release
void release(Resource *const res)
Definition:
resourcemanager.cpp:476
resource.h
resourcemanager.h
Generated on Wed Mar 17 2021 19:19:10 for ManaPlus by
1.9.1