Re: [gtk-vnc-devel] Error on GLib



Daniel P. Berrange wrote:
On Sun, Jan 27, 2008 at 11:20:45AM -0600, Anthony Liguori wrote:
Jonh Wendell wrote:
Hi, Anthony. I didn't work. Same message here :(
I've attached a patch which fixes a problem. The problem is that the vnc-auth-credential signal is being marshaled with the PARAM type. The PARAM type expects a GParamSpec * which is used to refer to a parameter that's part of the object. Since we're passing a GValueArray, this is clearly wrong. The only reason this probably worked with older gtk's is that there was no checking happening so the marshaling function essentially was just marshaling a pointer. The only thing I can think to do to avoid breaking the ABI is to switch the marshaling function to a POINTER type. This is gives us the behavior we had before. I think GTK avoids passing lists of things to signals. Perhaps the signal interface shouldn't have taken any parameters and relied on calling methods in the object to determine what authentication information was needed.

Hmm, not sure what I was thinking when I wrote that marshalling code, but
I do remember this bit of GTK being confusing as hell & very badly documented :-) The alternative to using the POINTER type is to simply
define a marshalling function for the GValueArray type, but if the generic
pointer works we might as well stick with that.

I thought of that too, but then, after spending an hour trying to figure out the relationship between GParamSpec, GValues, et al, I decided that it wasn't worth it :-)

Regards,

Anthony Liguori

Dan.





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