[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] /srv/bzr/gnash/trunk r11441: Register more natives; get the difference between them correct. More passes,
Benjamin Wolsey <=