12 Sep 2002 async   » (Journeyer)

Bonobo:

been trying to figure out the architecture of Bonobo stuff lately.

here's an example i got working recently.

there are some interesting things to note here. BonoboObjects confused me for awhile while reading through the source code (libbonobo/bonobo/bonobo-object.c). they are an abstraction for the both the server and the client at the same time. (and both the client and server functions tend to be implemented in the same file adding to the confusion). so the object has both the virtual table necessary for rpc dispatch to the skeletons, but also the client side functionality--ie routines which make remote calls to the server.

another interesting thing occurs when you try to query object interfaces. it appears that an interface derived through inheritance has a reference which is (or can be) separate from the child of that interface. so if you try to query the interface of the wrong object ref you get a different set of aggregates...which can be really confusing.

i think maybe this behaviour is a bug. but there is a strong possibility that i mishandled some of the references and probably missed a step where i was supposed to fix something up to correct for this.

another thing is that g_object_ref/unref isn't virtual. bonobo creates a set of functions specifically because it needs to do reference counting with the remote object. but since you can't override g_object_ref, you just have to remember to use the right one...or else.

next i need to start perusing the source of libbonboui. i'd also like to write up some more notes, so that other folks wll have something to go on.

after that i would like to explore automagically creating the bindings whenever you create a widget.

i have ideas...about things.

hooray!

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!