gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/as_value.cpp server/dlis...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/as_value.cpp server/dlis...
Date: Fri, 24 Aug 2007 16:07:28 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/08/24 16:07:27

Modified files:
        .              : ChangeLog 
        server         : as_value.cpp dlist.cpp dlist.h 
        testsuite/actionscript.all: MovieClip.as case.as 
        testsuite/misc-ming.all: displaylist_depths_test2.c 

Log message:
                * server/dlist.{h,cpp} (replace_character): call unload() on 
replaced
                  character and document the fact.
                * server/as_value.cpp: undefine the MOVIECLIP_AS_SOFTREF macro, 
tweak
                  equalSameType() and to_sprite() to use MOVIECLIP targets only 
when
                  they are unloaded.
                * testsuite/misc-ming.all/displaylist_depths_test2.c: xcheck => 
check
                  (no more failures from this test)
                * testsuite/actionscript.all/MovieClip.as: xcheck => check
                  (soft-references related)
                * testsuite/actionscript.all/case.as: xcheck => check (soft 
refs).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4098&r2=1.4099
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_value.cpp?cvsroot=gnash&r1=1.65&r2=1.66
http://cvs.savannah.gnu.org/viewcvs/gnash/server/dlist.cpp?cvsroot=gnash&r1=1.77&r2=1.78
http://cvs.savannah.gnu.org/viewcvs/gnash/server/dlist.h?cvsroot=gnash&r1=1.45&r2=1.46
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/MovieClip.as?cvsroot=gnash&r1=1.83&r2=1.84
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/case.as?cvsroot=gnash&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-ming.all/displaylist_depths_test2.c?cvsroot=gnash&r1=1.7&r2=1.8

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4098
retrieving revision 1.4099
diff -u -b -r1.4098 -r1.4099
--- ChangeLog   24 Aug 2007 15:52:49 -0000      1.4098
+++ ChangeLog   24 Aug 2007 16:07:26 -0000      1.4099
@@ -1,3 +1,16 @@
+2007-08-24 Sandro Santilli <address@hidden>
+
+       * server/dlist.{h,cpp} (replace_character): call unload() on replaced
+         character and document the fact.
+       * server/as_value.cpp: undefine the MOVIECLIP_AS_SOFTREF macro, tweak
+         equalSameType() and to_sprite() to use MOVIECLIP targets only when 
+         they are unloaded.
+       * testsuite/misc-ming.all/displaylist_depths_test2.c: xcheck => check
+         (no more failures from this test)
+       * testsuite/actionscript.all/MovieClip.as: xcheck => check
+         (soft-references related)
+       * testsuite/actionscript.all/case.as: xcheck => check (soft refs).
+
 2007-08-24 Miriam Ruiz <address@hidden>
 
         * plugin/klash/klash_part.cpp: Patch for GNASHEXE.

Index: server/as_value.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_value.cpp,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -b -r1.65 -r1.66
--- server/as_value.cpp 24 Aug 2007 13:55:08 -0000      1.65
+++ server/as_value.cpp 24 Aug 2007 16:07:27 -0000      1.66
@@ -44,7 +44,7 @@
 
 // Undefine this to keep MOVIECLIP values by pointer
 // rather then by "target" ref.
-#define MOVIECLIP_AS_SOFTREF
+//#define MOVIECLIP_AS_SOFTREF
 
 // Define the macro below to make abstract equality operator verbose
 //#define GNASH_DEBUG_EQUALITY
@@ -512,9 +512,11 @@
        if ( sp->isUnloaded() )
        {
                log_error(_("MovieClip value is a dangling reference: "
-                               "target %s was unloaded (should set to NULL?)"),
+                               "target %s was unloaded (looking for a 
substitute on the same target))"),
                                sp->getTarget().c_str());
-               return NULL; 
+               sp = find_sprite_by_target(sp->getTarget());
+               return sp;
+               //return NULL;
        }
        return sp;
 #else
@@ -847,7 +849,7 @@
 #ifdef MOVIECLIP_AS_SOFTREF
                        return m_string_value == v.m_string_value;
 #else
-                       return m_object_value == v.m_object_value;
+                       return to_sprite() == v.to_sprite(); // m_object_value 
== v.m_object_value;
 #endif
 
                case NUMBER:

Index: server/dlist.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/dlist.cpp,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -b -r1.77 -r1.78
--- server/dlist.cpp    22 Aug 2007 04:54:56 -0000      1.77
+++ server/dlist.cpp    24 Aug 2007 16:07:27 -0000      1.78
@@ -311,6 +311,9 @@
                // remember bounds of old char
                oldch->add_invalidated_bounds(old_ranges, true);                
 
+               // Unload old char
+               (*it)->unload();
+
                // replace existing char                
                *it = di;
                

Index: server/dlist.h
===================================================================
RCS file: /sources/gnash/gnash/server/dlist.h,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -b -r1.45 -r1.46
--- server/dlist.h      1 Jul 2007 10:54:21 -0000       1.45
+++ server/dlist.h      24 Aug 2007 16:07:27 -0000      1.46
@@ -98,6 +98,8 @@
        /// Puts a new character at the specified depth, replacing any
        /// existing character.
        //
+       /// Calls unload on the removed character.
+       ///
        /// If use_cxform or use_matrix are false, and a character is
        /// present at the given depth, then keep those respective
        /// properties from the existing character.

Index: testsuite/actionscript.all/MovieClip.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/MovieClip.as,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -b -r1.83 -r1.84
--- testsuite/actionscript.all/MovieClip.as     24 Aug 2007 15:05:23 -0000      
1.83
+++ testsuite/actionscript.all/MovieClip.as     24 Aug 2007 16:07:27 -0000      
1.84
@@ -20,7 +20,7 @@
 // compile this test case with Ming makeswf, and then
 // execute it like this gnash -1 -r 0 -v out.swf
 
-rcsid="$Id: MovieClip.as,v 1.83 2007/08/24 15:05:23 strk Exp $";
+rcsid="$Id: MovieClip.as,v 1.84 2007/08/24 16:07:27 strk Exp $";
 
 #include "check.as"
 
@@ -393,10 +393,10 @@
 check_equals(typeof(mc4), 'movieclip');
 check_equals(typeof(mc5), 'movieclip');
 // gah.. our "soft references" are bogus :(
-xcheck_equals(mc4._target, "/changed");
-xcheck_equals(mc5._target, "/changed/mc5_mc");
-xcheck_equals(targetPath(mc4), "_level0.changed");
-xcheck_equals(targetPath(mc5), "_level0.changed.mc5_mc");
+check_equals(mc4._target, "/changed");
+check_equals(mc5._target, "/changed/mc5_mc");
+check_equals(targetPath(mc4), "_level0.changed");
+check_equals(targetPath(mc5), "_level0.changed.mc5_mc");
 xcheck_equals(mc4.toString(), "[object Object]");
 xcheck_equals(mc5.toString(), "[object Object]");
 check_equals(changed._target, "/changed");
@@ -452,7 +452,7 @@
 // it's distinct clip !
 sr61.member = 6;
 check_equals(sr61.member, 6);
-xcheck_equals(typeof(sr62.member), 'undefined');
+check_equals(typeof(sr62.member), 'undefined');
 check_equals(sr61._name, "hardref");
 check_equals(sr62._name, "hardref");
 

Index: testsuite/actionscript.all/case.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/case.as,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- testsuite/actionscript.all/case.as  23 Aug 2007 16:50:56 -0000      1.8
+++ testsuite/actionscript.all/case.as  24 Aug 2007 16:07:27 -0000      1.9
@@ -22,7 +22,7 @@
  *  Test case sensitivity 
  */
 
-rcsid="$Id: case.as,v 1.8 2007/08/23 16:50:56 strk Exp $";
+rcsid="$Id: case.as,v 1.9 2007/08/24 16:07:27 strk Exp $";
 
 #include "check.as"
 
@@ -133,15 +133,15 @@
 check_equals(mcRef[1]._name, "CLIP"); 
 check_equals(mcRef[1]._target, "/CLIP"); 
 #else // OUTPUT_VERSION <= 6
-// Gnash fails these due to "soft references"
+// Gnash used to fail these due to "soft references"
 // Basically, a MOVIECLIP as_value stores the clip
 // target, but in SWF<7 the target is insensitive
 // so /clip and /CLIP both resolve to the *same*
 // character.
 //
-xcheck_equals(mcRef[1].getDepth(), 7);
-xcheck_equals(mcRef[1]._name, "CLIP"); 
-xcheck_equals(mcRef[1]._target, "/CLIP"); 
+check_equals(mcRef[1].getDepth(), 7);
+check_equals(mcRef[1]._name, "CLIP"); 
+check_equals(mcRef[1]._target, "/CLIP"); 
 #endif // OUTPUT_VERSION <= 6
 
 

Index: testsuite/misc-ming.all/displaylist_depths_test2.c
===================================================================
RCS file: 
/sources/gnash/gnash/testsuite/misc-ming.all/displaylist_depths_test2.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- testsuite/misc-ming.all/displaylist_depths_test2.c  1 Jul 2007 10:54:51 
-0000       1.7
+++ testsuite/misc-ming.all/displaylist_depths_test2.c  24 Aug 2007 16:07:27 
-0000      1.8
@@ -188,8 +188,8 @@
                //       existance of the old (dynamicized) instance by looking
                //       at the real DisplayList and at the rendered buffer
                //
-               "xcheck_equals(dynRef.myThing, 'guess');"
-               "xcheck_equals(dynRef.getDepth(), 10);" 
+               "check_equals(dynRef.myThing, 'guess');"
+               "check_equals(dynRef.getDepth(), 10);" 
 
                // Luckly we can query for depth chars with getInstanceAtDepth
                "check_equals(typeof(getInstanceAtDepth(-16381)), 'movieclip');"




reply via email to

[Prev in Thread] Current Thread [Next in Thread]