gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ./ChangeLog server/action.cpp


From: Michael Carlson
Subject: [Gnash-commit] gnash ./ChangeLog server/action.cpp
Date: Sat, 04 Feb 2006 09:14:25 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Branch:         
Changes by:     Michael Carlson <address@hidden>        06/02/04 09:14:25

Modified files:
        .              : ChangeLog 
        server         : action.cpp 

Log message:
        Fix SetTargetDynamic to work as Alexis' SWF reference says it should
        This is almost the same fix as what I did with SetTarget a few days ago.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/ChangeLog.diff?tr1=1.81&tr2=1.82&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/action.cpp.diff?tr1=1.17&tr2=1.18&r1=text&r2=text

Patches:
Index: gnash/ChangeLog
diff -u gnash/ChangeLog:1.81 gnash/ChangeLog:1.82
--- gnash/ChangeLog:1.81        Sat Feb  4 07:51:34 2006
+++ gnash/ChangeLog     Sat Feb  4 09:14:25 2006
@@ -16,6 +16,7 @@
 2006-02-04 Michael Carlson <address@hidden>
 
        * server/Date.cpp: Clean up Date, and implement getDate()
+       * server/action.cpp: Fix SetTargetDynamic opcode
 
 2006-02-03  Rob Savoye  <address@hidden>
 
Index: gnash/server/action.cpp
diff -u gnash/server/action.cpp:1.17 gnash/server/action.cpp:1.18
--- gnash/server/action.cpp:1.17        Fri Feb  3 22:49:52 2006
+++ gnash/server/action.cpp     Sat Feb  4 09:14:25 2006
@@ -1849,14 +1849,21 @@
                                }
                                case SWF::ACTION_SETTARGETEXPRESSION:   // set 
target expression
                                {
-                                       as_object_interface* target_object = 
env->top(0).to_object();
+                                       const char * target_name = 
env->top(0).to_string();
 
-                                       IF_VERBOSE_ACTION(log_msg("-- 
ActionSetTarget2: %s (%d)",
-                                                                 ((character 
*) target_object)->m_name.c_str(),
-                                                                 ((character 
*) target_object)->m_id));
-
-                                       movie* target = 
env->find_target(target_object);
-                                       env->set_target (target);
+                                       if (target_name[0] == 0) { 
env->set_target(original_target); }
+                                       else {
+                                               movie * cha = 
env->find_target((tu_string)target_name);
+                                               if (cha == NULL)
+                                               {
+                                                       
IF_VERBOSE_ACTION(log_error(
+                                                               "Couldn't find 
movie \"%s\" to set target to!"
+                                                               " Not setting 
target at all...",
+                                                               (const char 
*)target_name));
+                                               }
+                                               else
+                                                       env->set_target(cha);
+                                       }
                                        break;
                                }
                                case SWF::ACTION_STRINGCONCAT:  // string concat
@@ -2738,7 +2745,8 @@
                                case SWF::ACTION_GOTOLABEL:     // go to 
labeled frame, goto_frame_lbl
                                {
                                        char*   frame_label = (char*) 
&m_buffer[pc + 3];
-                                       
env->get_target()->goto_labeled_frame(frame_label);
+                                       movie *target = env->get_target();
+                                       target->goto_labeled_frame(frame_label);
                                        break;
                                }
 




reply via email to

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