[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/button_character_instanc...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/button_character_instanc... |
Date: |
Mon, 31 Mar 2008 23:48:33 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 08/03/31 23:48:33
Modified files:
. : ChangeLog
server : button_character_instance.cpp
button_character_instance.h namedStrings.cpp
namedStrings.h
server/asobj : ClassHierarchy.cpp
testsuite/actionscript.all: Global.as
Log message:
"classify" Button.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6130&r2=1.6131
http://cvs.savannah.gnu.org/viewcvs/gnash/server/button_character_instance.cpp?cvsroot=gnash&r1=1.82&r2=1.83
http://cvs.savannah.gnu.org/viewcvs/gnash/server/button_character_instance.h?cvsroot=gnash&r1=1.35&r2=1.36
http://cvs.savannah.gnu.org/viewcvs/gnash/server/namedStrings.cpp?cvsroot=gnash&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/gnash/server/namedStrings.h?cvsroot=gnash&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/ClassHierarchy.cpp?cvsroot=gnash&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/Global.as?cvsroot=gnash&r1=1.50&r2=1.51
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6130
retrieving revision 1.6131
diff -u -b -r1.6130 -r1.6131
--- ChangeLog 31 Mar 2008 23:18:32 -0000 1.6130
+++ ChangeLog 31 Mar 2008 23:48:31 -0000 1.6131
@@ -1,5 +1,14 @@
2008-03-31 Sandro Santilli <address@hidden>
+ * server/button_character_instance.{cpp,h}: have buttons
+ share prototype.
+ * server/namedStrings.{cpp,h}: add CLASS_BUTTON
+ * server/asobj/ClassHierarchy.cpp: register Button as a global class.
+ * testsuite/actionscript.all/Global.as: test that Button exists and
+ is a function.
+
+2008-03-31 Sandro Santilli <address@hidden>
+
* server/as_object.{cpp,h}: const-correct setPropFlags (sorry
for big rebuild).
* server/asobj/Number.cpp: add missing properties, make all Number
Index: server/button_character_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/button_character_instance.cpp,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -b -r1.82 -r1.83
--- server/button_character_instance.cpp 6 Mar 2008 15:29:56 -0000
1.82
+++ server/button_character_instance.cpp 31 Mar 2008 23:48:32 -0000
1.83
@@ -36,6 +36,7 @@
#include "GnashException.h" // for shared ActionScript getter-setters
#include "ExecutableCode.h"
#include "namedStrings.h"
+#include "Object.h" // for getObjectInterface
/** \page buttons Buttons and mouse behaviour
@@ -167,6 +168,9 @@
namespace gnash {
+// Forward declarations
+static as_object* getButtonInterface();
+
/// A couple of typedefs to make code neater
typedef button_character_instance Button;
typedef boost::intrusive_ptr<Button> ButtonPtr;
@@ -244,7 +248,7 @@
{
assert(m_def);
- attachButtonInterface(*this);
+ set_prototype(getButtonInterface());
// check up presence Key events
// TODO: use a service of button_character_def, not this hard-coded
thing here
@@ -952,6 +956,43 @@
return m_def->getSWFVersion();
}
+static as_object*
+getButtonInterface()
+{
+ static boost::intrusive_ptr<as_object> proto;
+ if ( proto == NULL )
+ {
+ proto = new as_object(getObjectInterface());
+ VM::get().addStatic(proto.get());
+
+ attachButtonInterface(*proto);
+ }
+ return proto.get();
+}
+
+static as_value
+button_ctor(const fn_call& /* fn */)
+{
+ boost::intrusive_ptr<as_object> clip = new as_object(getButtonInterface());
+ return as_value(clip.get());
+}
+
+void
+button_class_init(as_object& global)
+{
+ // This is going to be the global Button "class"/"function"
+ static boost::intrusive_ptr<builtin_function> cl=NULL;
+
+ if ( cl == NULL )
+ {
+ cl=new builtin_function(&button_ctor, getButtonInterface());
+ VM::get().addStatic(cl.get());
+ }
+
+ // Register _global.MovieClip
+ global.init_member("Button", cl.get());
+}
+
} // end of namespace gnash
Index: server/button_character_instance.h
===================================================================
RCS file: /sources/gnash/gnash/server/button_character_instance.h,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -b -r1.35 -r1.36
--- server/button_character_instance.h 27 Mar 2008 10:50:14 -0000 1.35
+++ server/button_character_instance.h 31 Mar 2008 23:48:32 -0000 1.36
@@ -198,6 +198,9 @@
};
+/// Initialize the global Button class
+void button_class_init(as_object& global);
+
} // end namespace gnash
Index: server/namedStrings.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/namedStrings.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- server/namedStrings.cpp 6 Feb 2008 10:18:31 -0000 1.12
+++ server/namedStrings.cpp 31 Mar 2008 23:48:32 -0000 1.13
@@ -131,6 +131,7 @@
// string_table::svt( "Stage", NSV::CLASS_STAGE ), // Identical to
PROP_iSTAGE
string_table::svt( "MovieClip", NSV::CLASS_MOVIE_CLIP ),
string_table::svt( "TextField", NSV::CLASS_TEXT_FIELD ),
+ string_table::svt( "Button", NSV::CLASS_BUTTON ),
string_table::svt( "Math", NSV::CLASS_MATH ),
string_table::svt( "Boolean", NSV::CLASS_BOOLEAN ),
string_table::svt( "Color", NSV::CLASS_COLOR ),
Index: server/namedStrings.h
===================================================================
RCS file: /sources/gnash/gnash/server/namedStrings.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- server/namedStrings.h 6 Feb 2008 10:18:31 -0000 1.13
+++ server/namedStrings.h 31 Mar 2008 23:48:32 -0000 1.14
@@ -153,6 +153,7 @@
CLASS_SYSTEM,
CLASS_MOVIE_CLIP,
CLASS_TEXT_FIELD,
+ CLASS_BUTTON,
CLASS_MATH,
CLASS_BOOLEAN,
CLASS_COLOR,
Index: server/asobj/ClassHierarchy.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/ClassHierarchy.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- server/asobj/ClassHierarchy.cpp 31 Mar 2008 22:12:05 -0000 1.11
+++ server/asobj/ClassHierarchy.cpp 31 Mar 2008 23:48:32 -0000 1.12
@@ -20,6 +20,7 @@
#include "as_prop_flags.h"
#include "as_value.h"
#include "as_function.h" // for function_class_init
+#include "button_character_instance.h"
#include "array.h"
#include "AsBroadcaster.h"
#include "Boolean.h"
@@ -275,6 +276,7 @@
{ textfield_class_init, NSV::CLASS_TEXT_FIELD, 0, NSV::NS_FLASH_TEXT, 3
},
{ math_class_init, NSV::CLASS_MATH, 0, NS_GLOBAL, 4 },
{ boolean_class_init, NSV::CLASS_BOOLEAN, NSV::CLASS_OBJECT, NS_GLOBAL,
5 },
+ { button_class_init, NSV::CLASS_BUTTON, NSV::CLASS_OBJECT, NS_GLOBAL, 5
},
{ color_class_init, NSV::CLASS_COLOR, NSV::CLASS_OBJECT, NS_GLOBAL, 5 },
{ selection_class_init, NSV::CLASS_SELECTION, NSV::CLASS_OBJECT,
NS_UNKNOWN, 5 },
{ sound_class_init, NSV::CLASS_SOUND, NSV::CLASS_OBJECT,
NSV::NS_FLASH_MEDIA, 5 },
Index: testsuite/actionscript.all/Global.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/Global.as,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -b -r1.50 -r1.51
--- testsuite/actionscript.all/Global.as 26 Mar 2008 17:02:24 -0000
1.50
+++ testsuite/actionscript.all/Global.as 31 Mar 2008 23:48:33 -0000
1.51
@@ -22,9 +22,11 @@
// execute it like this gnash -1 -r 0 -v out.swf
-rcsid="$Id: Global.as,v 1.50 2008/03/26 17:02:24 bwy Exp $";
+rcsid="$Id: Global.as,v 1.51 2008/03/31 23:48:33 strk Exp $";
#include "check.as"
+check_equals(typeof(Button), 'function'); // random check
+
#if OUTPUT_VERSION > 5
check_equals(typeof(_global.updateAfterEvent), 'function');
check( ! _global.hasOwnProperty('updateAfterEvent') );
@@ -463,15 +465,15 @@
//------------------------------------------------------------
#if OUTPUT_VERSION == 5
- check_totals(152); // SWF5
+ check_totals(153); // SWF5
#else
# if OUTPUT_VERSION == 6
- check_totals(186); // SWF6
+ check_totals(187); // SWF6
# else
# if OUTPUT_VERSION == 7
- check_totals(168); // SWF7
+ check_totals(169); // SWF7
# else
- check_totals(155); // SWF8+
+ check_totals(156); // SWF8+
# endif
# endif
#endif