[Top][All Lists]
[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");
}
}
- [Gnash-commit] gnash ChangeLog server/asobj/Key.cpp,
Sandro Santilli <=