Hi,
I wrote a simple StereoEffect which is very similar to the
StereoBalanceControl example in the KDE 2.0 Development book.
Unfortunately, I can use it only locally, i.e. explicitly linked to an
application. Whenever I try to create such an object on the server, my
application and the server fail with assertions:
Appliction:
till@cray:~/test/arts > a "VolumeAndBalanceEffect"
a: /opt/kde2-cvs/include/arts/reference.h:247: class string
Arts::Object::_toString() const: Assertion `_pool->base' failed.
Aborted
Artsd:
[artsd] ** Warning ** MCOP ObjectManager: can't find implementation for
Arts::VolumeAndBalanceEffect.
artsd: object.cc:1088: static class Arts::Object_base *
Arts::Object_base::_create(const string & = "Object"): Assertion `skel'
failed.
I'm using KDE 2.0 from cvs, configured with --enable-debug, latest update 2
days ago.
See below for further details.
regards, till
my small test application basically does the following:
int main(int argc, char **argv)
{
Dispatcher dispatcher;
SimpleSoundServer server(Reference("global:Arts_SimpleSoundServer"));
if(server.isNull()) {
cerr << "server reference is null" << endl;
exit(1);
}
Arts::SynthModule effect;
VolumeAndBalanceEffect xeffect;
if (xeffect.isNull())
{
// this does not happen
// afterwards, the effect appears in the Interface repository
cerr << "xeffect is null" << endl;
exit(1);
}
if(argc > 1) {
effect = DynamicCast(server.createObject(argv[1]));
// here, I never get
if (effect.isNull())
{
cerr << "effect is null: " << argv[1] << endl;
exit(1);
}
}
[ ... ]
}
The idl file looks like:
#include <artsflow.idl>
interface VolumeAndBalanceEffect: Arts::StereoEffect {
attribute audio volume;
attribute audio balance;
};
and the mcopclass file like this:
till@cray:~/test/arts > cat VolumeAndBalanceEffect.mcopclass
Buildable=true
Interface=VolumeAndBalanceEffect,Arts::SynthModule,Arts::Object
Library=libtills.la
ldconfig finds the library containing the module:
till@cray:~/test/arts > /sbin/ldconfig -p | grep tills
libtills.so.0 (libc6) => /opt/kde2-cvs/lib/libtills.so.0
libtills.so (libc6) => /opt/kde2-cvs/lib/libtills.so