2017-09-10 13:58 GMT+02:00 André Pönitz <[email protected]>: > On Sun, Sep 10, 2017 at 11:31:58AM +0200, Elvis Stansvik wrote: >> As soon as I hit send, I realized I have a third question: >> >> 3. Communication Between Plugins: >> >> There seems to be two main mechanisms through which plugins >> communicate: Either objects that implement shared interfaces are added >> to the plugin manager object pool and picked up by downstream or >> upstream plugins (in the top-down or bottom-up phase of plugin >> initialization, respectively), or a singleton instance is acquired and >> calls made on it. >> >> Is the former approach used when dependants provide functionality to >> their dependees (which are unknown), and the latter approach used when >> dependees use their dependants (which are known)? Is that the deciding >> factor? > > I am not sure there is a strict deciding factor or even policy. > There are certainly historical and personal aspects involved. > > The object pool has some systematic quadratic behaviour built-in,
The quadratic behavior, do you mean when a plugin is destroyed and it calls removeObject(..) for each of it's auto-released object in d->addedObjectsInReverseOrder (which could possibly be many)?. Or are there other inherently quadratic operations on the pool? Elvis > so even if it is still ok, it won't scale arbitrarily. So I am > trying to reduce it's use in well-known cases where one side > depends on the other anyway, e.g. replace various factories > hat so far ended up in the pool with explicit registration of > their upstream users, and only use the pool where it's flexibility > is really needed. > > Andre' _______________________________________________ Qt-creator mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/qt-creator
