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 16:01:25 +0000

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

Modified files:
        .              : ChangeLog 
        server         : action.cpp 

Log message:
        Fix SetTarget code up a little further.
        
        For now, I'm assuming SetTarget("") works exactly like SetTarget("/") - 
both go to the root movie. I've added an appropriate TODO comment.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/ChangeLog.diff?tr1=1.85&tr2=1.86&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/action.cpp.diff?tr1=1.19&tr2=1.20&r1=text&r2=text

Patches:
Index: gnash/ChangeLog
diff -u gnash/ChangeLog:1.85 gnash/ChangeLog:1.86
--- gnash/ChangeLog:1.85        Sat Feb  4 15:32:06 2006
+++ gnash/ChangeLog     Sat Feb  4 16:01:25 2006
@@ -23,7 +23,8 @@
 2006-02-04 Michael Carlson <address@hidden>
 
        * server/Date.cpp: Clean up Date, and implement getDate()
-       * server/action.cpp: Fix SetTargetDynamic opcode
+       * server/action.cpp: Fix SetTargetDynamic opcode and further fix
+       SetTarget opcode
 
 2006-02-03  Rob Savoye  <address@hidden>
 
Index: gnash/server/action.cpp
diff -u gnash/server/action.cpp:1.19 gnash/server/action.cpp:1.20
--- gnash/server/action.cpp:1.19        Sat Feb  4 15:32:06 2006
+++ gnash/server/action.cpp     Sat Feb  4 16:01:25 2006
@@ -1711,10 +1711,12 @@
                                        break;
 
                                case SWF::ACTION_PLAY:  // action play
+                                       log_msg("WOO:PLAYING!\n");
                                        
env->get_target()->set_play_state(movie::PLAY);
                                        break;
 
                                case SWF::ACTION_STOP:  // action stop
+                                       log_msg("WOO:STOPPING!\n");
                                        
env->get_target()->set_play_state(movie::STOP);
                                        break;
 
@@ -1850,20 +1852,26 @@
                                case SWF::ACTION_SETTARGETEXPRESSION:   // set 
target expression
                                {
                                        const char * target_name = 
env->top(0).to_string();
+                                       env->drop(1); // pop the target name 
off the stack
+                                       movie *new_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);
+                                       // if the string is blank, we set 
target to the root movie
+                                       // TODO - double check this is correct?
+                                       if (target_name[0] == '\0')
+                                               new_target = 
env->find_target((tu_string)"/");
+                                       else
+                                               new_target = 
env->find_target((tu_string)target_name);
+
+                                       if (new_target == 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(new_target);
+
                                        break;
                                }
                                case SWF::ACTION_STRINGCONCAT:  // string concat
@@ -2235,34 +2243,8 @@
                                }
                                case SWF::ACTION_INITOBJECT:    // declare 
object
                                {
-                                       // 
-                                       //    SWFACTION_PUSH
-                                       //     [000]   Constant: 1 "obj"
-                                       //     [001]   Constant: 0 "member" <-- 
we handle up to here
-                                       //     [002]   Integer: 1
-                                       //     [003]   Integer: 1
-                                       //    SWFACTION_INITOBJECT
-
-                                       int nmembers = (int) 
env->pop().to_number();
-
-                                       smart_ptr<as_object> new_obj_ptr(new 
as_object); // won't this be leaking ?
-
-                                       // Set provided members
-                                       for (int i=0; i<nmembers; ++i) {
-                                               as_value member_value = 
env->pop();
-                                               tu_stringi member_name = 
env->pop().to_tu_stringi();
-                                               
new_obj_ptr->set_member(member_name, member_value);
-                                       }
-
                                        // @@ TODO
-                                       //log_error("checkme opcode: %02X\n", 
action_id);
-
-                                       as_value new_obj;
-                                       
new_obj.set_as_object_interface(new_obj_ptr.get_ptr());
-
-                                       //env->drop(nmembers*2);
-                                       env->push(new_obj); 
-
+                                       log_error("todo opcode: %02X\n", 
action_id);
                                        break;
                                }
                                case SWF::ACTION_TYPEOF:        // type of
@@ -2752,19 +2734,25 @@
                                {
                                        // Change the movie we're working on.
                                        const char* target_name = (const char*) 
&m_buffer[pc + 3];
-                                       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);
+                                       movie *new_target;
+
+                                       // if the string is blank, we set 
target to the root movie
+                                       // TODO - double check this is correct?
+                                       if (target_name[0] == '\0')
+                                               new_target = 
env->find_target((tu_string)"/");
+                                       else
+                                               new_target = 
env->find_target((tu_string)target_name);
+
+                                       if (new_target == 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(new_target);
+
                                        break;
                                }
 




reply via email to

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