[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/as_object.cpp server/but...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/as_object.cpp server/but... |
Date: |
Mon, 21 Jan 2008 16:02:51 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 08/01/21 16:02:51
Modified files:
. : ChangeLog
server : as_object.cpp button_character_instance.cpp
character.cpp character.h event_id.h
namedStrings.cpp namedStrings.h
sprite_instance.cpp
server/asobj : xml.cpp
server/vm : action.cpp
Log message:
Add more named strings, use them for event function "names" and in a few
other places.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5444&r2=1.5445
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.cpp?cvsroot=gnash&r1=1.92&r2=1.93
http://cvs.savannah.gnu.org/viewcvs/gnash/server/button_character_instance.cpp?cvsroot=gnash&r1=1.76&r2=1.77
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.cpp?cvsroot=gnash&r1=1.74&r2=1.75
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.h?cvsroot=gnash&r1=1.121&r2=1.122
http://cvs.savannah.gnu.org/viewcvs/gnash/server/event_id.h?cvsroot=gnash&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/gnash/server/namedStrings.cpp?cvsroot=gnash&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/gnash/server/namedStrings.h?cvsroot=gnash&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.453&r2=1.454
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/xml.cpp?cvsroot=gnash&r1=1.65&r2=1.66
http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/action.cpp?cvsroot=gnash&r1=1.30&r2=1.31
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5444
retrieving revision 1.5445
diff -u -b -r1.5444 -r1.5445
--- ChangeLog 21 Jan 2008 15:02:32 -0000 1.5444
+++ ChangeLog 21 Jan 2008 16:02:49 -0000 1.5445
@@ -1,3 +1,17 @@
+2008-01-21 Sandro Santilli <address@hidden>
+
+ * server/as_object.cpp, server/button_character_instance.cpp,
+ server/sprite_instance.cpp, server/asobj/xml.cpp: use new
+ named strings. This should be particularely effective for
+ sprite_instance::can_handle_mouse_event, which is called
+ on every mouse movement.
+ * server/character.{cpp,h}: add a getUserDefinedMethod() interface
+ taking a string_table::key.
+ * server/event_id.h, vm/action.cpp: add event_id::get_funtion_key
+ method.
+ * server/namedStrings.{cpp,h}: add more named strings
+ for core properties.
+
2008-01-21 Benjamin Wolsey <address@hidden>
* server/asobj/System.cpp: correct typo in server string, clean up.
Index: server/as_object.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.cpp,v
retrieving revision 1.92
retrieving revision 1.93
diff -u -b -r1.92 -r1.93
--- server/as_object.cpp 18 Jan 2008 17:48:26 -0000 1.92
+++ server/as_object.cpp 21 Jan 2008 16:02:50 -0000 1.93
@@ -863,14 +863,7 @@
{
as_value event_handler;
- std::string handler_name = id.get_function_name();
-
- if ( _vm.getSWFVersion() < 7 )
- {
- boost::to_lower(handler_name, _vm.getLocale());
- }
-
- if (get_member(_vm.getStringTable().find(handler_name), &event_handler)
)
+ if (get_member(id.get_function_key(), &event_handler) )
{
call_method(event_handler, NULL, this, 0, 0);
return true;
Index: server/button_character_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/button_character_instance.cpp,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -b -r1.76 -r1.77
--- server/button_character_instance.cpp 18 Jan 2008 17:48:26 -0000
1.76
+++ server/button_character_instance.cpp 21 Jan 2008 16:02:50 -0000
1.77
@@ -591,7 +591,7 @@
// Call conventional attached method.
- boost::intrusive_ptr<as_function> method =
getUserDefinedEventHandler(event.get_function_name());
+ boost::intrusive_ptr<as_function> method =
getUserDefinedEventHandler(event.get_function_key());
if ( method )
{
call_method0(as_value(method.get()), &(get_environment()),
this);
Index: server/character.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/character.cpp,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -b -r1.74 -r1.75
--- server/character.cpp 20 Jan 2008 19:38:04 -0000 1.74
+++ server/character.cpp 21 Jan 2008 16:02:50 -0000 1.75
@@ -17,7 +17,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: character.cpp,v 1.74 2008/01/20 19:38:04 strk Exp $ */
+/* $Id: character.cpp,v 1.75 2008/01/21 16:02:50 strk Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -658,7 +658,7 @@
Events::const_iterator it = _event_handlers.find(id);
if ( it != _event_handlers.end() ) return true;
- boost::intrusive_ptr<as_function> method =
getUserDefinedEventHandler(id.get_function_name());
+ boost::intrusive_ptr<as_function> method =
getUserDefinedEventHandler(id.get_function_key());
if (method) return true;
return false;
@@ -667,19 +667,20 @@
boost::intrusive_ptr<as_function>
character::getUserDefinedEventHandler(const std::string& name) const
{
- std::string method_name = name;
- if ( _vm.getSWFVersion() < 7 )
- {
- boost::to_lower(method_name, _vm.getLocale());
- }
+ string_table::key key = _vm.getStringTable().find(PROPNAME(name));
+ return getUserDefinedEventHandler(key);
+}
+boost::intrusive_ptr<as_function>
+character::getUserDefinedEventHandler(string_table::key key) const
+{
as_value tmp;
boost::intrusive_ptr<as_function> func;
// const cast is needed due to getter/setter members possibly
// modifying this object even when only get !
- if (
const_cast<character*>(this)->get_member(_vm.getStringTable().find(method_name),
&tmp) )
+ if ( const_cast<character*>(this)->get_member(key, &tmp) )
{
func = tmp.to_as_function();
}
@@ -887,8 +888,7 @@
set_invalidated();
}
- // Backup these before messing up
- character* prevMask = _mask;
+ // Backup this before setMaskee has a chance to change it..
character* prevMaskee = _maskee;
// If we had a previous mask unregister with it
Index: server/character.h
===================================================================
RCS file: /sources/gnash/gnash/server/character.h,v
retrieving revision 1.121
retrieving revision 1.122
diff -u -b -r1.121 -r1.122
--- server/character.h 20 Jan 2008 19:38:04 -0000 1.121
+++ server/character.h 21 Jan 2008 16:02:50 -0000 1.122
@@ -19,7 +19,7 @@
//
//
-/* $Id: character.h,v 1.121 2008/01/20 19:38:04 strk Exp $ */
+/* $Id: character.h,v 1.122 2008/01/21 16:02:50 strk Exp $ */
#ifndef GNASH_CHARACTER_H
#define GNASH_CHARACTER_H
@@ -162,6 +162,17 @@
///
boost::intrusive_ptr<as_function> getUserDefinedEventHandler(const
std::string& name) const;
+ /// Return a user defined event handler, if any
+ //
+ /// @param key
+ /// Function key to fetch.
+ ///
+ /// @return
+ /// A function if a member with the given key exists and
+ /// casts to an as_function. A NULL pointer otherwise.
+ ///
+ boost::intrusive_ptr<as_function>
getUserDefinedEventHandler(string_table::key key) const;
+
void set_event_handlers(const Events& copyfrom);
/// Used to assign a name to unnamed instances
Index: server/event_id.h
===================================================================
RCS file: /sources/gnash/gnash/server/event_id.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- server/event_id.h 20 Sep 2007 06:57:02 -0000 1.13
+++ server/event_id.h 21 Jan 2008 16:02:51 -0000 1.14
@@ -24,6 +24,7 @@
#include "config.h"
#endif
+#include "string_table.h"
#include "tu_config.h"
#include "gnash.h" // for gnash::key namespace
@@ -133,6 +134,10 @@
/// corresponding to this event.
const std::string& get_function_name() const;
+ /// Return the string_table key of a method-handler function
+ /// corresponding to this event.
+ string_table::key get_function_key() const;
+
/// \brief
/// Return true if this is a mouse event
/// (triggerable with a mouse activity)
Index: server/namedStrings.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/namedStrings.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- server/namedStrings.cpp 21 Jan 2008 07:07:27 -0000 1.8
+++ server/namedStrings.cpp 21 Jan 2008 16:02:51 -0000 1.9
@@ -55,12 +55,43 @@
{ "loaded", NSV::PROP_LOADED },
{ "_name", NSV::PROP_uNAME },
{ "onLoad", NSV::PROP_ON_LOAD },
+ { "onClose", NSV::PROP_ON_CLOSE },
+ { "onLoadStart", NSV::PROP_ON_LOAD_START },
+ { "onLoadError", NSV::PROP_ON_LOAD_ERROR },
+ { "onLoadProgress", NSV::PROP_ON_LOAD_PROGRESS },
+ { "onLoadInit", NSV::PROP_ON_LOAD_INIT },
+ { "onUnload", NSV::PROP_ON_UNLOAD },
+ { "onEnterFrame", NSV::PROP_ON_ENTER_FRAME },
+ { "onConstruct", NSV::PROP_ON_CONSTRUCT },
+ { "onInitialize", NSV::PROP_ON_INITIALIZE },
+ { "onData", NSV::PROP_ON_DATA },
{ "onResize", NSV::PROP_ON_RESIZE },
+ { "onPress", NSV::PROP_ON_PRESS },
+ { "onRelease", NSV::PROP_ON_RELEASE },
+ { "onReleaseOutside", NSV::PROP_ON_RELEASE_OUTSIDE },
{ "onRollOut", NSV::PROP_ON_ROLL_OUT },
{ "onRollOver", NSV::PROP_ON_ROLL_OVER },
+ { "onDragOver", NSV::PROP_ON_DRAG_OVER },
+ { "onDragOut", NSV::PROP_ON_DRAG_OUT },
+ { "onKeyPress", NSV::PROP_ON_KEY_PRESS },
+ { "onKeyDown", NSV::PROP_ON_KEY_DOWN },
+ { "onKeyUp", NSV::PROP_ON_KEY_UP },
+ { "onMouseDown", NSV::PROP_ON_MOUSE_DOWN },
+ { "onMouseUp", NSV::PROP_ON_MOUSE_UP },
+ { "onMouseMove", NSV::PROP_ON_MOUSE_MOVE },
+ { "onSetFocus", NSV::PROP_ON_SET_FOCUS },
+ { "onKillFocus", NSV::PROP_ON_KILL_FOCUS },
{ "onSelect", NSV::PROP_ON_SELECT },
{ "onStatus", NSV::PROP_ON_STATUS },
{ "onMetaData", NSV::PROP_ON_META_DATA },
+ { "onSockClose", NSV::PROP_ON_SOCK_CLOSE },
+ { "onSockConnect", NSV::PROP_ON_SOCK_CONNECT },
+ { "onSockData", NSV::PROP_ON_SOCK_DATA },
+ { "onSockXML", NSV::PROP_ON_SOCK_XML },
+ { "onXMLLoad", NSV::PROP_ON_XML_LOAD },
+ { "onXMLData", NSV::PROP_ON_XML_DATA },
+ { "parseXML", NSV::PROP_PARSE_XML },
+ { "onTimer", NSV::PROP_ON_TIMER },
{ "_parent", NSV::PROP_uPARENT },
{ "_root", NSV::PROP_uROOT },
{ "_global", NSV::PROP_uGLOBAL },
Index: server/namedStrings.h
===================================================================
RCS file: /sources/gnash/gnash/server/namedStrings.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- server/namedStrings.h 21 Jan 2008 07:07:27 -0000 1.10
+++ server/namedStrings.h 21 Jan 2008 16:02:51 -0000 1.11
@@ -77,12 +77,43 @@
PROP_LOADED,
PROP_uNAME,
PROP_ON_LOAD,
+ PROP_ON_CLOSE,
+ PROP_ON_LOAD_START,
+ PROP_ON_LOAD_ERROR,
+ PROP_ON_LOAD_PROGRESS,
+ PROP_ON_LOAD_INIT,
+ PROP_ON_UNLOAD,
+ PROP_ON_ENTER_FRAME,
+ PROP_ON_CONSTRUCT,
+ PROP_ON_INITIALIZE,
+ PROP_ON_DATA,
PROP_ON_RESIZE,
+ PROP_ON_PRESS,
+ PROP_ON_RELEASE,
+ PROP_ON_RELEASE_OUTSIDE,
PROP_ON_ROLL_OUT,
PROP_ON_ROLL_OVER,
+ PROP_ON_DRAG_OVER,
+ PROP_ON_DRAG_OUT,
+ PROP_ON_KEY_PRESS,
+ PROP_ON_KEY_DOWN,
+ PROP_ON_KEY_UP,
+ PROP_ON_MOUSE_DOWN,
+ PROP_ON_MOUSE_UP,
+ PROP_ON_MOUSE_MOVE,
+ PROP_ON_SET_FOCUS,
+ PROP_ON_KILL_FOCUS,
PROP_ON_SELECT,
PROP_ON_STATUS,
PROP_ON_META_DATA,
+ PROP_ON_SOCK_CLOSE,
+ PROP_ON_SOCK_CONNECT,
+ PROP_ON_SOCK_DATA,
+ PROP_ON_SOCK_XML,
+ PROP_ON_XML_LOAD,
+ PROP_ON_XML_DATA,
+ PROP_PARSE_XML,
+ PROP_ON_TIMER,
PROP_uPARENT,
PROP_uROOT,
PROP_uGLOBAL,
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.453
retrieving revision 1.454
diff -u -b -r1.453 -r1.454
--- server/sprite_instance.cpp 21 Jan 2008 12:58:35 -0000 1.453
+++ server/sprite_instance.cpp 21 Jan 2008 16:02:51 -0000 1.454
@@ -2530,7 +2530,7 @@
if( ! id.is_key_event ())
{
boost::intrusive_ptr<as_function> method =
- getUserDefinedEventHandler(id.get_function_name());
+ getUserDefinedEventHandler(id.get_function_key());
if ( method )
{
@@ -3495,7 +3495,7 @@
}
// Check user-defined event handlers
- if ( getUserDefinedEventHandler(event.get_function_name()) )
+ if ( getUserDefinedEventHandler(event.get_function_key()) )
{
return true;
}
Index: server/asobj/xml.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/xml.cpp,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -b -r1.65 -r1.66
--- server/asobj/xml.cpp 10 Jan 2008 17:34:46 -0000 1.65
+++ server/asobj/xml.cpp 21 Jan 2008 16:02:51 -0000 1.66
@@ -17,7 +17,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: xml.cpp,v 1.65 2008/01/10 17:34:46 strk Exp $ */
+/* $Id: xml.cpp,v 1.66 2008/01/21 16:02:51 strk Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -192,18 +192,8 @@
// before advance() is called). Then the onLoad event
// is triggered.
- // In ActionScript 2.0, event method names are CASE SENSITIVE.
- // In ActionScript 1.0, event method names are CASE INSENSITIVE.
- // TODO: move to get_function_name directly ?
- std::string method_name1 = "onLoad";
- if ( _vm.getSWFVersion() < 7 )
- boost::to_lower(method_name1, _vm.getLocale());
-
- if ( method_name1.empty() ) return;
-
- string_table::key method_name = _vm.getStringTable().find(method_name1);
as_value method;
- if (!get_member(method_name, &method) ) return;
+ if (!get_member(NSV::PROP_ON_LOAD, &method) ) return;
if ( method.is_undefined() ) return;
if ( ! method.is_function() ) return;
@@ -226,18 +216,8 @@
// before advance() is called). Then the onLoad event
// is triggered.
- // In ActionScript 2.0, event method names are CASE SENSITIVE.
- // In ActionScript 1.0, event method names are CASE INSENSITIVE.
- // TODO: move to get_function_name directly ?
- std::string method_name1 = "onClose";
- if ( _vm.getSWFVersion() < 7 )
- boost::to_lower(method_name1, _vm.getLocale());
-
- if ( method_name1.empty() ) return;
-
- string_table::key method_name = _vm.getStringTable().find(method_name1);
as_value method;
- if (! get_member(method_name, &method) ) return;
+ if (! get_member(NSV::PROP_ON_CLOSE, &method) ) return;
if ( method.is_undefined() ) return;
if ( ! method.is_function() ) return;
@@ -464,9 +444,7 @@
if ( _loadThreads.empty() ) return; // nothing to do
- VM& vm = getVM();
- string_table& st = vm.getStringTable();
- string_table::key onDataKey = st.find(PROPNAME("onData"));
+ string_table::key onDataKey = NSV::PROP_ON_DATA;
for (LoadThreadList::iterator it=_loadThreads.begin();
it != _loadThreads.end(); )
@@ -517,6 +495,7 @@
#ifdef DEBUG_XML_LOADS
log_debug("Clearing XML load checker interval timer");
#endif
+ VM& vm = getVM();
vm.getRoot().clear_interval_timer(_loadCheckerTimer);
_loadCheckerTimer=0;
}
@@ -551,7 +530,7 @@
return false;
// TODO: this is still not correct.. we should still send onData
later...
//as_value nullValue; nullValue.set_null();
- //callMethod(VM::get().getStringTable().find(PROPNAME("onData")),
nullValue);
+ //callMethod(NSV::PROP_ON_DATA, nullValue);
}
log_security(_("Loading XML file from url: '%s'"), url.str().c_str());
@@ -886,10 +865,8 @@
{
GNASH_REPORT_FUNCTION;
- VM& vm = VM::get();
- string_table& st = vm.getStringTable();
- string_table::key onLoadKey = st.find(PROPNAME("onLoad"));
- string_table::key loadedKey = st.find("loaded");
+ string_table::key onLoadKey = NSV::PROP_ON_LOAD;
+ string_table::key loadedKey = NSV::PROP_LOADED;
as_object* thisPtr = fn.this_ptr.get();
assert(thisPtr);
@@ -901,7 +878,7 @@
if ( ! src.is_null() )
{
- string_table::key parseXMLKey = st.find(PROPNAME("parseXML"));
+ string_table::key parseXMLKey = NSV::PROP_PARSE_XML;
as_value tmp(true);
thisPtr->set_member(loadedKey, tmp);
thisPtr->callMethod(parseXMLKey, src);
Index: server/vm/action.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/vm/action.cpp,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -b -r1.30 -r1.31
--- server/vm/action.cpp 10 Dec 2007 10:54:34 -0000 1.30
+++ server/vm/action.cpp 21 Jan 2008 16:02:51 -0000 1.31
@@ -45,6 +45,7 @@
#include "StringPredicates.h"
#include "xml.h"
#include "xmlsocket.h"
+#include "namedStrings.h"
#include <typeinfo>
@@ -374,6 +375,56 @@
return s_function_names[m_id];
}
+string_table::key
+event_id::get_function_key() const
+{
+ // TODO: use a case-insensitive matching
+ static string_table::key function_keys[EVENT_COUNT] =
+ {
+ 0, // INVALID
+ NSV::PROP_ON_PRESS, // PRESS
+ NSV::PROP_ON_RELEASE, // RELEASE
+ NSV::PROP_ON_RELEASE_OUTSIDE, // RELEASE_OUTSIDE
+ NSV::PROP_ON_ROLL_OVER, // ROLL_OVER
+ NSV::PROP_ON_ROLL_OUT, // ROLL_OUT
+ NSV::PROP_ON_DRAG_OVER, // DRAG_OVER
+ NSV::PROP_ON_DRAG_OUT, // DRAG_OUT
+ NSV::PROP_ON_KEY_PRESS, // KEY_PRESS
+ NSV::PROP_ON_INITIALIZE, // INITIALIZE
+
+ NSV::PROP_ON_LOAD, // LOAD
+ NSV::PROP_ON_UNLOAD, // UNLOAD
+ NSV::PROP_ON_ENTER_FRAME, // ENTER_FRAME
+ NSV::PROP_ON_MOUSE_DOWN, // MOUSE_DOWN
+ NSV::PROP_ON_MOUSE_UP, // MOUSE_UP
+ NSV::PROP_ON_MOUSE_MOVE, // MOUSE_MOVE
+ NSV::PROP_ON_KEY_DOWN, // KEY_DOWN
+ NSV::PROP_ON_KEY_UP, // KEY_UP
+ NSV::PROP_ON_DATA, // DATA
+ // These are for the MoveClipLoader ActionScript only
+ NSV::PROP_ON_LOAD_START, // LOAD_START
+ NSV::PROP_ON_LOAD_ERROR, // LOAD_ERROR
+ NSV::PROP_ON_LOAD_PROGRESS, // LOAD_PROGRESS
+ NSV::PROP_ON_LOAD_INIT, // LOAD_INIT
+ // These are for the XMLSocket ActionScript only
+ NSV::PROP_ON_SOCK_CLOSE, // CLOSE
+ NSV::PROP_ON_SOCK_CONNECT, // CONNECT
+ NSV::PROP_ON_SOCK_DATA, // Data
+ NSV::PROP_ON_SOCK_XML, // XML
+ // These are for the XML ActionScript only
+ NSV::PROP_ON_XML_LOAD, // XML_LOAD
+ NSV::PROP_ON_XML_DATA, // XML_DATA
+ NSV::PROP_ON_TIMER, // setInterval Timer expired
+
+ NSV::PROP_ON_CONSTRUCT, // onConstruct
+ NSV::PROP_ON_SET_FOCUS, // onSetFocus
+ NSV::PROP_ON_KILL_FOCUS // onKillFocus
+ };
+
+ assert(m_id > INVALID && m_id < EVENT_COUNT);
+ return function_keys[m_id];
+}
+
bool
event_id::is_mouse_event() const
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/as_object.cpp server/but...,
Sandro Santilli <=