gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/trunk r11441: Register more natives; get


From: Benjamin Wolsey
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r11441: Register more natives; get the difference between them correct. More passes
Date: Wed, 26 Aug 2009 16:57:03 +0200
User-agent: Bazaar (1.16.1)

------------------------------------------------------------
revno: 11441 [merge]
committer: Benjamin Wolsey <address@hidden>
branch nick: trunk
timestamp: Wed 2009-08-26 16:57:03 +0200
message:
  Register more natives; get the difference between them correct. More passes
  in swfdec testsuite.
modified:
  libcore/Video.cpp
  libcore/Video.h
  libcore/asobj/Error_as.cpp
  libcore/asobj/Globals.cpp
  libcore/asobj/Object.cpp
  libcore/asobj/flash/accessibility/Accessibility_as.cpp
  libcore/asobj/flash/accessibility/Accessibility_as.h
  libcore/asobj/flash/filters/BitmapFilter_as.cpp
  libcore/asobj/flash/filters/BitmapFilter_as.h
  libcore/asobj/flash/media/Camera_as.cpp
  libcore/asobj/flash/media/Camera_as.h
  libcore/asobj/flash/media/Microphone_as.cpp
  libcore/asobj/flash/media/Microphone_as.h
  libcore/asobj/flash/media/Sound_as.cpp
  libcore/asobj/flash/media/Sound_as.h
  libcore/asobj/flash/net/LocalConnection_as.cpp
  libcore/asobj/flash/net/LocalConnection_as.h
  libcore/asobj/flash/net/XMLSocket_as.cpp
  libcore/asobj/flash/net/XMLSocket_as.h
  libcore/asobj/flash/text/TextSnapshot_as.cpp
  libcore/asobj/flash/text/TextSnapshot_as.h
  testsuite/swfdec/PASSING
=== modified file 'libcore/Video.cpp'
--- a/libcore/Video.cpp 2009-08-21 06:51:20 +0000
+++ b/libcore/Video.cpp 2009-08-26 12:15:53 +0000
@@ -26,6 +26,7 @@
 #include "NetStream_as.h"
 #include "Range2d.h"
 #include "builtin_function.h" // for getter/setter properties
+#include "NativeFunction.h" 
 #include "movie_root.h"
 #include "VM.h"
 #include "Object.h"
@@ -308,6 +309,15 @@
             getNamespace(uri));
 }
 
+void
+registerVideoNative(as_object& global)
+{
+    VM& vm = getVM(global);
+    vm.registerNative(video_ctor, 667, 0);
+    vm.registerNative(video_attach, 667, 1);
+    vm.registerNative(video_clear, 667, 2);
+}
+
 rect
 Video::getBounds() const
 {
@@ -348,9 +358,9 @@
 void
 attachVideoInterface(as_object& o)
 {
-    Global_as* gl = getGlobal(o);
-       o.init_member("attachVideo", gl->createFunction(video_attach));
-       o.init_member("clear", gl->createFunction(video_clear));
+    VM& vm = getVM(o);
+       o.init_member("attachVideo", vm.getNative(667, 1));
+       o.init_member("clear", vm.getNative(667, 2));
 }
 
 void

=== modified file 'libcore/Video.h'
--- a/libcore/Video.h   2009-08-20 12:19:38 +0000
+++ b/libcore/Video.h   2009-08-26 12:15:53 +0000
@@ -150,6 +150,8 @@
 
 void video_class_init(as_object& global, const ObjectURI& uri);
 
+void registerVideoNative(as_object& global);
+
 }      // end namespace gnash
 
 

=== modified file 'libcore/asobj/Error_as.cpp'
--- a/libcore/asobj/Error_as.cpp        2009-08-20 09:36:50 +0000
+++ b/libcore/asobj/Error_as.cpp        2009-08-26 14:29:24 +0000
@@ -59,7 +59,9 @@
 {
     Global_as* gl = getGlobal(o);
     int flags = 0;
+
     o.init_member("toString", gl->createFunction(error_toString), flags);
+    
     o.init_member("message", "Error", flags);
     o.init_member("name", "Error", flags);
 }

=== modified file 'libcore/asobj/Globals.cpp'
--- a/libcore/asobj/Globals.cpp 2009-08-21 06:43:48 +0000
+++ b/libcore/asobj/Globals.cpp 2009-08-26 14:29:24 +0000
@@ -56,6 +56,7 @@
 #include "flash/display/Bitmap_as.h"
 #include "flash/events/Event_as.h"
 #include "flash/events/EventDispatcher_as.h"
+#include "flash/filters/BitmapFilter_as.h"
 #include "flash/net/LocalConnection_as.h"
 #include "flash/net/XMLSocket_as.h"
 #include "flash/net/SharedObject_as.h"
@@ -200,7 +201,8 @@
 builtin_function*
 AVM1Global::createFunction(Global_as::ASFunction function)
 {
-    builtin_function* f = new builtin_function(*this, function);
+    as_object* proto = createObject(getObjectInterface());
+    builtin_function* f = new builtin_function(*this, function, proto);
     f->init_member(NSV::PROP_CONSTRUCTOR,
             as_function::getFunctionConstructor());
     return f;
@@ -476,7 +478,7 @@
            NSV::CLASS_OBJECT, NS_GLOBAL, 5))
         (N(loadvars_class_init, NSV::CLASS_LOAD_VARS, NSV::CLASS_OBJECT,
            NS_GLOBAL, 6))
-        (N(LocalConnection_as::init, NSV::CLASS_LOCALCONNECTION,
+        (N(localconnection_class_init, NSV::CLASS_LOCALCONNECTION,
            NSV::CLASS_OBJECT, NS_GLOBAL, 6))
         (N(customactions_class_init, NSV::CLASS_CUSTOM_ACTIONS,
            NSV::CLASS_OBJECT, NS_GLOBAL, 6))
@@ -602,7 +604,7 @@
            NSV::NS_FLASH_NET, 5))
         (N(sharedobject_class_init, NSV::CLASS_SHARED_OBJECT,
            NSV::CLASS_OBJECT, NSV::NS_FLASH_NET, 5))
-        (N(LocalConnection_as::init, NSV::CLASS_LOCALCONNECTION,
+        (N(localconnection_class_init, NSV::CLASS_LOCALCONNECTION,
            NSV::CLASS_OBJECT, NSV::NS_FLASH_NET, 6))
         (N(netconnection_class_init, NSV::CLASS_NET_CONNECTION,
            NSV::CLASS_OBJECT, NSV::NS_FLASH_NET, 6))
@@ -1330,10 +1332,19 @@
     registerColorNative(global);
     registerMathNative(global);
     registerSystemNative(global);
+    registerAccessibilityNative(global);
     registerStageNative(global);
+    registerVideoNative(global);
+    registerXMLSocketNative(global);
     registerSharedObjectNative(global);
     registerKeyboardNative(global);
     registerNetStreamNative(global);
+    registerCameraNative(global);
+    registerMicrophoneNative(global);
+    registerTextSnapshotNative(global);
+    registerSoundNative(global);
+    registerLocalConnectionNative(global);
+    registerBitmapFilterNative(global);
 
     AsBroadcaster::registerNative(global);
     TextFormat_as::registerNative(global);

=== modified file 'libcore/asobj/Object.cpp'
--- a/libcore/asobj/Object.cpp  2009-08-20 06:55:15 +0000
+++ b/libcore/asobj/Object.cpp  2009-08-26 14:29:24 +0000
@@ -148,14 +148,7 @@
 
        o.init_member("valueOf", vm.getNative(101, 3));
        o.init_member("toString", vm.getNative(101, 4));
-
-    as_object* lsProto = getObjectInterface();
-
-    // TODO: this is probably an abuse of the 'createClass' function, but it
-    // gets the correct results.
-       o.init_member("toLocaleString", 
-            gl->createClass(object_toLocaleString,
-                gl->createObject(lsProto)));
+       o.init_member("toLocaleString", 
gl->createFunction(object_toLocaleString));
 
        int swf6flags = PropFlags::dontEnum | 
         PropFlags::dontDelete | 

=== modified file 'libcore/asobj/flash/accessibility/Accessibility_as.cpp'
--- a/libcore/asobj/flash/accessibility/Accessibility_as.cpp    2009-08-13 
07:04:21 +0000
+++ b/libcore/asobj/flash/accessibility/Accessibility_as.cpp    2009-08-26 
11:45:37 +0000
@@ -1,4 +1,4 @@
-// Accessibility_as.cpp:  ActionScript "Accessibility" class, for Gnash.
+// accessibility_as.cpp:  ActionScript "Accessibility" class, for Gnash.
 //
 //   Copyright (C) 2009 Free Software Foundation, Inc.
 //
@@ -21,13 +21,14 @@
 #include "gnashconfig.h"
 #endif
 
-#include "accessibility/Accessibility_as.h"
+#include "Accessibility_as.h"
 #include "as_object.h" // for inheritance
 #include "log.h"
 #include "fn_call.h"
 #include "Global_as.h"
 #include "smart_ptr.h" // for boost intrusive_ptr
-#include "builtin_function.h" // need builtin_function
+#include "builtin_function.h"
+#include "NativeFunction.h"
 #include "Object.h" // for AS inheritance
 
 namespace gnash {
@@ -39,10 +40,10 @@
     void attachAccessibilityAS3StaticInterface(as_object& o);
     as_object* getAccessibilityInterface();
 
-    as_value Accessibility_isActive(const fn_call& fn);
-    as_value Accessibility_active(const fn_call& fn);
-    as_value Accessibility_updateProperties(const fn_call& fn);
-    as_value Accessibility_sendEvent(const fn_call& fn);
+    as_value accessibility_isActive(const fn_call& fn);
+    as_value accessibility_active(const fn_call& fn);
+    as_value accessibility_updateProperties(const fn_call& fn);
+    as_value accessibility_sendEvent(const fn_call& fn);
 }
 
 // extern (used by Global.cpp)
@@ -68,54 +69,60 @@
             getNamespace(uri));
 }
 
+void
+registerAccessibilityNative(as_object& global)
+{
+    VM& vm = getVM(global);
+    vm.registerNative(accessibility_isActive, 1999, 0);
+    vm.registerNative(accessibility_sendEvent, 1999, 1);
+    vm.registerNative(accessibility_updateProperties, 1999, 2);
+}
+
 namespace {
 
 void
 attachAccessibilityAS3StaticInterface(as_object& o)
 {
     Global_as* gl = getGlobal(o);
-    o.init_member("active", gl->createFunction(Accessibility_active));
+    o.init_member("active", gl->createFunction(accessibility_active));
 }
 
 void
 attachAccessibilityStaticInterface(as_object& o)
 {
-    Global_as* gl = getGlobal(o);
-    
     const int flags = PropFlags::dontDelete |
                       PropFlags::readOnly;
 
-    o.init_member("isActive",
-            gl->createFunction(Accessibility_isActive), flags);
-    o.init_member("sendEvent",
-            gl->createFunction(Accessibility_sendEvent), flags);
-    o.init_member("updateProperties",
-            gl->createFunction(Accessibility_updateProperties), flags);
+    VM& vm = getVM(o);
+
+    o.init_member("isActive", vm.getNative(1999, 0), flags);
+    o.init_member("sendEvent", vm.getNative(1999, 1), flags);
+    o.init_member("updateProperties", vm.getNative(1999, 2), flags);
 }
 
 as_value
-Accessibility_isActive(const fn_call& /*fn*/)
+accessibility_isActive(const fn_call& /*fn*/)
 {
     LOG_ONCE( log_unimpl (__FUNCTION__) );
     return as_value();
 }
 
 as_value
-Accessibility_active(const fn_call& /*fn*/)
+accessibility_active(const fn_call& /*fn*/)
 {
     LOG_ONCE( log_unimpl (__FUNCTION__) );
     return as_value(false);
 }
 
 as_value
-Accessibility_updateProperties(const fn_call& /*fn*/)
+accessibility_updateProperties(const fn_call& /*fn*/)
 {
     LOG_ONCE( log_unimpl (__FUNCTION__) );
     return as_value();
 }
 
 as_value
-Accessibility_sendEvent(const fn_call& /*fn*/)
+accessibility_sendEvent(const fn_call& /*fn*/)
 {
     LOG_ONCE( log_unimpl (__FUNCTION__) );
     return as_value();

=== modified file 'libcore/asobj/flash/accessibility/Accessibility_as.h'
--- a/libcore/asobj/flash/accessibility/Accessibility_as.h      2009-07-28 
11:58:27 +0000
+++ b/libcore/asobj/flash/accessibility/Accessibility_as.h      2009-08-26 
11:45:37 +0000
@@ -34,6 +34,8 @@
 /// Initialize the global Accessibility class
 void accessibility_class_init(as_object& where, const ObjectURI& uri);
 
+void registerAccessibilityNative(as_object& global);
+
 } // gnash namespace
 
 // GNASH_ASOBJ3_ACCESSIBILITY_H

=== modified file 'libcore/asobj/flash/filters/BitmapFilter_as.cpp'
--- a/libcore/asobj/flash/filters/BitmapFilter_as.cpp   2009-07-29 05:59:24 
+0000
+++ b/libcore/asobj/flash/filters/BitmapFilter_as.cpp   2009-08-26 14:29:24 
+0000
@@ -20,6 +20,7 @@
 #include "BitmapFilter.h"
 #include "VM.h"
 #include "builtin_function.h"
+#include "NativeFunction.h"
 #include "Object.h"
 #include "Global_as.h"
 
@@ -53,6 +54,13 @@
                    flags, getNamespace(uri));
 }
 
+void
+registerBitmapFilterNative(as_object& global)
+{
+    VM& vm = getVM(global);
+    vm.registerNative(bitmapfilter_clone, 1112, 1);
+}
+
 as_object*
 getBitmapFilterInterface()
 {
@@ -70,9 +78,9 @@
 void
 attachBitmapFilterInterface(as_object& o)
 {
-    const int flags = 0;
-    Global_as* gl = getGlobal(o);
-    o.init_member("clone", gl->createFunction(bitmapfilter_clone), flags);
+    const int flags = PropFlags::onlySWF8Up;
+    VM& vm = getVM(o);
+    o.init_member("clone", vm.getNative(1112, 1), flags);
 }
 
 as_value

=== modified file 'libcore/asobj/flash/filters/BitmapFilter_as.h'
--- a/libcore/asobj/flash/filters/BitmapFilter_as.h     2009-07-28 11:58:27 
+0000
+++ b/libcore/asobj/flash/filters/BitmapFilter_as.h     2009-08-26 14:29:24 
+0000
@@ -31,6 +31,8 @@
 /// Initialize the global BitmapFilter class
 void bitmapfilter_class_init(as_object& where, const ObjectURI& uri);
 
+void registerBitmapFilterNative(as_object& global);
+
 /// Get the interface, for inheritance.
 as_object *getBitmapFilterInterface();
 

=== modified file 'libcore/asobj/flash/media/Camera_as.cpp'
--- a/libcore/asobj/flash/media/Camera_as.cpp   2009-08-18 08:36:49 +0000
+++ b/libcore/asobj/flash/media/Camera_as.cpp   2009-08-26 12:15:53 +0000
@@ -26,9 +26,10 @@
 #include "log.h"
 #include "fn_call.h"
 #include "Global_as.h"
-#include "smart_ptr.h" // for boost intrusive_ptr
-#include "builtin_function.h" // need builtin_function
-#include "Object.h" // for getObjectInterface
+#include "smart_ptr.h" 
+#include "builtin_function.h" 
+#include "NativeFunction.h" 
+#include "Object.h" 
 #include "Array_as.h"
 #include <sstream>
 
@@ -74,14 +75,10 @@
     
     const int flags = 0;
 
-    // get() is a function with an Object() as prototype.
-    as_object* proto = gl->createObject(getObjectInterface());
-
-    // TODO: avoid the creative abuse of createClass.
-       o.init_member("get", gl->createClass(camera_get, proto), flags);
-
-    boost::intrusive_ptr<builtin_function> getset =
-        gl->createFunction(camera_names);
+       o.init_member("get", gl->createFunction(camera_get), flags);
+
+    VM& vm = getVM(o);
+    NativeFunction* getset = vm.getNative(2102, 201);
     o.init_property("names", *getset, *getset);
 
 }
@@ -96,15 +93,16 @@
 static void
 attachCameraInterface(as_object& o)
 {
-    Global_as* gl = getGlobal(o);
     
-    o.init_member("setMode", gl->createFunction(camera_setmode));
-    o.init_member("setMotionLevel", gl->createFunction(camera_setmotionlevel));
-    o.init_member("setQuality", gl->createFunction(camera_setquality));
-    o.init_member("setCursor", gl->createFunction(camera_setCursor));
-    o.init_member("setLoopback", gl->createFunction(camera_setLoopback));
-    o.init_member("setKeyFrameInterval",
-            gl->createFunction(camera_setKeyFrameInterval));
+    const int flags = as_object::DefaultFlags | PropFlags::onlySWF6Up;
+
+    VM& vm = getVM(o);
+    o.init_member("setMode", vm.getNative(2102, 0), flags);
+    o.init_member("setQuality", vm.getNative(2102, 1), flags);
+    o.init_member("setKeyFrameInterval", vm.getNative(2102, 2), flags);
+    o.init_member("setMotionLevel", vm.getNative(2102, 3), flags);
+    o.init_member("setLoopback", vm.getNative(2102, 4), flags);
+    o.init_member("setCursor", vm.getNative(2102, 5), flags);
 
 }
 
@@ -754,6 +752,18 @@
 
 }
 
+void
+registerCameraNative(as_object& global)
+{
+    VM& vm = getVM(global);
+    vm.registerNative(camera_names, 2102, 201);
+    vm.registerNative(camera_setmode, 2102, 0);
+    vm.registerNative(camera_setquality, 2102, 1);
+    vm.registerNative(camera_setKeyFrameInterval, 2102, 2);
+    vm.registerNative(camera_setmotionlevel, 2102, 3);
+    vm.registerNative(camera_setLoopback, 2102, 4);
+    vm.registerNative(camera_setCursor, 2102, 5);
+}
 
 } // end of gnash namespace
 

=== modified file 'libcore/asobj/flash/media/Camera_as.h'
--- a/libcore/asobj/flash/media/Camera_as.h     2009-08-12 15:25:48 +0000
+++ b/libcore/asobj/flash/media/Camera_as.h     2009-08-26 12:15:53 +0000
@@ -17,10 +17,8 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
-#ifndef __GNASH_ASOBJ_CAMERA_H__
-#define __GNASH_ASOBJ_CAMERA_H__
-
-#include <memory> // for auto_ptr
+#ifndef GNASH_ASOBJ_CAMERA_H
+#define GNASH_ASOBJ_CAMERA_H
 
 #ifdef HAVE_CONFIG_H
 #include "gnashconfig.h"
@@ -34,20 +32,10 @@
 /// Initialize the global Camera class
 void camera_class_init(as_object& where, const ObjectURI& uri);
 
-#ifdef USE_GST
-class camera_as_object;
-#endif
-
-#ifdef USE_FFMPEG
-class camera_as_object;
-#endif
-
-/// Return a Camera instance (in case the core lib needs it)
-//std::auto_ptr<as_object> init_camera_instance();
-  
+void registerCameraNative(as_object& global);
+
 } // end of gnash namespace
 
-// __GNASH_ASOBJ_CAMERA_H__
 #endif
 
 

=== modified file 'libcore/asobj/flash/media/Microphone_as.cpp'
--- a/libcore/asobj/flash/media/Microphone_as.cpp       2009-08-18 15:24:05 
+0000
+++ b/libcore/asobj/flash/media/Microphone_as.cpp       2009-08-26 12:15:53 
+0000
@@ -27,7 +27,8 @@
 #include "fn_call.h"
 #include "Global_as.h"
 #include "smart_ptr.h" // for boost intrusive_ptr
-#include "builtin_function.h" // need builtin_function
+#include "builtin_function.h"
+#include "NativeFunction.h"
 #include "Object.h" // for getObjectInterface
 #include "Array_as.h"
 #include <cmath>
@@ -69,14 +70,10 @@
 
     const int flags = 0;
 
-    // get() is a function with an Object() as prototype.
-    as_object* proto = gl->createObject(getObjectInterface());
-
-    // TODO: avoid the creative abuse of createClass.
-       o.init_member("get", gl->createClass(microphone_get, proto), flags);
-
-    boost::intrusive_ptr<builtin_function> getset =
-        gl->createFunction(microphone_names);
+       o.init_member("get", gl->createFunction(microphone_get), flags);
+ 
+    VM& vm = getVM(o);   
+    NativeFunction* getset = vm.getNative(2102, 201);
     o.init_property("names", *getset, *getset);
 }
 
@@ -119,14 +116,15 @@
 static void
 attachMicrophoneInterface(as_object& o)
 {
-    Global_as* gl = getGlobal(o);
-
-       o.init_member("setGain", gl->createFunction(microphone_setgain));
-       o.init_member("setRate", gl->createFunction(microphone_setrate));
-       o.init_member("setSilenceLevel",
-            gl->createFunction(microphone_setsilencelevel));
-       o.init_member("setUseEchoSuppression",
-            gl->createFunction(microphone_setuseechosuppression));
+
+    VM& vm = getVM(o);
+
+    const int flags = as_object::DefaultFlags | PropFlags::onlySWF6Up;
+
+       o.init_member("setSilenceLevel", vm.getNative(2104, 0), flags);
+       o.init_member("setRate", vm.getNative(2104, 1), flags);
+       o.init_member("setGain", vm.getNative(2104, 2), flags);
+       o.init_member("setUseEchoSuppression", vm.getNative(2104, 3), flags);
     
 }
 
@@ -639,5 +637,16 @@
 
 }
 
+void
+registerMicrophoneNative(as_object& global)
+{
+    VM& vm = getVM(global);
+    vm.registerNative(microphone_names, 2104, 201);
+    vm.registerNative(microphone_setsilencelevel, 2104, 0);
+    vm.registerNative(microphone_setrate, 2104, 1);
+    vm.registerNative(microphone_setgain, 2104, 2);
+    vm.registerNative(microphone_setuseechosuppression, 2104, 3);
+}
+
 
 } // end of gnash namespace

=== modified file 'libcore/asobj/flash/media/Microphone_as.h'
--- a/libcore/asobj/flash/media/Microphone_as.h 2009-07-28 11:58:27 +0000
+++ b/libcore/asobj/flash/media/Microphone_as.h 2009-08-26 12:15:53 +0000
@@ -16,10 +16,8 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
-#ifndef __GNASH_ASOBJ_MICROPHONE_H__
-#define __GNASH_ASOBJ_MICROPHONE_H__
-
-#include <memory> // for auto_ptr
+#ifndef GNASH_ASOBJ_MICROPHONE_H
+#define GNASH_ASOBJ_MICROPHONE_H
 
 namespace gnash {
 
@@ -29,10 +27,8 @@
 /// Initialize the global Microphone class
 void microphone_class_init(as_object& where, const ObjectURI& uri);
 
-/// Return a Microphone instance (in case the core lib needs it)
-//std::auto_ptr<as_object> init_microphone_instance();
-  
+void registerMicrophoneNative(as_object& global);
+
 } // end of gnash namespace
 
-// __GNASH_ASOBJ_MICROPHONE_H__
 #endif

=== modified file 'libcore/asobj/flash/media/Sound_as.cpp'
--- a/libcore/asobj/flash/media/Sound_as.cpp    2009-08-21 07:09:32 +0000
+++ b/libcore/asobj/flash/media/Sound_as.cpp    2009-08-26 14:29:24 +0000
@@ -33,6 +33,7 @@
 #include "Global_as.h"
 #include "GnashException.h" // for ActionException
 #include "builtin_function.h" // need builtin_function
+#include "NativeFunction.h" // need builtin_function
 #include "smart_ptr.h" // for boost intrusive_ptr
 #include "Object.h"
 #include "VM.h"
@@ -129,6 +130,29 @@
 
 }
 
+void
+registerSoundNative(as_object& global)
+{
+    VM& vm = getVM(global);
+    vm.registerNative(sound_getpan, 500, 0);
+    vm.registerNative(sound_gettransform, 500, 1);
+    vm.registerNative(sound_getvolume, 500, 2);
+    vm.registerNative(sound_setpan, 500, 3);
+    vm.registerNative(sound_settransform, 500, 4);
+    vm.registerNative(sound_setvolume, 500, 5);
+    vm.registerNative(sound_stop, 500, 6);
+    vm.registerNative(sound_attachsound, 500, 7);
+    vm.registerNative(sound_start, 500, 8);
+    vm.registerNative(sound_getDuration, 500, 9);
+    vm.registerNative(sound_setDuration, 500, 10);
+    vm.registerNative(sound_getPosition, 500, 11);
+    vm.registerNative(sound_setPosition, 500, 12);
+    vm.registerNative(sound_loadsound, 500, 13);
+    vm.registerNative(sound_getbytesloaded, 500, 14);
+    vm.registerNative(sound_getbytestotal, 500, 15);
+    vm.registerNative(sound_areSoundsInaccessible, 500, 16);
+}
+
 /*private*/
 void
 Sound_as::startProbeTimer()
@@ -704,48 +728,38 @@
 void
 attachSoundInterface(as_object& o)
 {
-    Global_as* gl = getGlobal(o);
 
     int flags = PropFlags::dontEnum | 
                 PropFlags::dontDelete | 
                 PropFlags::readOnly;
 
-    o.init_member("attachSound", gl->createFunction(sound_attachsound),
-            flags);
-    o.init_member("getPan", gl->createFunction(sound_getpan), flags);
-    o.init_member("setPan", gl->createFunction(sound_setpan), flags);
-    o.init_member("start", gl->createFunction(sound_start), flags);
-    o.init_member("stop", gl->createFunction(sound_stop), flags);
-    o.init_member("getTransform", gl->createFunction(sound_gettransform),
-            flags);
-    o.init_member("setTransform", gl->createFunction(sound_settransform),
-            flags);
-    o.init_member("getVolume", gl->createFunction(sound_getvolume), flags);
-    o.init_member("setVolume", gl->createFunction(sound_setvolume), flags);
+    VM& vm = getVM(o);
+    o.init_member("getPan", vm.getNative(500, 0), flags);
+    o.init_member("getTransform", vm.getNative(500, 1), flags);
+    o.init_member("getVolume", vm.getNative(500, 2), flags);
+    o.init_member("setPan", vm.getNative(500, 3), flags);
+    o.init_member("setTransform", vm.getNative(500, 4), flags);
+    o.init_member("setVolume", vm.getNative(500, 5), flags);
+    o.init_member("stop", vm.getNative(500, 6), flags);
+    o.init_member("attachSound", vm.getNative(500, 7), flags);
+    o.init_member("start", vm.getNative(500, 8), flags);
 
     int flagsn6 = flags | PropFlags::onlySWF6Up;
 
-    o.init_member("getDuration", 
-            gl->createFunction(sound_getDuration), flagsn6);
-    o.init_member("setDuration", 
-            gl->createFunction(sound_setDuration), flagsn6);
-    o.init_member("loadSound", gl->createFunction(sound_loadsound), flagsn6);
-    o.init_member("getPosition", 
-            gl->createFunction(sound_getPosition), flagsn6);
-    o.init_member("setPosition", 
-            gl->createFunction(sound_setPosition), flagsn6);
-    o.init_member("getBytesLoaded", 
-            gl->createFunction(sound_getbytesloaded), flagsn6);
-    o.init_member("getBytesTotal", 
-            gl->createFunction(sound_getbytestotal), flagsn6);
+    o.init_member("getDuration", vm.getNative(500, 9), flagsn6);
+    o.init_member("setDuration", vm.getNative(500, 10), flagsn6);
+    o.init_member("getPosition", vm.getNative(500, 11), flagsn6); 
+    o.init_member("setPosition", vm.getNative(500, 12), flagsn6);
+    o.init_member("loadSound", vm.getNative(500, 13), flagsn6);
+    o.init_member("getBytesLoaded", vm.getNative(500, 14), flagsn6); 
+    o.init_member("getBytesTotal", vm.getNative(500, 15), flagsn6);
 
     int flagsn9 = PropFlags::dontEnum | 
                   PropFlags::dontDelete | 
                   PropFlags::readOnly | 
                   PropFlags::onlySWF9Up;
 
-    o.init_member("areSoundsInaccessible", 
-            gl->createFunction(sound_areSoundsInaccessible), flagsn9);
+    o.init_member("areSoundsInaccessible", vm.getNative(500, 16), flagsn9);
 
     // Properties
     //there's no such thing as an ID3 member (swfdec shows)

=== modified file 'libcore/asobj/flash/media/Sound_as.h'
--- a/libcore/asobj/flash/media/Sound_as.h      2009-08-21 07:09:32 +0000
+++ b/libcore/asobj/flash/media/Sound_as.h      2009-08-26 14:29:24 +0000
@@ -189,6 +189,8 @@
 
 void sound_class_init(as_object& where, const ObjectURI& uri);
 
+void registerSoundNative(as_object& global);
+
 } // gnash namespace
 
 // GNASH_ASOBJ3_SOUND_H

=== modified file 'libcore/asobj/flash/net/LocalConnection_as.cpp'
--- a/libcore/asobj/flash/net/LocalConnection_as.cpp    2009-08-18 09:38:13 
+0000
+++ b/libcore/asobj/flash/net/LocalConnection_as.cpp    2009-08-26 14:29:24 
+0000
@@ -23,11 +23,6 @@
 #endif
 
 #include "GnashSystemIOHeaders.h"
-#include <cerrno>
-#include <cstring>
-#include <boost/cstdint.hpp> // for boost::?int??_t
-#include <boost/assign/list_of.hpp>
-#include <boost/bind.hpp>
 
 #include "VM.h"
 #include "movie_root.h"
@@ -39,12 +34,18 @@
 #include "fn_call.h"
 #include "Global_as.h"
 #include "builtin_function.h"
+#include "NativeFunction.h"
 #include "amf.h"
 #include "lcshm.h"
 #include "Object.h" // for getObjectInterface
 #include "namedStrings.h"
 #include "StringPredicates.h"
 
+#include <cerrno>
+#include <cstring>
+#include <boost/cstdint.hpp> // for boost::?int??_t
+#include <boost/assign/list_of.hpp>
+#include <boost/bind.hpp>
 using namespace amf;
 
 // http://www.osflash.org/localconnection
@@ -87,29 +88,63 @@
 namespace {
     as_value localconnection_connect(const fn_call& fn);
     as_value localconnection_domain(const fn_call& fn);
+    as_value localconnection_send(const fn_call& fn);
     as_value localconnection_new(const fn_call& fn);
+    as_value localconnection_close(const fn_call& fn);
 
     bool validFunctionName(const std::string& func);
 
+    void attachLocalConnectionInterface(as_object& o);
     as_object* getLocalConnectionInterface();
 }
-
+  
 // \class LocalConnection_as
 /// \brief Open a connection between two SWF movies so they can send
 /// each other Flash Objects to be executed.
 ///
-LocalConnection_as::LocalConnection_as()
+/// TODO: don't use multiple inheritance.
+class LocalConnection_as : public ActiveRelay, public amf::LcShm
+{
+
+public:
+
+    LocalConnection_as(as_object* owner);
+    virtual ~LocalConnection_as() {}
+
+    void close();
+
+    const std::string& domain() {
+        return _domain;
+    }
+
+    const std::string& name() { return _name; };
+
+    // TODO: implement this to check for changes.
+    virtual void update() {}
+
+private:
+    
+    /// Work out the domain.
+    //
+    /// Called once on construction to set _domain, though it will do
+    /// no harm to call it again.
+    std::string getDomain();
+    
+    std::string _name;
+
+    // The immutable domain of this LocalConnection_as, based on the 
+    // originating SWF's domain.
+    const std::string _domain;
+    
+};
+
+LocalConnection_as::LocalConnection_as(as_object* owner)
     :
-    as_object(getLocalConnectionInterface()),    
+    ActiveRelay(owner),
     _domain(getDomain())
 {
     log_debug("The domain for this host is: %s", _domain);
     setconnected(false);
-    
-}
-
-LocalConnection_as::~LocalConnection_as()
-{
 }
 
 /// \brief Closes (disconnects) the LocalConnection object.
@@ -167,7 +202,7 @@
 LocalConnection_as::getDomain()
 {
     
-    URL url(getRoot(*this).getOriginalURL());
+    URL url(getRoot(owner()).getOriginalURL());
 
     if (url.hostname().empty()) {
         return "localhost";
@@ -176,7 +211,7 @@
     // Adjust the name based on the swf version. Prior to v7, the nodename part
     // was removed. For v7 or later. the full hostname is returned. The
     // localhost is always just the localhost.
-    if (getSWFVersion(*this) > 6) {
+    if (getSWFVersion(owner()) > 6) {
         return url.hostname();
     }
 
@@ -205,18 +240,20 @@
 }
 
 void
-LocalConnection_as::init(as_object& glob, const ObjectURI& uri)
-{
-    // This is going to be the global Number "class"/"function"
-    Global_as* gl = getGlobal(glob);
-    as_object* proto = getLocalConnectionInterface();
-    as_object* cl = gl->createClass(&localconnection_new, proto);
-
-    int swf6flags = PropFlags::dontEnum | 
-                    PropFlags::dontDelete | 
-                    PropFlags::onlySWF6Up;
-
-    glob.init_member(gnash::getName(uri), cl, swf6flags, getNamespace(uri));
+localconnection_class_init(as_object& where, const ObjectURI& uri)
+{
+    registerBuiltinClass(where, localconnection_new,
+            attachLocalConnectionInterface, 0, uri);
+}
+
+void
+registerLocalConnectionNative(as_object& global)
+{
+    VM& vm = getVM(global);
+    vm.registerNative(localconnection_connect, 2200, 0);
+    vm.registerNative(localconnection_send, 2200, 1);
+    vm.registerNative(localconnection_close, 2200, 2);
+    vm.registerNative(localconnection_domain, 2200, 3);
 }
 
 
@@ -225,22 +262,22 @@
 
 /// Instantiate a new LocalConnection object within a flash movie
 as_value
-localconnection_new(const fn_call& /* fn */)
+localconnection_new(const fn_call& fn)
 {
-    LocalConnection_as *obj = new LocalConnection_as;
-
-    return as_value(obj);
+    // TODO: this doesn't happen on construction.
+    as_object* obj = ensureType<as_object>(fn.this_ptr).get();
+    obj->setRelay(new LocalConnection_as(obj));
+    return as_value();
 }
 
 /// The callback for LocalConnection::close()
 as_value
 localconnection_close(const fn_call& fn)
 {
-    
-    boost::intrusive_ptr<LocalConnection_as> ptr =
-        ensureType<LocalConnection_as>(fn.this_ptr);
-    
-    ptr->close();
+    LocalConnection_as* relay =
+        ensureNativeType<LocalConnection_as>(fn.this_ptr);
+    
+    relay->close();
     return as_value();
 }
 
@@ -248,11 +285,11 @@
 as_value
 localconnection_connect(const fn_call& fn)
 {
-    boost::intrusive_ptr<LocalConnection_as> ptr =
-        ensureType<LocalConnection_as>(fn.this_ptr);
+    LocalConnection_as* relay =
+        ensureNativeType<LocalConnection_as>(fn.this_ptr);
 
     // If already connected, don't try again until close() is called.
-    if (ptr->getconnected()) return false;
+    if (relay->getconnected()) return false;
 
     if (!fn.nargs) {
         IF_VERBOSE_ASCODING_ERRORS(
@@ -270,18 +307,15 @@
         return as_value(false);
     }
     
-    std::string connection_name;
-    //connection_name=fn.arg(0).to_string();
-    //log_debug("The arg(0) is: %s", connection_name);
-    
-    if (fn.arg(0).to_string()=="") {
+    if (fn.arg(0).to_string().empty()) {
         return as_value(false);
     }
-           connection_name = ptr->domain();    
-        connection_name +=":";
-        connection_name += fn.arg(0).to_string();
+
+    std::string connection_name = relay->domain();    
+    connection_name +=":";
+    connection_name += fn.arg(0).to_string();
    
-    ptr->connect(connection_name);
+    relay->connect(connection_name);
 
     // We don't care whether connected or not.
     return as_value(true);
@@ -291,10 +325,10 @@
 as_value
 localconnection_domain(const fn_call& fn)
 {
-    boost::intrusive_ptr<LocalConnection_as> ptr =
-        ensureType<LocalConnection_as>(fn.this_ptr);
+    LocalConnection_as* relay =
+        ensureNativeType<LocalConnection_as>(fn.this_ptr);
 
-    return as_value(ptr->domain());
+    return as_value(relay->domain());
 }
 
 /// LocalConnection.send()
@@ -303,8 +337,8 @@
 as_value
 localconnection_send(const fn_call& fn)
 {
-    boost::intrusive_ptr<LocalConnection_as> ptr =
-        ensureType<LocalConnection_as>(fn.this_ptr);
+    LocalConnection_as* relay =
+        ensureNativeType<LocalConnection_as>(fn.this_ptr);
 
     // At least 2 args (connection name, function) required.
 
@@ -344,24 +378,19 @@
         return as_value(false);
     }
 
-//Si added
-    int numarg=fn.nargs;
-    for (int i=0; i!=numarg; i++)
-        log_debug(_(" *** The value of the arg[ %d ] : %s 
***"),i,fn.arg(i).to_string() ); 
     
-    const std::string & connectionName= fn.arg(0).to_string();
-    const std::string & methodName=     fn.arg(1).to_string();
+    const std::string& connectionName = fn.arg(0).to_string();
+    const std::string& methodName = fn.arg(1).to_string();
         
-    std::vector< amf::Element * >  argument_to_send;
+    std::vector<amf::Element*> argument_to_send;
     
-    for (int i=2; i!=numarg; i++){
+    const size_t numargs = fn.nargs;
+    for (size_t i = 2; i != numargs; ++i) {
         amf::Element* temp_ptr = fn.arg(i).to_element().get();
         argument_to_send.push_back(temp_ptr);
     }
     
-    ptr->amf::LcShm::send(connectionName,methodName,argument_to_send);
-//end of Si added
-
+    relay->amf::LcShm::send(connectionName, methodName, argument_to_send);
 
     // Now we have a valid call.
 
@@ -385,28 +414,11 @@
 void
 attachLocalConnectionInterface(as_object& o)
 {
-    Global_as* gl = getGlobal(o);
-    o.init_member("close", gl->createFunction(localconnection_close));
-    o.init_member("connect", gl->createFunction(localconnection_connect));
-    o.init_member("domain", gl->createFunction(localconnection_domain));
-    o.init_member("send", gl->createFunction(localconnection_send));
-}
-
-as_object*
-getLocalConnectionInterface()
-{
-
-    static boost::intrusive_ptr<as_object> o;
-
-    if ( o == NULL )
-    {
-        o = new as_object(getObjectInterface());
-        VM::get().addStatic(o.get());
-
-        attachLocalConnectionInterface(*o);
-    }
-
-    return o.get();
+    VM& vm = getVM(o);
+    o.init_member("connect", vm.getNative(2200, 0));
+    o.init_member("send", vm.getNative(2200, 1));
+    o.init_member("close", vm.getNative(2200, 2));
+    o.init_member("domain", vm.getNative(2200, 3));
 }
 
 /// These names are invalid as a function name.

=== modified file 'libcore/asobj/flash/net/LocalConnection_as.h'
--- a/libcore/asobj/flash/net/LocalConnection_as.h      2009-07-24 19:47:25 
+0000
+++ b/libcore/asobj/flash/net/LocalConnection_as.h      2009-08-26 14:29:24 
+0000
@@ -18,58 +18,14 @@
 #ifndef GNASH_ASOBJ_LOCALCONNECTION_H
 #define GNASH_ASOBJ_LOCALCONNECTION_H
 
-#include <string>
-#include <map>
-#include <boost/cstdint.hpp> 
-
-#include "as_object.h" // for inheritance
-#include "fn_call.h"
-#include "lcshm.h"
-
 namespace gnash {
-  
-class LocalConnection_as : public as_object, public amf::LcShm
-{
-
-public:
-
-    LocalConnection_as();
-    ~LocalConnection_as();
-
-    void close();
-
-//    void connect(const std::string& name);
-
-    const std::string& domain() {
-        return _domain;
-    }
-
-   // send(const string &  name , const string &  domainname 
,vector<boost::shared_ptr<amf::Element> >  & data )
-
-    const std::string& name() { return _name; };
-
-//  Moved to lcshm class
-//  bool connected() { return _connected; };
-    
-    static void init(as_object& glob, const ObjectURI& uri);
-
-private:
-    
-    /// Work out the domain.
-    //
-    /// Called once on construction to set _domain, though it will do
-    /// no harm to call it again.
-    std::string getDomain();
-    
-//  Moved to lcshm class       
-//  bool _connected;
-    std::string _name;
-
-    // The immutable domain of this LocalConnection_as, based on the 
-    // originating SWF's domain.
-    const std::string _domain;
-    
-};
+
+class as_object;
+class ObjectURI;
+
+void registerLocalConnectionNative(as_object& global);
+
+void localconnection_class_init(as_object& where, const ObjectURI& uri);
 
 } // end of gnash namespace
 

=== modified file 'libcore/asobj/flash/net/XMLSocket_as.cpp'
--- a/libcore/asobj/flash/net/XMLSocket_as.cpp  2009-08-21 12:58:03 +0000
+++ b/libcore/asobj/flash/net/XMLSocket_as.cpp  2009-08-26 12:15:53 +0000
@@ -31,6 +31,7 @@
 #include "Global_as.h"
 #include "VM.h"
 #include "builtin_function.h" 
+#include "NativeFunction.h" 
 #include "URLAccessManager.h"
 #include "Object.h" // for getObjectInterface
 #include "Global_as.h" 
@@ -422,6 +423,14 @@
             0, uri);
 }
 
+void
+registerXMLSocketNative(as_object& global)
+{
+    VM& vm = getVM(global);
+    vm.registerNative(xmlsocket_connect, 400, 0);
+    vm.registerNative(xmlsocket_send, 400, 1);
+    vm.registerNative(xmlsocket_close, 400, 2);
+}
 
 namespace {
 
@@ -557,20 +566,14 @@
 void
 attachXMLSocketInterface(as_object& o)
 {
+
+    VM& vm = getVM(o);
+    o.init_member("connect", vm.getNative(400, 0));
+    o.init_member("send", vm.getNative(400, 1));
+    o.init_member("close", vm.getNative(400, 2));
+
     Global_as* gl = getGlobal(o);
-    o.init_member("connect", gl->createFunction(xmlsocket_connect));
-    o.init_member("send", gl->createFunction(xmlsocket_send));
-    o.init_member("close", gl->createFunction(xmlsocket_close));
-
-
-    // all this crap to satisfy swfdec testsuite... (xml-socket-properties*)
-    as_object* onDataIface = new as_object(getObjectInterface());
-
-    // It's not really a class, but a constructor function with an object
-    // prototype, so looks in every way like an AS2 class.
-    as_object* onDataFun = gl->createClass(xmlsocket_onData, onDataIface);
-    o.init_member("onData", onDataFun);
-    onDataIface->init_member(NSV::PROP_CONSTRUCTOR, onDataFun);
+    o.init_member("onData", gl->createFunction(xmlsocket_onData));
 }
 
 } // anonymous namespace

=== modified file 'libcore/asobj/flash/net/XMLSocket_as.h'
--- a/libcore/asobj/flash/net/XMLSocket_as.h    2009-07-28 11:58:27 +0000
+++ b/libcore/asobj/flash/net/XMLSocket_as.h    2009-08-26 12:15:53 +0000
@@ -34,6 +34,8 @@
 /// Initialize the global XMLSocket class
 void xmlsocket_class_init(as_object& where, const ObjectURI& uri);
 
+void registerXMLSocketNative(as_object& global);
+
 } // gnash namespace
 
 // GNASH_ASOBJ3_XMLSOCKET_H

=== modified file 'libcore/asobj/flash/text/TextSnapshot_as.cpp'
--- a/libcore/asobj/flash/text/TextSnapshot_as.cpp      2009-07-29 05:40:20 
+0000
+++ b/libcore/asobj/flash/text/TextSnapshot_as.cpp      2009-08-26 14:29:24 
+0000
@@ -29,7 +29,8 @@
 #include "fn_call.h"
 #include "Global_as.h"
 #include "smart_ptr.h" // for boost intrusive_ptr
-#include "builtin_function.h" // need builtin_function
+#include "builtin_function.h" 
+#include "NativeFunction.h"
 #include "Object.h" // for getObjectInterface
 #include "StaticText.h"
 #include "DisplayList.h"
@@ -72,20 +73,19 @@
 }
 
 // extern (used by Global.cpp)
-void TextSnapshot_as::init(as_object& where, const ObjectURI& uri)
+void
+TextSnapshot_as::init(as_object& where, const ObjectURI& uri)
 {
+
     static boost::intrusive_ptr<as_object> cl;
-
     if (!cl) {
         Global_as* gl = getGlobal(where);
         as_object* proto = getTextSnapshotInterface();
         cl = gl->createClass(&textsnapshot_ctor, proto);
         attachTextSnapshotStaticInterface(*cl);
-    }
-
-    // Register _global.TextSnapshot
-    where.init_member(getName(uri), cl.get(), as_object::DefaultFlags,
-            getNamespace(uri));
+   }
+   where.init_member(getName(uri), cl.get(), as_object::DefaultFlags,
+               getNamespace(uri));
 }
 
 /// The member _textFields is initialized here unnecessarily to show
@@ -354,6 +354,23 @@
 
 }
 
+void
+registerTextSnapshotNative(as_object& global)
+{
+    VM& vm = getVM(global);
+    vm.registerNative(textsnapshot_ctor, 1067, 0);
+    vm.registerNative(textsnapshot_getCount, 1067, 1);
+    vm.registerNative(textsnapshot_setSelected, 1067, 2);
+    vm.registerNative(textsnapshot_getSelected, 1067, 3);
+    vm.registerNative(textsnapshot_getText, 1067, 4);
+    vm.registerNative(textsnapshot_getSelectedText, 1067, 5);
+    vm.registerNative(textsnapshot_hitTestTextNearPos, 1067, 6);
+    vm.registerNative(textsnapshot_findText, 1067, 7);
+    vm.registerNative(textsnapshot_setSelectColor, 1067, 8);
+    vm.registerNative(textsnapshot_getTextRunInfo, 1067, 9);
+
+}
+
 namespace {
 
 class TextFinder
@@ -399,25 +416,16 @@
 
     const int flags = PropFlags::onlySWF6Up;
 
-    Global_as* gl = getGlobal(o);
-       o.init_member("findText", gl->createFunction(textsnapshot_findText),
-            flags);
-       o.init_member("getCount", gl->createFunction(textsnapshot_getCount),
-            flags);
-       o.init_member("getTextRunInfo",
-            gl->createFunction(textsnapshot_getTextRunInfo), flags);
-       o.init_member("getSelected",
-            gl->createFunction(textsnapshot_getSelected), flags);
-       o.init_member("getSelectedText",
-            gl->createFunction(textsnapshot_getSelectedText), flags);
-       o.init_member("getText",
-            gl->createFunction(textsnapshot_getText), flags);
-       o.init_member("hitTestTextNearPos",
-            gl->createFunction(textsnapshot_hitTestTextNearPos), flags);
-       o.init_member("setSelectColor",
-            gl->createFunction(textsnapshot_setSelectColor), flags);
-       o.init_member("setSelected",
-            gl->createFunction(textsnapshot_setSelected), flags);
+    VM& vm = getVM(o);
+       o.init_member("getCount", vm.getNative(1067, 1), flags);
+       o.init_member("setSelected", vm.getNative(1067, 2), flags);
+       o.init_member("getSelected", vm.getNative(1067, 3), flags);
+       o.init_member("getText", vm.getNative(1067, 4), flags);
+       o.init_member("getSelectedText", vm.getNative(1067, 5), flags);
+       o.init_member("hitTestTextNearPos", vm.getNative(1067, 6), flags);
+       o.init_member("findText", vm.getNative(1067, 7), flags);
+       o.init_member("setSelectColor", vm.getNative(1067, 8), flags);
+       o.init_member("getTextRunInfo", vm.getNative(1067, 9), flags);
 }
 
 as_object*

=== modified file 'libcore/asobj/flash/text/TextSnapshot_as.h'
--- a/libcore/asobj/flash/text/TextSnapshot_as.h        2009-07-28 11:58:27 
+0000
+++ b/libcore/asobj/flash/text/TextSnapshot_as.h        2009-08-26 14:29:24 
+0000
@@ -111,6 +111,8 @@
 
 };
 
+void registerTextSnapshotNative(as_object& global);
+
 } // gnash namespace
 
 // GNASH_ASOBJ3_TEXTSNAPSHOT_H

=== modified file 'testsuite/swfdec/PASSING'
--- a/testsuite/swfdec/PASSING  2009-08-24 16:08:42 +0000
+++ b/testsuite/swfdec/PASSING  2009-08-26 14:32:57 +0000
@@ -72,6 +72,7 @@
 asbroadcaster-override-6.swf:cc28cc39d8a841d68d42ad6328c3ac6e
 asbroadcaster-override-7.swf:5834d9f0de106265f5ff479d789d2f35
 asbroadcaster-override-8.swf:017c5505a342570726c90b81297626dc
+asbroadcaster-properties-5.swf:577ad0de1cd33a97f6e2f146c61acc5f
 asnative-create-5.swf:d10ce975ae57f9a6e29c8fc97eb01489
 asnative-create-6.swf:79aa26f566218edbdecdb46e88be7a1a
 asnative-create-7.swf:b3f18c999ed081ac39132ec6a9df2cb0
@@ -217,6 +218,8 @@
 context-menu-item-6.swf:bed4cac31e3e05d22fa5478078e1790a
 context-menu-item-7.swf:e3339c3aa296505f3477d88d2f9033a2
 context-menu-item-8.swf:9d586baebe529587c5b3522f73255810
+context-menu-item-properties-7.swf:365f0cdca8562904857714770b2fa0d1
+context-menu-item-properties-8.swf:d2b9e88c1c1212e8e960374fc78c3133
 conversion-functions-6.swf:29f141b5a2d03886c152342fdbea9b25
 conversion-functions-7.swf:8bc3951e61b7fefa82d24fb037929350
 conversion-functions-8.swf:4a68346aaa982e32b2882a49e34faa07
@@ -428,6 +431,10 @@
 equality-old-6.swf:57bfbb9065a0e63cd77bf6c584bcf347
 equality-old-7.swf:6eecbe10ad56bad25f0f4eaf61e441dc
 equality-old-8.swf:c78101432ebbc3c41fc27735379cfb78
+error-properties-5.swf:c89351f53b9ba814595c093065bf0f3b
+error-properties-6.swf:9253b6390cb6ce417e254095d246f91c
+error-properties-7.swf:9258d3f8ea8409484f107168a4526347
+error-properties-8.swf:d011695853e978e0f6006730e37cba8b
 event-order.swf:6cb896771a691dc394226c3f542b1bec
 export-case-5.swf:8b37704408e27ffb8b51c63179c7702c
 export-case-6.swf:7c3106de02ed0a94ed0bc816bf526c02
@@ -601,6 +608,9 @@
 loadvars-decode-return-6.swf:b087145545a09db783e43093e1ed6731
 loadvars-decode-return-7.swf:86b9a3bf16c7f8927a63b048b7886dbf
 loadvars-decode-return-8.swf:4a634352da2b0ab1a85746f566fe1fb3
+loadvars-properties-6.swf:9632efb3c425c1ebaf88bd7a56ab5eee
+loadvars-properties-7.swf:b456091bba1827d6ff4773485b247c39
+loadvars-properties-8.swf:aecfd3e5a0f5f3c892f9aba1a1bb8a51
 local-connection-properties-6.swf:396dc9cb0b3a2228c835f2ac284116b5
 local-connection-properties-7.swf:cea39463c752388d55e00442b6c24e35
 local-connection-properties-8.swf:8181bc0d301a99df5bc3e20766a35c83
@@ -630,6 +640,7 @@
 matrix-properties-5.swf:a80d726dfde5b460add76a7532e7ee01
 matrix-properties-6.swf:a7934cc5476219b199a40c4feb627dfe
 matrix-properties-7.swf:144e6c666febf556bec9864ee234a54a
+matrix-properties-8.swf:74105c50f0364f4fcf3d6745c42fae33
 microphone-properties-5.swf:26a2019cc8d42c41630cac3eaf435412
 microphone-properties-6.swf:0463204be0bb721bac2e642cc2c0696d
 microphone-properties-7.swf:111e7119fcf0b3e270503e4df247b27f


reply via email to

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