Omid Givi omid at givi.nl
Tue Feb 20 18:10:56 UTC 2001

Good evening everybody,

Here I am again. I thought I let you know about some somehow important and
interesting changes in kdevelop 2 component framework of which you should
know, as a developer.

The was a TheCore() function (in KDevComponent) which caused crashes in
some situations. I traced it. It seemed to happen because of some race
conditions. m_pCore was sometimes not known or not set right. This was
also because the pointer did not get the chance to be set. I wanted to fix
this and I wanted to fix it right.

The following:
- the problem mentioned above;
- that every component knew just some (standard) pointers to other
  components (and also some in the corebase);
- that for adding a new base component there should be some changes in
  KDevComponent (and perhaps some in corebase);
- centralizing the issue of creations of the components;
- to bring order in Core<->Component communications;
- icq discussions with Sandy ;-)

Were reasons to think of a component manager. Yes, I made it. ;-) Class
KDevComponentManager, resided in lib/ComponentManager is responsible for
loading the components (using the klibloader and kservices of course; we
still want to have this nice way, for sure ). Everybody (mostly the core)
who wants to load a component, loads it using the KDevComponentManager.
KDevComponentManager provides the needed methods. When
KDevComponentManager loads a module, registers it as well, so it can give
the pointer to the rest, if they ask for it. (the methods are also
implemented). So you can query the Big Baby. :)

Another aspect of the KDevComponentManager is the Core<->Component
communications. It provides some public slots and signals. Send the
right signal to it, it distrbutes the signal over the registerd
components. So can the core communicate easily with the components
just using the KDevComponentManager to deliver its qt signals.

I have changed almost all the components slightly, so that they know
about the KDevComponentManager and use its facilities, instead of some
standaard pointer references.

The core knows about all this too, and uses KDevComponentManager as well.

The new components can be made exact the same way they use to. The
only change is loading them and communications with other components
which goes through the KDevComponentManager now.

Well, thank you for listening/ reading ;-)

KDevelop 2 will also rule soon, as kdevelop 1 already does! ;-)


to unsubscribe from this list send an email to kdevelop-devel-request at kdevelop.org with the following body:
unsubscribe »your-email-address«

More information about the KDevelop-devel mailing list