gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/asobj/Key.cpp


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/asobj/Key.cpp
Date: Wed, 07 Feb 2007 17:31:04 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/02/07 17:31:04

Modified files:
        .              : ChangeLog 
        server/asobj   : Key.cpp 

Log message:
                * server/asobj/Key.cpp (notify_key_event): fix update
                  of the _global.Key object (need a testcase for this!).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2264&r2=1.2265
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Key.cpp?cvsroot=gnash&r1=1.8&r2=1.9

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2264
retrieving revision 1.2265
diff -u -b -r1.2264 -r1.2265
--- ChangeLog   7 Feb 2007 16:47:03 -0000       1.2264
+++ ChangeLog   7 Feb 2007 17:31:04 -0000       1.2265
@@ -1,5 +1,7 @@
 2007-02-07 Sandro Santilli <address@hidden>
 
+       * server/asobj/Key.cpp (notify_key_event): fix update
+         of the _global.Key object (need a testcase for this!).
        * server/sprite_instance.cpp (movieclip_ctor): don't attach MovieClip
          properties, as those are only good for real sprites.
        * server/swf/tag_loaders.cpp: use log_swferror where appropriate,

Index: server/asobj/Key.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Key.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- server/asobj/Key.cpp        18 Jan 2007 22:53:21 -0000      1.8
+++ server/asobj/Key.cpp        7 Feb 2007 17:31:04 -0000       1.9
@@ -28,6 +28,8 @@
 #include "action.h" // for call_method
 #include "VM.h"
 
+#include <boost/algorithm/string/case_conv.hpp>
+
 namespace gnash {
 
 Key::Key() {
@@ -344,22 +346,35 @@
                mroot.notify_keypress_listeners(k);
        }
 
-       as_value        kval;
-       as_object* global = VM::get().getGlobal();
+       //static boost::intrusive_ptr<key_as_object*> keyobject = NULL;
+       static key_as_object* keyobject = NULL;
+       if ( ! keyobject )
+       {
        // This isn't very performant... do we allow user override
        // of _global.Key, btw ?
-       global->init_member("Key", &kval);
-       if (kval.is_object() )
+
+               as_value kval;
+               as_object* global = VM::get().getGlobal();
+
+               std::string objName = "Key";
+               VM& vm = VM::get();
+               if ( vm.getSWFVersion() < 7 )
        {
-           key_as_object*      ko = static_cast<key_as_object*>( 
kval.to_object() );
-           assert(ko);
+                       boost::to_lower(objName, vm.getLocale());
+               }
+               global->get_member(objName, &kval);
 
-           if (down) ko->set_key_down(k);
-           else ko->set_key_up(k);
+               keyobject = dynamic_cast<key_as_object*>( kval.to_object() );
+       }
+
+       if ( keyobject )
+       {
+               if (down) keyobject->set_key_down(k);
+               else keyobject->set_key_up(k);
        }
        else
        {
-           log_error("gnash::notify_key_event(): no Key built-in\n");
+               log_error("gnash::notify_key_event(): _global.Key doesn't 
exist, or isn't the expected built-in\n");
        }
 }
 




reply via email to

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