[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] /srv/bzr/gnash/trunk r10799: Minor cleanup to marking SWF
From: |
Benjamin Wolsey |
Subject: |
[Gnash-commit] /srv/bzr/gnash/trunk r10799: Minor cleanup to marking SWFMovieDefinition resources, extend generic |
Date: |
Thu, 16 Apr 2009 09:36:24 +0200 |
User-agent: |
Bazaar (1.5) |
------------------------------------------------------------
revno: 10799
committer: Benjamin Wolsey <address@hidden>
branch nick: trunk
timestamp: Thu 2009-04-16 09:36:24 +0200
message:
Minor cleanup to marking SWFMovieDefinition resources, extend generic
templates.
modified:
libbase/GnashAlgorithm.h
libcore/parser/SWFMovieDefinition.cpp
------------------------------------------------------------
revno: 10792.1.1
committer: Benjamin Wolsey <address@hidden>
branch nick: temp
timestamp: Wed 2009-04-15 17:04:06 +0200
message:
Replace loops in markReachableResources.
modified:
libcore/parser/SWFMovieDefinition.cpp
------------------------------------------------------------
revno: 10792.1.2
committer: Benjamin Wolsey <address@hidden>
branch nick: temp
timestamp: Wed 2009-04-15 17:30:11 +0200
message:
Extend RemovePointer<>, use a template function to mark the mapped
resources in SWFMovieDefinition.
modified:
libbase/GnashAlgorithm.h
libcore/parser/SWFMovieDefinition.cpp
------------------------------------------------------------
revno: 10792.1.3
committer: Benjamin Wolsey <address@hidden>
branch nick: temp
timestamp: Wed 2009-04-15 18:12:31 +0200
message:
Move to anonymous namespace.
modified:
libcore/parser/SWFMovieDefinition.cpp
=== modified file 'libbase/GnashAlgorithm.h'
--- a/libbase/GnashAlgorithm.h 2009-03-14 09:22:52 +0000
+++ b/libbase/GnashAlgorithm.h 2009-04-15 15:30:11 +0000
@@ -22,6 +22,8 @@
#include <algorithm>
#include <boost/checked_delete.hpp>
+#include <boost/intrusive_ptr.hpp>
+#include <boost/shared_ptr.hpp>
namespace gnash {
@@ -58,6 +60,20 @@
typedef typename RemovePointer<T>::value_type value_type;
};
+template<typename T>
+struct RemovePointer<boost::intrusive_ptr<T> >
+{
+ typedef typename RemovePointer<T>::value_type value_type;
+};
+
+template<typename T>
+struct RemovePointer<boost::shared_ptr<T> >
+{
+ typedef typename RemovePointer<T>::value_type value_type;
+};
+
+
+
/// Delete a pointer safely
//
/// Any depth of pointers-to-pointers (up to maximum template recursion) can
=== modified file 'libcore/parser/SWFMovieDefinition.cpp'
--- a/libcore/parser/SWFMovieDefinition.cpp 2009-04-15 05:33:51 +0000
+++ b/libcore/parser/SWFMovieDefinition.cpp 2009-04-15 16:12:31 +0000
@@ -64,6 +64,10 @@
namespace gnash
{
+namespace {
+ template<typename T> void markMappedResources(const T& t);
+}
+
MovieLoader::MovieLoader(SWFMovieDefinition& md)
:
_movie_def(md),
@@ -856,37 +860,17 @@
void
SWFMovieDefinition::markReachableResources() const
{
- for (FontMap::const_iterator i=m_fonts.begin(), e=m_fonts.end(); i!=e;
++i)
- {
- i->second->setReachable();
- }
-
- for (Bitmaps::const_iterator i = _bitmaps.begin(), e = _bitmaps.end();
- i != e; ++i)
- {
- i->second->setReachable();
- }
-
- for (SoundSampleMap::const_iterator i=m_sound_samples.begin(),
e=m_sound_samples.end(); i!=e; ++i)
- {
- i->second->setReachable();
- }
-
- // TODO: turn this into a markExportedResources()
+ markMappedResources(m_fonts);
+ markMappedResources(_bitmaps);
+ markMappedResources(m_sound_samples);
+
{
boost::mutex::scoped_lock lock(_exportedResourcesMutex);
- for (ExportMap::const_iterator i=_exportedResources.begin(),
- e=_exportedResources.end(); i!=e; ++i)
- {
- i->second->setReachable();
- }
+ markMappedResources(_exportedResources);
}
- for (ImportVect::const_iterator i=m_import_source_movies.begin(),
- e=m_import_source_movies.end(); i!=e; ++i)
- {
- (*i)->setReachable();
- }
+ std::for_each(m_import_source_movies.begin(), m_import_source_movies.end(),
+ boost::mem_fn(&movie_definition::setReachable));
boost::mutex::scoped_lock lock(_dictionaryMutex);
_dictionary.markReachableResources();
@@ -939,4 +923,20 @@
}
}
+namespace {
+
+template<typename T>
+void markMappedResources(const T& t)
+{
+ typedef typename
+ RemovePointer<typename T::value_type::second_type>::value_type
+ contained_type;
+
+ std::for_each(t.begin(), t.end(),
+ boost::bind(&contained_type::setReachable,
+ boost::bind(SecondElement<typename T::value_type>(), _1)));
+}
+
+}
+
} // namespace gnash
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] /srv/bzr/gnash/trunk r10799: Minor cleanup to marking SWFMovieDefinition resources, extend generic,
Benjamin Wolsey <=