[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/asobj/Key.cpp server/aso...
From: |
Zou Lunkai |
Subject: |
[Gnash-commit] gnash ChangeLog server/asobj/Key.cpp server/aso... |
Date: |
Fri, 27 Apr 2007 07:05:09 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Zou Lunkai <zoulunkai> 07/04/27 07:05:08
Modified files:
. : ChangeLog
server/asobj : Key.cpp Key.h
server : movie_root.cpp sprite_instance.cpp
testsuite/misc-ming.all: key_event_testrunner.cpp
Log message:
cleanups, comments, user defined onKeyPress() is not a event handler
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3013&r2=1.3014
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Key.cpp?cvsroot=gnash&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Key.h?cvsroot=gnash&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie_root.cpp?cvsroot=gnash&r1=1.59&r2=1.60
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.258&r2=1.259
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-ming.all/key_event_testrunner.cpp?cvsroot=gnash&r1=1.3&r2=1.4
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3013
retrieving revision 1.3014
diff -u -b -r1.3013 -r1.3014
--- ChangeLog 27 Apr 2007 01:07:57 -0000 1.3013
+++ ChangeLog 27 Apr 2007 07:05:08 -0000 1.3014
@@ -1,3 +1,14 @@
+2007-04-27 Zou Lunkai <address@hidden>
+
+ * server/asobj/Key.{cpp,h}:
+ cleanups; don't invoke user defined onKeyPress(), it's just a
+ normal function.
+ * server/movie_root.cpp.h, server/sprite_instance.cpp:
+ cleanups and add some comments. don't set m_has_key_event when
there
+ is a user defined onKeyPress() function.
+ * testsuite/misc-ming.all/key_event_testrunner.cpp:
+ more tests.
+
2007-04-26 Rob Savoye <address@hidden>
* Makefile.am: Add po to EXTRA_DIST.
Index: server/asobj/Key.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Key.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- server/asobj/Key.cpp 26 Apr 2007 10:56:50 -0000 1.22
+++ server/asobj/Key.cpp 27 Apr 2007 07:05:08 -0000 1.23
@@ -94,7 +94,7 @@
:
m_last_key_pressed(0)
{
- memset(m_keymap, 0, sizeof(m_keymap));
+ memset(m_unreleased_keys, 0, sizeof(m_unreleased_keys));
}
bool
@@ -106,9 +106,9 @@
int bit_index = code - (byte_index << 3);
int mask = 1 << bit_index;
- assert(byte_index >= 0 && byte_index <
int(sizeof(m_keymap)/sizeof(m_keymap[0])));
+ assert(byte_index >= 0 && byte_index <
int(sizeof(m_unreleased_keys)/sizeof(m_unreleased_keys[0])));
- if (m_keymap[byte_index] & mask)
+ if (m_unreleased_keys[byte_index] & mask)
{
return true;
}
@@ -129,9 +129,9 @@
int bit_index = code - (byte_index << 3);
int mask = 1 << bit_index;
- assert(byte_index >= 0 && byte_index <
int(sizeof(m_keymap)/sizeof(m_keymap[0])));
+ assert(byte_index >= 0 && byte_index <
int(sizeof(m_unreleased_keys)/sizeof(m_unreleased_keys[0])));
- m_keymap[byte_index] |= mask;
+ m_unreleased_keys[byte_index] |= mask;
}
void
@@ -143,9 +143,9 @@
int bit_index = code - (byte_index << 3);
int mask = 1 << bit_index;
- assert(byte_index >= 0 && byte_index <
int(sizeof(m_keymap)/sizeof(m_keymap[0])));
+ assert(byte_index >= 0 && byte_index <
int(sizeof(m_unreleased_keys)/sizeof(m_unreleased_keys[0])));
- m_keymap[byte_index] &= ~mask;
+ m_unreleased_keys[byte_index] &= ~mask;
}
void
@@ -153,6 +153,10 @@
{
std::string funcname = key_event_type.get_function_name();
+ // There is no user defined "onKeyPress" event handler
+ if( ( funcname != "onKeyDown") && (funcname != "onKeyUp") )
+ return;
+
VM& vm = VM::get();
if ( vm.getSWFVersion() < 7 )
{
@@ -236,7 +240,8 @@
}
as_value key_get_ascii(const fn_call& fn)
- // Return the ascii value of the last key pressed.
+// Return the ascii value of the last key pressed.
+/// FIXME: return the ascii number(not string) of the last pressed key!
{
boost::intrusive_ptr<key_as_object> ko =
ensureType<key_as_object>(fn.this_ptr);
Index: server/asobj/Key.h
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Key.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- server/asobj/Key.h 26 Apr 2007 11:18:03 -0000 1.15
+++ server/asobj/Key.h 27 Apr 2007 07:05:08 -0000 1.16
@@ -16,7 +16,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: Key.h,v 1.15 2007/04/26 11:18:03 zoulunkai Exp $ */
+/* $Id: Key.h,v 1.16 2007/04/27 07:05:08 zoulunkai Exp $ */
#ifndef __KEY_H__
#define __KEY_H__
@@ -96,7 +96,8 @@
{
private:
- uint8_t m_keymap[key::KEYCOUNT / 8 + 1]; // bit-array
+ /// bit-array for recording the unreleased keys
+ uint8_t m_unreleased_keys[key::KEYCOUNT / 8 + 1];
std::vector<boost::intrusive_ptr<as_object> > m_listeners;
int m_last_key_pressed;
@@ -110,6 +111,8 @@
void set_key_up(int code);
+ /// responsible for user defined key events handlers only;
+ /// take over both characters and non-characters object.
void notify_listeners(const event_id key_event_type);
void add_listener(boost::intrusive_ptr<as_object> listener);
Index: server/movie_root.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/movie_root.cpp,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -b -r1.59 -r1.60
--- server/movie_root.cpp 26 Apr 2007 11:04:56 -0000 1.59
+++ server/movie_root.cpp 27 Apr 2007 07:05:08 -0000 1.60
@@ -218,9 +218,12 @@
//
key_as_object * global_key = notify_global_key(k, down);
- // Notify key listeners.
+ // Notify character key listeners.
notify_key_listeners(k, down);
+ // Notify both character and non-character Key listeners
+ // for user defined handerlers.
+ // FIXME: this may violates the event order
if(global_key)
{
if(down)
@@ -696,7 +699,7 @@
}
}
-#ifdef key_LISTENERS_DEBUG
+#ifdef KEY_LISTENERS_DEBUG
size_t currsize = m_key_listeners.size();
log_msg("Cleaned up %u listeners (from %u to %u)", prevsize-currsize,
prevsize, currsize);
#endif
@@ -717,7 +720,7 @@
{
if(down)
{
- // key code for KEY_DOWN and KEY_UP should be
invalid
+ // KEY_UP and KEY_DOWN events are unrelated to
any key!
ch->on_event(event_id(event_id::KEY_DOWN,
key::INVALID));
ch->on_event(event_id(event_id::KEY_PRESS, k));
}
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.258
retrieving revision 1.259
diff -u -b -r1.258 -r1.259
--- server/sprite_instance.cpp 26 Apr 2007 10:56:50 -0000 1.258
+++ server/sprite_instance.cpp 27 Apr 2007 07:05:08 -0000 1.259
@@ -3579,8 +3579,8 @@
const char* ptr = name.c_str();
+ // AFAIK, there is no user defined "onKeyPress" event handler!
if ( ! cmp(ptr, "onKeyDown")
- || ! cmp(ptr, "onKeypress")
|| ! cmp(ptr, "onKeyUp"))
{
has_key_event();
Index: testsuite/misc-ming.all/key_event_testrunner.cpp
===================================================================
RCS file:
/sources/gnash/gnash/testsuite/misc-ming.all/key_event_testrunner.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- testsuite/misc-ming.all/key_event_testrunner.cpp 26 Apr 2007 12:10:18
-0000 1.3
+++ testsuite/misc-ming.all/key_event_testrunner.cpp 27 Apr 2007 07:05:08
-0000 1.4
@@ -69,7 +69,7 @@
check(root->get_member("x2", &tmp));
check_equals(tmp.to_number(), key::A);
- // check that user defined onKeyUp/KeyDown are not triggered
+ // check that user defined onKeyUp/KeyDown were not triggered
check(root->get_member("x4", &tmp));
check_equals(tmp.to_number(), 0);
check(root->get_member("x5", &tmp));
@@ -83,7 +83,7 @@
check_equals(root->get_current_frame(), 30); // the 31th frame
check_equals(root->get_play_state(), sprite_instance::STOP);
- // press key 'B' and checks
+ // press key 'C' and checks
tester.pressKey(key::C);
tester.releaseKey(key::C);
@@ -98,4 +98,14 @@
check_equals(tmp.to_string(), "C");
check(root->get_member("x5", &tmp));
check_equals(tmp.to_number(), key::C);
+
+ // check that user onClipKeyPress and user defined onKeyPress were not
triggered
+ // onClipKeyPress was not triggered because the event handler binds a
invalid key code
+ check(root->get_member("x3", &tmp));
+ check_equals(tmp.to_number(), 0);
+ // onKeyPress was not triggered because I think there is no user defined
+ // KeyPress event handler at all( the defined onKeyPress is just a normal
function).
+ check(root->get_member("x6", &tmp));
+ check_equals(tmp.to_number(), 0);
+
}
- [Gnash-commit] gnash ChangeLog server/asobj/Key.cpp server/aso...,
Zou Lunkai <=