bonobo-hunkajunk.patch




Elliot Lee writes:
 > This patch:
 > 	. Allows conditionally using OAF instead of GOAD.

    Having oaf support sounds nice, but I really don't like having all
those ifdefs sprinkled all over the code.  Since oaf provides a
superset of gnorba's functionality, and bonobo actually uses that
superset, I'm not sure how to avoid that, though.

 > 	. Changes the scheme name for moniker URI's from "moniker_url" to
 > 	  "moniker".

    This makes sense, I always found that weird.

 > 	. Allows getting at the gnome_object_base_epv/gnome_object_epv again,
 > 	  so that it is convenient to use them when the epv does not need
 > 	  modifying. (oops I will remove the gnome_object_get_epv()
 > 	  "fixing" from here)

    This is incorrect, as you've introduced a semantic inconsistency
between gnome_object_get_epv(), and all of the other epv-getting
functions (e.g. gnome_embeddable_get_epv()).  The other _get_epv()
functions return a freshly-allocated and filled epv structure, and the 
user is allowed to suppose that he can modify them.   But this is not
so with your modified gnome_object_get_epv().

    So, how about something like this:

POA_GNOME_Unknown__epv *
gnome_object_get_epv (gboolean fresh)
{
        POA_GNOME_Unknown__epv *epv;

        if (! fresh && (gnome_object_epv != NULL))
                return gnome_object_epv;


        epv = g_new0 (POA_GNOME_Unknown__epv, 1);

        epv->ref             = impl_GNOME_Unknown_ref;
        epv->unref           = impl_GNOME_Unknown_unref;
        epv->query_interface = impl_GNOME_Unknown_query_interface;

        if (! fresh)
            gnome_object_epv = epv;

        return epv;
}


 > 	. Remove a check from gnome_object_add_interface that prevented me
 > 	  from adding an interface to a GnomeBonoboWidget's
 >        control-frame.

    Sorry, you can't use gnome_object_add_interface() after an
aggregate object has already been exposed to the ravages of the World
Out There (although I admit I can't see where the hell the
ControlFrame is getting that second reference).  You'll have to
connect to the QI signal and return the new interface there.  I can't
think of another way.

 > 	. Fix some crashes from passing g_new'd memory to CORBA.

    You mean the exceptions?  Thanks.

Nat



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