[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/as_value.cpp server/spri...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/as_value.cpp server/spri... |
Date: |
Wed, 29 Aug 2007 12:31:09 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/08/29 12:31:09
Modified files:
. : ChangeLog
server : as_value.cpp sprite_instance.cpp
sprite_instance.h
testsuite/misc-swfc.all: soft_reference_test1.sc
Log message:
* server/as_value.cpp (to_sprite): use original target, not
current
one, for dereferencing danglign MOVIECLIP refs; add TODO item
about
the onUnload problem.
* server/sprite_instance.{h,cpp}: add a getOrigTarget() to
return original
target of a sprite (the target it got when first constructed,
immune
from _name changes).
* testsuite/misc-swfc.all/soft_reference_test1.sc: xcheck =>
check
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4146&r2=1.4147
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_value.cpp?cvsroot=gnash&r1=1.67&r2=1.68
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.313&r2=1.314
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.h?cvsroot=gnash&r1=1.130&r2=1.131
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-swfc.all/soft_reference_test1.sc?cvsroot=gnash&r1=1.6&r2=1.7
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4146
retrieving revision 1.4147
diff -u -b -r1.4146 -r1.4147
--- ChangeLog 29 Aug 2007 10:54:17 -0000 1.4146
+++ ChangeLog 29 Aug 2007 12:31:08 -0000 1.4147
@@ -1,5 +1,15 @@
2007-08-29 Sandro Santilli <address@hidden>
+ * server/as_value.cpp (to_sprite): use original target, not current
+ one, for dereferencing danglign MOVIECLIP refs; add TODO item about
+ the onUnload problem.
+ * server/sprite_instance.{h,cpp}: add a getOrigTarget() to return
original
+ target of a sprite (the target it got when first constructed, immune
+ from _name changes).
+ * testsuite/misc-swfc.all/soft_reference_test1.sc: xcheck => check
+
+2007-08-29 Sandro Santilli <address@hidden>
+
* testsuite/misc-swfc.all/soft_reference_test1.sc: add some
comments as to why Gnash fails.
Index: server/as_value.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_value.cpp,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -b -r1.67 -r1.68
--- server/as_value.cpp 25 Aug 2007 14:15:50 -0000 1.67
+++ server/as_value.cpp 29 Aug 2007 12:31:09 -0000 1.68
@@ -513,12 +513,14 @@
#ifndef MOVIECLIP_AS_SOFTREF
sprite_instance* sp = m_object_value->to_movie();
if ( ! sp ) return NULL; // shoudl we assert(sp) instead ?
+
if ( sp->isUnloaded() )
+ // TODO: we should also check if the unload event handlers have been
invoked or not, or references to 'this' in unload handlers will be bogus !
{
log_error(_("MovieClip value is a dangling reference: "
"target %s was unloaded (looking for a
substitute on the same target))"),
sp->getTarget().c_str());
- sp = find_sprite_by_target(sp->getTarget());
+ sp = find_sprite_by_target(sp->getOrigTarget());
return sp;
//return NULL;
}
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.313
retrieving revision 1.314
diff -u -b -r1.313 -r1.314
--- server/sprite_instance.cpp 28 Aug 2007 11:32:44 -0000 1.313
+++ server/sprite_instance.cpp 29 Aug 2007 12:31:09 -0000 1.314
@@ -3359,8 +3359,10 @@
void
sprite_instance::construct()
{
+ _origTarget = getTarget();
+
#ifdef GNASH_DEBUG
- log_msg(_("Constructing sprite '%s'"), getTargetPath().c_str());
+ log_msg(_("Constructing sprite '%s'"), _origTarget.c_str());
#endif
// We *might* avoid this, but better safe then sorry
Index: server/sprite_instance.h
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.h,v
retrieving revision 1.130
retrieving revision 1.131
diff -u -b -r1.130 -r1.131
--- server/sprite_instance.h 13 Aug 2007 07:20:09 -0000 1.130
+++ server/sprite_instance.h 29 Aug 2007 12:31:09 -0000 1.131
@@ -745,6 +745,17 @@
///
virtual void enumerateNonProperties(as_environment&) const;
+ /// Return original target path to this object, in dot notation
+ /// as of at construction time.
+ //
+ /// This is needed to properly dereference dangling soft-references
+ /// See testcase misc-swfc.all/soft_reference_test1.sc
+ ///
+ const std::string& getOrigTarget() const
+ {
+ return _origTarget;
+ }
+
private:
/// \brief
@@ -930,6 +941,8 @@
///
DisplayList _frame0_chars;
+ std::string _origTarget;
+
protected:
void place_character(character* ch, int depth,
Index: testsuite/misc-swfc.all/soft_reference_test1.sc
===================================================================
RCS file: /sources/gnash/gnash/testsuite/misc-swfc.all/soft_reference_test1.sc,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- testsuite/misc-swfc.all/soft_reference_test1.sc 29 Aug 2007 10:54:17
-0000 1.6
+++ testsuite/misc-swfc.all/soft_reference_test1.sc 29 Aug 2007 12:31:09
-0000 1.7
@@ -71,7 +71,7 @@
// Gnash bug:
// Target of the sprite mcRef points to changed, so seeking
// for the new target fails (_level0.changed doesn't exist)
- xcheck(mcRef == _level0.mc);
+ check(mcRef == _level0.mc);
.end
.frame 7
@@ -123,7 +123,7 @@
// Thus, when finding a *new* character (the old one was unloaded)
// we find the *new* _level0.mc2.
// Should be fixed in the same way as for the bug exposed in frame 5
- xcheck(mcRef.valueOf() == null)
+ check(mcRef.valueOf() == null)
// release resources after testing
delete mcRef;
@@ -161,7 +161,7 @@
// Gnash bug:
// Still the same bug: the ref uses *current* target instead of the one
// as of creation time.
- xcheck(mcRef == _level0.mc1);
+ check(mcRef == _level0.mc1);
_root.totals();
stop();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/as_value.cpp server/spri...,
Sandro Santilli <=