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 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);
+  
 }




reply via email to

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