mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 08:44:19 -04:00
*** empty log message ***
This commit is contained in:
parent
bd49219670
commit
615a0bc06c
@ -2133,11 +2133,20 @@ define_method(CPPInstance *function, InterrogateType &itype,
|
||||
force_publish = true;
|
||||
}
|
||||
|
||||
if ((ftype->_flags & CPPFunctionType::F_destructor) != 0) {
|
||||
// A destructor is a special case. If it's public, we export it
|
||||
// (even if it's not published), but if it's protected or private,
|
||||
// we don't exported it, and we flag it so we don't try to
|
||||
// synthesize one later.
|
||||
if (function->_vis > V_public) {
|
||||
itype._flags |= InterrogateType::F_private_destructor;
|
||||
return;
|
||||
}
|
||||
force_publish = true;
|
||||
}
|
||||
|
||||
if (!force_publish && function->_vis > min_vis) {
|
||||
// The function is not marked to be exported.
|
||||
if ((ftype->_flags & CPPFunctionType::F_destructor) != 0) {
|
||||
itype._flags |= InterrogateType::F_private_destructor;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2165,7 +2174,9 @@ define_method(CPPInstance *function, InterrogateType &itype,
|
||||
}
|
||||
|
||||
if ((function->_storage_class & CPPInstance::SC_inherited_virtual) != 0 &&
|
||||
struct_type->_derivation.size() == 1) {
|
||||
struct_type->_derivation.size() == 1 &&
|
||||
struct_type->_derivation[0]._vis <= V_public &&
|
||||
!struct_type->_derivation[0]._is_virtual) {
|
||||
// If this function is a virtual function whose first appearance
|
||||
// is in some base class, we don't need to repeat its definition
|
||||
// here, since we're already inheriting it properly. However, we
|
||||
|
@ -52,6 +52,7 @@ public:
|
||||
INLINE void draw_direct(Node *node,
|
||||
const AllAttributesWrapper &initial_state);
|
||||
|
||||
PUBLISHED:
|
||||
void output(ostream &out) const;
|
||||
void write(ostream &out, int indent_level = 0) const;
|
||||
|
||||
|
@ -100,6 +100,30 @@ release_all_textures() {
|
||||
get_ptr()->ns_release_all_textures();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: TexturePool::garbage_collect
|
||||
// Access: Public, Static
|
||||
// Description: Releases only those textures in the pool that have a
|
||||
// reference count of exactly 1; i.e. only those
|
||||
// textures that are not being used outside of the pool.
|
||||
// Returns the number of textures released.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE int TexturePool::
|
||||
garbage_collect() {
|
||||
return get_ptr()->ns_garbage_collect();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: TexturePool::list_contents
|
||||
// Access: Public, Static
|
||||
// Description: Lists the contents of the texture pool to the
|
||||
// indicated output stream.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE void TexturePool::
|
||||
list_contents(ostream &out) {
|
||||
get_ptr()->ns_list_contents(out);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: TexturePool::Constructor
|
||||
// Access: Private
|
||||
|
@ -136,6 +136,49 @@ ns_release_all_textures() {
|
||||
_textures.clear();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: TexturePool::ns_garbage_collect
|
||||
// Access: Private
|
||||
// Description: The nonstatic implementation of garbage_collect().
|
||||
////////////////////////////////////////////////////////////////////
|
||||
int TexturePool::
|
||||
ns_garbage_collect() {
|
||||
int num_released = 0;
|
||||
Textures new_set;
|
||||
|
||||
Textures::iterator ti;
|
||||
for (ti = _textures.begin(); ti != _textures.end(); ++ti) {
|
||||
Texture *tex = (*ti).second;
|
||||
if (tex->get_ref_count() == 1) {
|
||||
if (gobj_cat.is_debug()) {
|
||||
gobj_cat.debug()
|
||||
<< "Releasing " << (*ti).first << "\n";
|
||||
}
|
||||
num_released++;
|
||||
} else {
|
||||
new_set.insert(new_set.end(), *ti);
|
||||
}
|
||||
}
|
||||
|
||||
_textures.swap(new_set);
|
||||
return num_released;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: TexturePool::ns_list_contents
|
||||
// Access: Private
|
||||
// Description: The nonstatic implementation of list_contents().
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void TexturePool::
|
||||
ns_list_contents(ostream &out) {
|
||||
out << _textures.size() << " textures:\n";
|
||||
Textures::iterator ti;
|
||||
for (ti = _textures.begin(); ti != _textures.end(); ++ti) {
|
||||
out << " " << (*ti).first
|
||||
<< " (count = " << (*ti).second->get_ref_count() << ")\n";
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: TexturePool::get_ptr
|
||||
// Access: Private, Static
|
||||
|
@ -36,6 +36,10 @@ PUBLISHED:
|
||||
INLINE static void release_texture(Texture *texture);
|
||||
INLINE static void release_all_textures();
|
||||
|
||||
INLINE static int garbage_collect();
|
||||
|
||||
INLINE static void list_contents(ostream &out);
|
||||
|
||||
private:
|
||||
INLINE TexturePool();
|
||||
|
||||
@ -45,6 +49,8 @@ private:
|
||||
void ns_add_texture(Texture *texture);
|
||||
void ns_release_texture(Texture *texture);
|
||||
void ns_release_all_textures();
|
||||
int ns_garbage_collect();
|
||||
void ns_list_contents(ostream &out);
|
||||
|
||||
static TexturePool *get_ptr();
|
||||
|
||||
|
@ -81,6 +81,30 @@ release_all_models() {
|
||||
get_ptr()->ns_release_all_models();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ModelPool::garbage_collect
|
||||
// Access: Public, Static
|
||||
// Description: Releases only those models in the pool that have a
|
||||
// reference count of exactly 1; i.e. only those
|
||||
// models that are not being used outside of the pool.
|
||||
// Returns the number of models released.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE int ModelPool::
|
||||
garbage_collect() {
|
||||
return get_ptr()->ns_garbage_collect();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ModelPool::list_contents
|
||||
// Access: Public, Static
|
||||
// Description: Lists the contents of the model pool to the
|
||||
// indicated output stream.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE void ModelPool::
|
||||
list_contents(ostream &out) {
|
||||
get_ptr()->ns_list_contents(out);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ModelPool::Constructor
|
||||
// Access: Private
|
||||
|
@ -90,6 +90,49 @@ ns_release_all_models() {
|
||||
_models.clear();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ModelPool::ns_garbage_collect
|
||||
// Access: Private
|
||||
// Description: The nonstatic implementation of garbage_collect().
|
||||
////////////////////////////////////////////////////////////////////
|
||||
int ModelPool::
|
||||
ns_garbage_collect() {
|
||||
int num_released = 0;
|
||||
Models new_set;
|
||||
|
||||
Models::iterator ti;
|
||||
for (ti = _models.begin(); ti != _models.end(); ++ti) {
|
||||
Node *node = (*ti).second;
|
||||
if (node->get_ref_count() == 1) {
|
||||
if (loader_cat.is_debug()) {
|
||||
loader_cat.debug()
|
||||
<< "Releasing " << (*ti).first << "\n";
|
||||
}
|
||||
num_released++;
|
||||
} else {
|
||||
new_set.insert(new_set.end(), *ti);
|
||||
}
|
||||
}
|
||||
|
||||
_models.swap(new_set);
|
||||
return num_released;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ModelPool::ns_list_contents
|
||||
// Access: Private
|
||||
// Description: The nonstatic implementation of list_contents().
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void ModelPool::
|
||||
ns_list_contents(ostream &out) {
|
||||
out << _models.size() << " models:\n";
|
||||
Models::iterator ti;
|
||||
for (ti = _models.begin(); ti != _models.end(); ++ti) {
|
||||
out << " " << (*ti).first
|
||||
<< " (count = " << (*ti).second->get_ref_count() << ")\n";
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ModelPool::get_ptr
|
||||
// Access: Private, Static
|
||||
|
@ -42,6 +42,10 @@ PUBLISHED:
|
||||
INLINE static void release_model(const string &filename);
|
||||
INLINE static void release_all_models();
|
||||
|
||||
INLINE static int garbage_collect();
|
||||
|
||||
INLINE static void list_contents(ostream &out);
|
||||
|
||||
private:
|
||||
INLINE ModelPool();
|
||||
|
||||
@ -50,6 +54,8 @@ private:
|
||||
void ns_add_model(const string &filename, Node *model);
|
||||
void ns_release_model(const string &filename);
|
||||
void ns_release_all_models();
|
||||
int ns_garbage_collect();
|
||||
void ns_list_contents(ostream &out);
|
||||
|
||||
static ModelPool *get_ptr();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user