[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/as_value.cpp server/movi...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/as_value.cpp server/movi... |
Date: |
Wed, 09 Jan 2008 11:41:02 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 08/01/09 11:41:01
Modified files:
. : ChangeLog
server : as_value.cpp movie_root.cpp movie_root.h
Log message:
Add a movie_root::findCharacterByTarget() and use it for soft refs.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5352&r2=1.5353
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_value.cpp?cvsroot=gnash&r1=1.110&r2=1.111
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie_root.cpp?cvsroot=gnash&r1=1.143&r2=1.144
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie_root.h?cvsroot=gnash&r1=1.99&r2=1.100
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5352
retrieving revision 1.5353
diff -u -b -r1.5352 -r1.5353
--- ChangeLog 9 Jan 2008 11:06:38 -0000 1.5352
+++ ChangeLog 9 Jan 2008 11:41:01 -0000 1.5353
@@ -1,5 +1,11 @@
2008-01-09 Sandro Santilli <address@hidden>
+ * server/: as_value.cpp, movie_root.{cpp,h}:
+ Add a movie_root::findCharacterByTarget() and
+ use it for soft refs.
+
+2008-01-09 Sandro Santilli <address@hidden>
+
* testsuite/misc-ming.all/DragDropTestRunner.cpp:
advance playhead while waiting for movies to be
loaded.
Index: server/as_value.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_value.cpp,v
retrieving revision 1.110
retrieving revision 1.111
diff -u -b -r1.110 -r1.111
--- server/as_value.cpp 5 Jan 2008 15:35:08 -0000 1.110
+++ server/as_value.cpp 9 Jan 2008 11:41:01 -0000 1.111
@@ -1518,32 +1518,7 @@
{
if ( tgtstr.empty() ) return NULL;
- VM& vm = VM::get();
- string_table& st = vm.getStringTable();
- as_object* o = vm.getRoot().getRootMovie();
-
- // TODO: for another optimization we may cache
- // the string_table::key for each element
- // as the CharacterProxy target (instead of
- // the full string, to be parsed everytime)
-
- //string::size_type size = tgtstr.size();
- string::size_type from = 0;
- while ( string::size_type to=tgtstr.find_first_of('.', from) )
- {
- string part(tgtstr, from, to-from);
- o = o->get_path_element(st.find(part));
- if ( ! o ) {
-#ifdef GNASH_DEBUG_SOFT_REFERENCES
- log_debug("Evaluating target path for soft ref
rebinding: element '%s' of path '%s' not found",
- part.c_str(), tgtstr.c_str());
-#endif
- return NULL;
- }
- if ( to == string::npos ) break;
- from = to+1;
- }
- return o->to_character();
+ return VM::get().getRoot().findCharacterByTarget(tgtstr);
}
void
Index: server/movie_root.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/movie_root.cpp,v
retrieving revision 1.143
retrieving revision 1.144
diff -u -b -r1.143 -r1.144
--- server/movie_root.cpp 9 Jan 2008 09:11:02 -0000 1.143
+++ server/movie_root.cpp 9 Jan 2008 11:41:01 -0000 1.144
@@ -1664,5 +1664,34 @@
}
}
+character*
+movie_root::findCharacterByTarget(const std::string& tgtstr_orig) const
+{
+ if ( tgtstr_orig.empty() ) return NULL;
+
+ std::string tgtstr = PROPNAME(tgtstr_orig);
+
+ VM& vm = VM::get();
+ string_table& st = vm.getStringTable();
+ as_object* o = getRootMovie(); // FIXME: could have been dropped ! use
_movies.front() instead
+
+ string::size_type from = 0;
+ while ( string::size_type to=tgtstr.find_first_of('.', from) )
+ {
+ string part(tgtstr, from, to-from);
+ o = o->get_path_element(st.find(part));
+ if ( ! o ) {
+//#ifdef GNASH_DEBUG_TARGET_RESOLUTION
+ log_debug("Evaluating target path for soft ref
rebinding: element '%s' of path '%s' not found",
+ part.c_str(), tgtstr.c_str());
+//#endif
+ return NULL;
+ }
+ if ( to == string::npos ) break;
+ from = to+1;
+ }
+ return o->to_character();
+}
+
} // namespace gnash
Index: server/movie_root.h
===================================================================
RCS file: /sources/gnash/gnash/server/movie_root.h,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -b -r1.99 -r1.100
--- server/movie_root.h 9 Jan 2008 08:29:36 -0000 1.99
+++ server/movie_root.h 9 Jan 2008 11:41:01 -0000 1.100
@@ -15,7 +15,7 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-/* $Id: movie_root.h,v 1.99 2008/01/09 08:29:36 strk Exp $ */
+/* $Id: movie_root.h,v 1.100 2008/01/09 11:41:01 strk Exp $ */
/// \page events_handling Handling of user events
///
@@ -605,6 +605,8 @@
///
void flushHigherPriorityActionQueues();
+ character* findCharacterByTarget(const std::string& tgtstr) const;
+
private:
/// Listeners container
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/as_value.cpp server/movi...,
Sandro Santilli <=