I spent some time seeing if I could split up the AS lib from libgnashcore. Turns out there are too many dependencies. Much of the problem is that ClassHierarchy.cpp loads all the vectors to the *init() functions for each class. I worked around this, but code in libgnashasobj calls code in libgnashcore, and vice versa, so this causes problems with some linkers. It's ok for libgnashasobj to depend on libcore, but probably not the other way around. It may be better to call the *init() functions more like the *_pkg files do in asobj/flash than setting up the table in ClassHierarchy.cpp, as then all the dependencies are primarily in the one library.
After calling the *init() functions a different way, libgnashcore still calls these functions in libgnashasobj: `gnash::init_boolean_instance(bool)' `gnash::Array_as::isStrict() const' `gnash::Global::Global(gnash::VM&, gnash::ClassHierarchy*)' `gnash::Array_as::push(gnash::as_value const&)' `gnash::Array_as::at(unsigned int) const' `gnash::NetStream_as::setAudioController(gnash::DisplayObject*)' `gnash::SharedObjectLibrary::~SharedObjectLibrary()' `gnash::init_object_instance()' `gnash::NetStream_as::videoWidth() const' `gnash::SharedObjectLibrary::markReachableResources() const' `gnash::Key_as::notify_listeners(gnash::event_id const&)' `gnash::Stage_as::notifyFullScreen(bool)' `gnash::Array_as::set_indexed(unsigned int, gnash::as_value const&)' `gnash::NetStream_as::get_video()' `gnash::array_new(gnash::fn_call const&)' `gnash::getObjectInterface()' `gnash::number_class_init(gnash::as_object&)' `gnash::AsBroadcaster::initialize(gnash::as_object&)' `gnash::init_string_instance(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' `gnash::Key_as::set_key_down(gnash::key::code)' `gnash::NetStream_as::newFrameReady()' `gnash::Date_as::Date_as(double)' `gnash::Array_as::size() const' `gnash::Stage_as::notifyResize()' `gnash::Array_as::Array_as()' `gnash::NetStream_as::videoHeight() const' `gnash::Array_as::resize(unsigned int)' `gnash::SharedObjectLibrary::SharedObjectLibrary(gnash::VM&)' `gnash::init_number_instance(double)' `gnash::Key_as::set_key_up(gnash::key::code)' `gnash::TextFormat_as::TextFormat_as()' So to separate these two we'd need to find alternate ways of initializing the classes, or a better way for libgnashcore code to access what it needs from libgnashasobj. - rob - _______________________________________________ Gnash-dev mailing list Gnash-dev@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-dev