gnash-dev
[Top][All Lists]
Advanced

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

[Gnash-dev] circular library dependencies


From: Rob Savoye
Subject: [Gnash-dev] circular library dependencies
Date: Sat, 06 Jun 2009 17:21:32 -0600
User-agent: Thunderbird 2.0.0.21 (X11/20090320)

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 -




reply via email to

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