Attachment '20100608.txt'

Download

   1 < ebassi> as usual, the agenda is at: http://live.gnome.org/GTK%2B/Meetings
   2 < ebassi> • how to deal with gtk-requiring libraries, with regards to the API/ABI break
   3 < ebassi> • GApplication and GtkApplication
   4 < ebassi> • review GBinding
   5 < ebassi> • review GController/GObject::thaw-notify
   6 < ebassi> • Editable label: sub-class or class feature+ABI break?
   7 < ebassi> • get rid of GtkProgress
   8 < ebassi> • deprecation of gtk_quit_add_full() to remove GtkArg
   9 < ebassi> other items?
  10  * mclasen had one
  11  * mclasen thingks
  12 < mclasen> ah right
  13 < mclasen> fixing up distcheck
  14 < mclasen> I was trying to get a release out today, but got stuck on that old 'someone else committed during my distcheck'
  15 < mclasen> so I want to finally figure out how to make distcheck not touch any files under source control
  16 < walters> (cd ..; git clone gtk+ gtk-distcheck; cd gtk-distcheck; make distcheck) ?
  17 < walters> really, tarballs should be built automatically on gnome servers, and not from developer machines
  18 < leio> as long as said gnome servers don't have broken intltool versions on them like various maintainers do have a lot
  19 < walters> (and eventually turned off once operating system builders have better version control based tools)
  20  * jjardon thinks that the new admin will have a lot of work to do
  21 < mclasen> walters: the problem is that currently make distcheck touches files that I have to commit to get a tag on the tarball contents
  22 < walters> mclasen: yeah, my first command suggestion would work around that
  23 < mclasen> walters: I don't know how
  24 < walters> er...wait maybe not
  25 < walters> nevermind =)
  26 < mclasen> it doesn't address the 'get the tag on the contents' part
  27 < mclasen> the only alternative would be to create a small branch for each release
  28 < mclasen> and merge it back afterwards
  29 < mclasen> but then the tag sits on that branch, not on master
  30 < mclasen> so fixing distcheck would be better, I think
  31 < mclasen> not much to discuss here, though. I just need to figure out file-by-file why it is touched
  32 < chpe> the biggest problem is that it updates the po files, isn't it? intltool's Makefile.in.in used to have that problem too, but it was fixed not to
  33 < mclasen> the biggest headache is the old copy of po/Makefile.in.in that we have
  34 < mclasen> which has an update-po in make dist
  35 < mclasen> for I don't know what reason
  36 < mclasen> thats all tangled up with glib-gettextize vs upstream gettext and has a long histroy
  37 < jjardon> someone suggest that we should switch to upstream gettext, instead glib-gettextize, but maybe this is OT
  38 < mclasen> proposing that is easy
  39 < mclasen> someone needs to do the work...
  40  * mclasen attends to his other meeting for a minute
  41 < ebassi> it would be good to have at least a list of requirements; I might give it a go
  42 < jjardon> ebassi, I think the proper solution is port glib-gettextize to upstream gettext
  43 < jjardon> as lots of projects are using  glib-gettextize now
  44 < ebassi> I'm afraid I'm going to get saddled with gettext itself :-/
  45 < ebassi> but it would also be good to see if glib-gettext can be fixed not to make our lives miserable by default - since we control it
  46 < mclasen> anyway, lets move on; I'll work on fixing up distcheck for the release I still want to do today
  47 < ebassi> okay; second point: how to deal with libraries depending on gtk
  48 < ebassi> so, as a maintainer of a library indirectly depending on gtk+ -- what happens with gdk-pixbuf in gtk 3.0?
  49 < ebassi> has it been renamed to gdk-pixbuf-3.0?
  50 < mitch> it becomes gdk-pixbuf-3.0
  51 < mitch> it must, there is no other way
  52 < mclasen> it has been renamed, yeah
  53 < ebassi> okay, so we'll need clutter to depend on that
  54 < ebassi> no problem
  55 < mclasen> alternatives would have been to move it out or to radically rewrite it on top of cairo (like some people want)
  56 < leio> moving it out would be nice for some wanting to use the librsvg gdk-pixbuf module without gtk+ on a server setup. We've had such a request
  57 < ebassi> move it out would make my life much easier
  58 < walters> the libraries-depending-on-gtk+ seems to subdivide into libraries which expose GTK+ APIs publicly versus those that don't
  59 < walters> clutter is the latter right now
  60 < ebassi> yep
  61 < mitch> ebassi: clutter also needs a new library name then, or everything will break
  62 < ebassi> clutter-gtk will bump up to gtk+ 3.0
  63 < ebassi> mitch: ugh
  64 < mitch> it doesn't matter if it's exposing api or not, it *must* be a new library
  65 < mitch> or you get distros into hell
  66 < mclasen> the problem is linking, not api
  67 < mitch> exactly
  68 < jjardon> ebassi, clutter-gtk3 ?
  69 < walters> maybe the best thing with gdk-pixbuf is to keep it as is and have any radical rewrite use new symbols
  70 < ebassi> jjardon: no, clutter-gtk 1.0
  71 < ebassi> walters: we might move it to an internal copy
  72 < jjardon> ebassi, the new name, I mean
  73 < mclasen> do we have a volunteer to work on standalone gdk-pixbuf ?
  74 < ebassi> jjardon: no, the new name would be clutter-gtk 1.0 :-)
  75 < jjardon> okis ;)
  76 < ebassi> mclasen: I'll talk with my manager and see if I can get team time to work on it (and fix it, while we're at it)
  77 < ebassi> it's something we wanted to do anyway
  78 < mclasen> nice, thanks
  79 < mclasen> but even with gdk-pixbuf out of the way, there's still plenty of libraries that will have to do the abi jump with us
  80 < jjardon> we can say in the minutes that It's planned, if someone makes the work
  81 < jjardon> maybe someone more is interesed in working on it
  82 < ebassi> mclasen: we need to communicate this on desktop-devel or desktop-announce
  83 < mclasen> yes
  84 < mclasen> rpm -q --whatrequires "libgtk-x11-2.0.so.0()(64bit)" | grep "^lib" | wc -l
  85 < mclasen> -> 26
  86 < mitch> we knew that from the start, so let the whining begin :P
  87 < mclasen> right, its nothing new
  88 < mclasen> just something to remind people of
  89 < mclasen> of those 26 I found, some 5-6 are obsolescent anyway
  90 < walters> mclasen: you probably want to use repoquery --whatrequires libgtk-x11-2.0.so.0 | grep '^lib' since the former will only list things you have installed, right?
  91 < walters> (61 here on f13)
  92 < mclasen> walters: yeah, but my install is not minimal by any measure...
  93 < jjardon> maybe a good GnomeGoal?
  94 < mclasen> not really, I don't think
  95 < ebassi> jjardon: no
  96 < ebassi> it's limited in size, but not limited to the GNOME platform
  97 < jjardon> well, we can make the GnomeGoal for GNOME. Other libraries can take a look to the GnomeGoal for help about the transition
  98 < jjardon> or we can create a GtkGoal instead :P
  99 < jjardon> the idea is to have a list to track the progress of the most important libraries. And to have all the info in the same place
 100 < mclasen> the right decision for each library may be different
 101 < mclasen> for some it maybe best to just leave them in gtk2.x land
 102 < mclasen> and port apps away to newer gtk apis
 103 < mclasen> anyway, I'll draft a mail on this topic for gtk-devel-list/desktop-announce-list
 104 < mclasen> should we move on?
 105 < ebassi> sure
 106 < ebassi> GApplication and GtkApplication
 107 < walters> so they were merged, but there's still work to do, which i am doing as we speak
 108  * davidz sent some feedback to walters and mclasen in private
 109 < mclasen> I merged them now since I didn't get much feedback on the list last week
 110 < walters> the biggest outstanding thing is still a prototype win32 or os X backend, but there is some debate about how that should work nwo
 111 < mclasen> and promptly got a lot of feedback in bugzilla 
 112 < ebassi> yup; I also have a proposal for multi-windows applications; will open a bug with a patch
 113 < mclasen> so thats good, on some level, I guess
 114 < davidz> in particular I'm concerned that about the scope - it sounds like it's only intended for Gtk and Mx
 115 < mclasen> ebassi: have you seen what I added last week, add_window ?
 116 < davidz> in which case GApplication shouldn't be instantiable e.g.
 117 < walters> well...if we made dbus work in the legacy unix contexts it could be useful
 118 < ebassi> mclasen: yes; I still think that we should allow overriding create_window()
 119 < walters> primarily in ssh
 120 < walters> ebassi: no objections to that
 121 < ebassi> mclasen: well get_window() → get_default_window(), add create_window()
 122 < ebassi> the first window added using add_window() will become the default one
 123 < mclasen> davidz: one concern is that you don't expect commandline stuff or daemons to show up in your application menu
 124 < mclasen> but I guess, since they are never 'active' in a shell sense, that wouldn't happen anyway
 125 < davidz> mclasen: hah! - that's a cheapshot...
 126 < davidz> one question I asked is whether GApplication should be used for, say, gnome-user-share
 127 < davidz> e.g. a session-based headless daemon
 128 < davidz> we don't have to decide on that right here right now
 129 < davidz> but the docs should be very clear about this
 130 < davidz> also
 131 < davidz> the failure mode should be brutal if people are doing it wrong
 132 < davidz> e.g. maybe it's fine that GApllication is only useful for UI apps... in which case the failure mode should be that we abort() if there's no UI server (e.g. no X server)
 133 < davidz> in which case making GApplication instantiable is not a good idea
 134 < davidz> anyway
 135 < davidz> I felt a want for design docs on that level
 136 < davidz> when I looked at it
 137 < davidz> it's not at all clear to me how and when GApplication should be used
 138 < walters> if you don't know, don't use it?
 139 < davidz> that's not a very compelling answer
 140 < walters> the main problem is inability to guarantee any kind of semantics
 141 < walters> mainly because of the concept of linux distributions
 142 < davidz> that's not really the point
 143 < leio> How does it all interact with the same program being ran on the same computer, but locally and over remote X (ssh forwarding), in particular can applications decide if they want it to be X client unique, or X server unique
 144 < davidz> you can make it as narrow or as wide as you want - but please just make it apparent when reading the docs
 145 < walters> okay, i'll add something to the docs
 146 < walters> anything else?
 147 < davidz> thanks
 148 < davidz> well, there are some other practical issues in my mail
 149 < davidz> I'll just file that in bugzilla
 150 < mclasen> biggest concern from my side is that we still lack implementations for win32 or os x
 151 < walters> yeah
 152 < mclasen> and, from looking at http://live.gnome.org/TwoPointThirtyone/PortabilityMatrix
 153 < walters> there are two parts - i know we can do uniqueness and arg passing on both
 154 < mclasen> just merging it is no guarantee of an implementation showing up
 155 < walters> the question mark is _add_action
 156 < ebassi> walters: I've followed the discussion with chpe 
 157 < mclasen> secondary concern is figuring out some of the scope questions that david raised, e.g. do we want/need session management in GtkApplication 
 158 < walters> which?
 159 < ebassi> walters: the one on bugzilla
 160 < walters> david was only talking about GApplication
 161 < walters> ebassi: there were several =)
 162 < mclasen> oh right
 163 < ebassi> walters: bug #620957
 164 < ebassi> I think the biggest question about the action support is that we need some design on the interaction model
 165 < ebassi> what can and cannot be done
 166 < ebassi> apart from the wiki page for gnome-shell, I haven't seen much
 167 < davidz> mclasen: well, there are really two concerns here
 168 < davidz> mclasen: first, both headless and UI programs often need several "Application Services".. such as inhibiting the screensaver or the PM and so on.. it would be nice to at least be able to add it to something like GApplication at some point in the future... I don't know
 169 < davidz> mclasen: the second is that of documentation and failure modes... we've learned the very hard way what disasters can happen if people use D-Bus-using libraries in the wrong way
 170 < davidz> mclasen: here I'm talking about GIO/gvfs
 171 < davidz> and the auto-spawning of session bus instances and all that
 172 < davidz> and the auto-spawning of session bus instances and all that
 173 < jjardon> about session managment: hp said: https://bugzilla.gnome.org/show_bug.cgi?id=79285#c26
 174 < davidz> so from a practical point of view it would be nice to have a story for developers
 175 < davidz> so they know what APIs to use and when to use it
 176 < davidz> instead of undocumented APIs leaving people to guess whether to use it or not
 177 < mclasen> since gdbus doesn't do autolaunching, we're safe for now, right ?
 178 < walters> this is the second time you've mentioned that
 179 < walters> i will again mention i will add something to the docs
 180 < mclasen> undocumented is a bit harsh, anyway
 181 < davidz> mclasen: gdbus will probably need to do autolaunching
 182 < walters> ebassi: so...what can and cannot be done from the perspective of an app author?
 183 < davidz> sorry if I'm being too harsh
 184 < ebassi> walters: multiple action groups? what is the smallest subset of features that can be reasonably portable?
 185 < ebassi> walters: also, how does this map to the main menu that a quartz GtkApplication would support?
 186 < ebassi> walters: does the gnome-shell decide what to put in the application menu, or applications are supposed to tag the actions that should go in it, on the gnome platform?
 187 < walters> ebassi: quartz - i believe they have an API that just exports a GtkMenu; we could just export that under #ifdef GDK_WINDOWING_QUARTZ as gtk_application_set_menu() i guess
 188 < walters> ebassi: the basic idea is apps have an action group with their app-global stuff and we export that as best we can everywhere
 189 < jjardon> Here the code of ige-mac-integration: http://github.com/jralls/ige-mac-integration/tree
 190 < mclasen> exporting widgets like that is just icky, I don't like it at all
 191 < ebassi> walters: sounds reasonable; though I expect people will start asking for that API on linux as well, for embedding the app menu somewhere else
 192 < ebassi> anyway, we can worry about that when we start receiving odd patches ;-)
 193 < leio> silence, next topic?
 194 < ebassi> right, if nothing's left for application, there's gbinding
 195 < ebassi> (exo-like binding between object properties, for people that don't follow twitter)
 196 < ebassi> https://bugzilla.gnome.org/show_bug.cgi?id=348080
 197 < mclasen> I don't follow twitter - what are concrete uses for this facility ?
 198 < ebassi> mclasen: evo and other apps are already using copy-and-paste API similar to it
 199 < ebassi> evo and gedit and seahorse, according to the bug
 200 < ebassi> it's also similar to the GSettings binding API
 201 < ebassi> it can be used to link two widgets for sensitivity, or two adjustments with a conversion function
 202 < mitch> gimp has that for 5 years or so ;)
 203 < mitch> ehm
 204 < mitch> it should clearly become part of gobject
 205  * mclasen has not looked at the patch in detail
 206 < mclasen> but it seems fairly obvious; we have several users, we have a working patch, it has docs, and tests
 207 < ebassi> the latest patch moves it from gio to gobject, and adds documentation
 208 < mclasen> docs still say "since GIO 2.26" in places
 209 < ebassi> ugh, right - will fix that
 210 < mclasen> so, I think this should go in; any other opinions ?
 211 < ebassi> seems not :-)
 212 < mclasen> is there ever a case where you want to bind multiple properties at the same time ?
 213 < bratsche> Wouldn't you want to do that for linking properties in a compound widget or something?
 214 < ebassi> mclasen: you can create multiple bindings
 215 < bratsche> Or maybe the child widgets would be reflecting the property of the container widget, I dunno.
 216 < mclasen> yeah, I guess having them in on binding would just be a minor optimization
 217 < ebassi> but since property notification is expensive, we're down to the next item -- add GObject::thaw-notify signal, to allow bulk notification :-)
 218 < ebassi> https://bugzilla.gnome.org/show_bug.cgi?id=617446
 219 < mclasen> I'm not 100% clear on how that avoids the overhead
 220 < mclasen> thaw-notify is only emitted if there's more than one  notify queued up, right ?
 221 < ebassi> mclasen: you get a single signal instead of N
 222 < mclasen> so how do you catch the individual updates that might also happen to properties you are interested in ?
 223 < mclasen> don't you have to listen for notify after all, anyway ?
 224 < ebassi> mclasen: it is emitted - in the current incarnation - whenever the notification queue is thawed last
 225 < mitch> i was just wondering the same
 226 < ebassi> mclasen: the idea is that you don't listen to ::notify if you're interested in many properties
 227 < mitch> so you simply want GObject::dispatch_properties_changed() to be a signal?
 228 < mclasen> but then you loose ::notify emissions that are not batched ?
 229 < ebassi> mclasen: no, you still get those even when n_pspecs == 1
 230 < ebassi> mitch: yes, thaw-notify is essentially the signal form of dispatch_properties_changed()
 231 < mclasen> oh, I see
 232 < mitch> that makes sense
 233 < mclasen> the  name mislead me into thinking it was only emitted for freeze/thaw pairs
 234 < mclasen> bad name...
 235 < ebassi> yeah, I realize that :-)
 236 < mitch> why not simply "properties-changed"?
 237 < ebassi> mitch: that might work
 238 < mclasen> actually, rays comment is in that vein too
 239 < mclasen> just the implementation ends up working differently
 240 < mitch> or *actually* a signal emission on the topmost freeze/thaw pair might be useful too
 241 < mitch> listeners might want to stop doing stuff on freeze() and resume on thaw()
 242 < mitch> theoretically speaking, i have no real use case in mind, given everything is within one call tree here
 243 < mclasen> that sounds like adding more overhead, instead of avoiding overhead...,
 244 < mitch> yeah maybe ;)
 245 < mitch> the problem here might be that sometimes the order of properties matters, but that's up to the listener then
 246 < mitch> they can choose to connect to notify anyway
 247 < mitch> hm no ignore me, thaw fucks up the order anyway
 248 < ebassi> well, the order would be the same as the one you get ::notify emissions
 249 < mitch> really?
 250 < mitch> um
 251 < ebassi> mitch: if you exclude the duplicates
 252 < mitch> sure
 253 < ebassi> the reasoning behing bulk notification is for libraries that use a lot of properties that change in block - like clutter :-)
 254 < ebassi> but since the only way to get bulk notification is to override dispatch_properties_changed, it can only be done in sub-classes of GObject
 255 < mitch> we do that in gimp a lot
 256 < mitch> well s/a lot/in one or two places/ ;)
 257 < jjardon> ebassi, just curious, Did you do any performance test?
 258 < ebassi> yeah; allocation in Actor notifies 5 properties in the worst case; animations are pretty bad as well
 259 < mitch> GtkAdjustment does that too now
 260 < ebassi> jjardon: we did profiling and if you start animating, you can see it on sysprof
 261 < mclasen> ebassi: and that (requiring subclassing) is the motivation for this signal addition?
 262 < ebassi> jjardon: no micro-benchmarking for stress-testing
 263 < ebassi> mclasen: yes, mostly; we don't have a GtkObject at the bottom of our class hierarchy
 264 < mitch> would that signal get the same array of properties as dispatch_properties_changed()?
 265 < ebassi> mitch: yes
 266 < ebassi> it's a concentrated notify emission
 267 < mitch> the longer i thnk about it the more often i have worked around exactly that problem using dispatch_properties_changed() in a subclass
 268 < mitch> i think that signal makes sense, given that signals with no listeners are essentially nops
 269 < mclasen> are they ?
 270 < mitch> iirc they are
 271 < mitch> aren't they? :)
 272 < mitch> timj to the rescue
 273 < mclasen> I believe various patches to that effect were rejected as micro-optimization
 274 < mitch> heh
 275 < mitch> so if this new signals involves yet another motex lock/unlock we should indeed maybe think twice
 276 < mitch> mutex*
 277 < mitch> gah
 278 < mclasen> the patch looks like context->dispatcher really wants to be the default handler for thaw-notify
 279 < mclasen> but I'm sure there's complications that prevent that...
 280 < tadeboro> http://git.gnome.org/browse/glib/tree/gobject/gsignal.c#n2879
 281 < tadeboro> Looks like there are some optimizations inside signal emission machinery.
 282 < mitch> doesn't look like a nop to me
 283 < mclasen> still a lock there, though
 284 < mitch> yeah
 285 < mclasen> hard to avoid though
 286 < mitch> unavoidable for looking up the signal i guess
 287 < ebassi> the unlocks are all over the place
 288 < mclasen> we do lockless lookup of interfaces now, though ?
 289 < ebassi> yep
 290 < mclasen> any other topics ?
 291 < ebassi> editable label: sub-class or not?
 292 < ebassi> the sub-class idea was due to the "we can't break ABI and we're out of slots on LabelClass"
 293 < ebassi> I guess now we can simply extend that
 294 < mclasen> I must admit I never fully grokked the idea of an editable label as a widget
 295 < mitch> haha i agree
 296 < mclasen> isn't that just a notebook with a label and an entry ?
 297 < mitch> it's a WTF
 298 < ebassi> well, nautilus has them to rename files :-)
 299 < ebassi> it's a bit ad hoc, though
 300 < mitch> ebassi: aren't these tree rows?
 301 < ebassi> no
 302 < ebassi> in icon view
 303 < ebassi> not in list view
 304  * mclasen has done a lot of label + editable widget in a notebook in the accountsdialog
 305 < jjardon> It's needed to replace EelEditableLabel: Its one of the items of ProjectRidley: http://live.gnome.org/ProjectRidley
 306 < mclasen> it can be tricky sometimes to get focus handling right
 307 < ebassi> jjardon: yep, EelEditableLabel is what nautilus is using (in tree)
 308 < jjardon> bug here: https://bugzilla.gnome.org/show_bug.cgi?id=310693
 309 < ebassi> dunno if there are other projects using it, though
 310 < mclasen> I would invite anybody to study the accountsdialog set of label-that-turns-into-entry, label-that=turns-into-button, label-that-turns-into-combo
 311 < jjardon> cosimoc offered to make a patch if an implementation was decided here
 312 < jjardon> mclasen, yeah It's pretty cool ;)
 313 < mclasen> so, I'd be more interested in investigating if there is a more general pattern of editable-uneditable widget that we can  support, instead of just copying eeleditablelabel
 314 < garnacho> I wonder if it doesn't make more sense to make it the other way around, a non-editable entry that looks like a label
 315 < mclasen> the thing is that label and entry have distinct feature sets
 316 < mclasen> there's a big overlap, certainly
 317 < mclasen> but there is also a difference
 318 < garnacho> I see, should check the use cases
 319 < mclasen> labels do urls, they can or cannot be selectable, they can wrap,..
 320 < mclasen> entries can be invisible, they can show icons, they can not wrap, etc etc
 321 < garnacho> a GtkLabel subclass makes sense then
 322 < mclasen> what will that class do ? reimplement gtkentry ?
 323 < ebassi> and in case of word wrapping, does it become a text area? :-)
 324 < jjardon> There is already a patch here: https://bugzilla.gnome.org/show_bug.cgi?id=310693#c10
 325  * mclasen will put his thoughts in that bug
 326 < leio> the agenda topic seemed to be whether the feature should be in a sub-class, or directly inside GtkLabel with an ABI break (due to GtkLabelClass being out of padding)
 327 < mclasen> any other topics ?
 328 < leio> <ebassi> • get rid of GtkProgress
 329 < leio> <ebassi> • deprecation of gtk_quit_add_full() to remove GtkArg
 330 < mclasen> right, gtkprogress
 331 < mclasen> I wrote a patch one evening last week that strips out GtkProgress
 332 < jjardon> bug and patch here: https://bugzilla.gnome.org/show_bug.cgi?id=620618
 333 < mclasen> and moves enough pieces into GtkProgressBar to make the non-deprecated functionality work
 334 < mclasen> took a few hours, but wasn't as hard as I thought
 335 < mclasen> it is obviously not abi compatible
 336 < mclasen> but other than that, it works fine
 337 < mclasen> I just wondered what people's thoughts are on that ? should I just commit it ?
 338 < ebassi> ship it, it's done :-)
 339 < leio> so no sharing with GtkEntry progress stuff?
 340 < leio> (interface)
 341 < jjardon> well, It's for GTK+3, is abi compatibily required?
 342 < mclasen> leio: there was never any sharing with the entry progress stuff, api wise
 343 < ebassi> leio: there's no real common interface anyway - unless you want to a) add a GtkProgressable interface b) deprecate the whole overlapping GtkProgressbar and GtkEntry API and c) implement the interface
 344 < mclasen> the drawing is shared, of course
 345 < ebassi> which would be still fill odd anyway
 346 < leio> feels similar to GtkOrientable, sort of
 347 < bratsche> I think right now if there is no text in the GtkProgressbar it's still full-height.. I'd kind of like to change it so that it's shorter/thinner when there is no text in it.
 348 < bratsche> (at least, I think this is how it works right now)
 349 < leio> GtkProgressBar is a non-editable GtkEntry with no text in it *grin*
 350 < mclasen> it is shorter/thinner
 351 < leio> except there is a label. Anyway, considered, decided, then GtkProgress is not useful if not serving an interface
 352 < mclasen> ok, cool
 353 < bratsche> Oh, then I'm just smoking crack I guess.
 354 < mclasen> deprecation of quit_add_full - last point
 355 < jjardon> yeah, I asked murray about it. He commented in the bug
 356 < jjardon> pygtk uses that function, but GI based bindings no
 357 < mclasen> in an essential way, or easily avoidable ?
 358 < mclasen> I would assume the essential point is that bindings need a destroynotify
 359 < jjardon> murray words: <murrayc> jjardon: *_full() functions are generally needed to maintain state, by associating user_data with a callback function. Bindings and well-written apps do need that, yes.
 360  * mclasen needs to run out
 361 < mclasen> your conclusions on a postcard...
 362 < mclasen> later
 363 < ebassi> ugh
 364  * ebassi just saw GtkArg for the first time
 365 < jjardon> ebassi, Do you know anything about the perl case?
 366 < jjardon> :)
 367 < jjardon> I saw that current perl bindings use that functions one time. But the GI based no
 368 < jjardon> oh, here is the bug with the murray comment: https://bugzilla.gnome.org/show_bug.cgi?id=619671
 369 < ebassi> jjardon: perl-Gtk2 binds it
 370 < ebassi> but we don't use it in code
 371 < ebassi> so, since perl-Gtk2 binds gtk+-2.0, it's not a big deal
 372 < ebassi> and as soon as we switch over to GI, it's not going to be a problem ever again
 373 < jjardon> indeed, It's only used here: http://git.gnome.org/browse/perl-Gtk2/tree/xs/Gtk2.xs#n491
 374 < jjardon> and here in gtkmm: http://git.gnome.org/browse/gtkmm/tree/gtk/src/main.ccg#n252
 375 < jjardon> the problem is that gtkmm bindings are  not GI based (for now)
 376 < ebassi> so, dunno; at this point, should we rename the function? break it without pity since it's fairly unused?
 377 < ebassi> jjardon: gtkmm will have to bump up anyway
 378 < jjardon> yeah, or maybe use GCallback instead GtkCallbackMarshal
 379 < jjardon> in these functions
 380 < jjardon> as murray suggest in the bug report
 381 < ebassi> sounds reasonable to switch to GCallback and let GtkCallbackMarshal die a painful death
 382  * tadeboro rather goes directly to hell that being listed on ebassi's deprecation list ...
 383 < ebassi> right, so we can adjurn the meeting
 384 < jjardon> ok, Is there time for leio concerns about performance?
 385 < ebassi> oh, right
 386 < ebassi> though we have hit the 2:30hrs mark
 387 < leio> I'm not personally prepared to argue any counter arguments, so some "unofficial" chatter is fine
 388 < ebassi> okay; I can still put it in the minutes - it's up to you
 389 < leio> jjardon should have a link to some March meeting about function calls vs direct access stuff with some options on how to proceed. Trying to find the right place
 390 < leio> http://live.gnome.org/GTK%2B/Meetings?action=AttachFile&do=view&target=20100323.txt
 391 < jjardon> one moment, let me check
 392 < leio> 21:50
 393 < leio> in the raw log
 394 < leio> so, basically I'm saying what desrt said there. I see no reason to go with slower (doing accessor function calls for things that are available internally directly)
 395 < leio> just put the private structures in a foo-private.h header instead of on the top of the *.c and don't install it
 396 < ebassi> one of the options was: add a macro that expands to a direct access when GTK_COMPILATION is defined, and to a function if not
 397 < ebassi> though, obviously, it would be good to have numbers before making the build even more hacktacular than it is
 398 < ebassi> (not that I don't doubt that function call + argument type checking > direct access
 399 < ebassi> in terms of time, obviously)
 400 < leio> argument type checking is quite expensive, for example gstreamer is going out of its way to do direct casts when it knows it's correct, saving tens of percentage of instructions in the process
 401 < ebassi> still, internally, the compiler could do tricks; and we could have the cross-file boundary inlining at some point
 402 < leio> is GTK+ already using function calls internally, or that is one of jjardon's gsoc projects?
 403 < ebassi> leio: for things that are exposed publicly, we use the public accessor internally as well
 404 < leio> because if it isn't already using function calls internally, it's probably easier to spread some ->priv around rather than converting to public accessors
 405 < jjardon> I added some internal functions functions, but without type checking
 406 < leio> I'm not sure what build hacks would be involved here
 407 < ebassi> right - internal functions should not have type checking
 408 < ebassi> the idea is that if you take out some code from gtk+ it won't blow up in your face; and even internally, the code won't become a tangled mess of direct accesses to private structures
 409 < ebassi> which is the biggest risk as soon as you start making Private data structure project-wide
 410 < leio> I've never heard or read about the GTK_COMPILATION idea before, but it sounds neat, albeit probably can be considered a build hack
 411 < ebassi> leio: it might probably rate lower on the build hacks scale than, say, the aliasing stuff ;-)
 412 < ebassi> anyway, it's a good discussion that should be brought up on the mailing list
 413 < leio> I do not have the time resource right now to do any concrete measuring of how much slower it is, I think this should definitely have been done BEFORE making it obviously slower - measure if it's not measurable
 414 < jjardon> yeah, but thinking more on this, waht id the advantage of _gtk_accesible_set_widget (a, w) over a->priv->widget = w ?
 415 < leio> yeah, jjardon suggested in a meeting :P
 416 < ebassi> leio: since people have gone offline, and since we probably need more bandwidth, the mailing list is usually the next step
 417 < ebassi> leio: it's much appreciated, though
 418 < leio> agreed
 419 < jjardon> <jjardon> leio, I already ported some widgets. I'd suggest you to sent a mail to gtk-devel-list if you can't attend :P
 420 < ebassi> we've had this discussion on IRC, in various shapes and forms
 421 < leio> gtk-2-90 is in master now?
 422 < jjardon> leio, I'm pushing my work here: http://gitorious.org/gtk3/gtk/commits/refactor
 423 < ebassi> leio: yes
 424 < jjardon> leio, gtk-2-90 is obsolete now
 425 < jjardon> It was merged in master some time ago
 426 < leio> looks like even GtkWidget code itself internally does gtk_widget_get_realized function calls with type checking all over the place
 427 < ebassi> leio: yep
 428 < leio> anyway, I think this is not for the meeting channel anymore
 429 < leio> as we didn't have time :)
 430 < ebassi> okay; leio: thanks for the patience :-)
 431 < ebassi> next meeting in two weeks
 432 < ebassi> good night everyone; will send the minutes soon

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.
  • [get | view] (2021-02-25 09:59:10, 13.2 KB) [[attachment:20080108.txt]]
  • [get | view] (2021-02-25 09:59:10, 14.9 KB) [[attachment:20080212.txt]]
  • [get | view] (2021-02-25 09:59:10, 8.5 KB) [[attachment:20080513.txt]]
  • [get | view] (2021-02-25 09:59:10, 22.1 KB) [[attachment:20080603.txt]]
  • [get | view] (2021-02-25 09:59:10, 8.9 KB) [[attachment:20080617.txt]]
  • [get | view] (2021-02-25 09:59:10, 19.7 KB) [[attachment:20080701.txt]]
  • [get | view] (2021-02-25 09:59:10, 17.5 KB) [[attachment:20080722.txt]]
  • [get | view] (2021-02-25 09:59:10, 24.1 KB) [[attachment:20080812.txt]]
  • [get | view] (2021-02-25 09:59:10, 8.0 KB) [[attachment:20080826.txt]]
  • [get | view] (2021-02-25 09:59:10, 10.6 KB) [[attachment:20080923.txt]]
  • [get | view] (2021-02-25 09:59:10, 9.0 KB) [[attachment:20081007.txt]]
  • [get | view] (2021-02-25 09:59:10, 11.4 KB) [[attachment:20081111.txt]]
  • [get | view] (2021-02-25 09:59:10, 18.3 KB) [[attachment:20081125.txt]]
  • [get | view] (2021-02-25 09:59:10, 9.0 KB) [[attachment:20081216.txt]]
  • [get | view] (2021-02-25 09:59:10, 3.8 KB) [[attachment:20090217.txt]]
  • [get | view] (2021-02-25 09:59:10, 24.9 KB) [[attachment:20091006.txt]]
  • [get | view] (2021-02-25 09:59:10, 34.8 KB) [[attachment:20091020.txt]]
  • [get | view] (2021-02-25 09:59:10, 25.5 KB) [[attachment:20091027.txt]]
  • [get | view] (2021-02-25 09:59:10, 17.1 KB) [[attachment:20091110.txt]]
  • [get | view] (2021-02-25 09:59:10, 25.6 KB) [[attachment:20091124.txt]]
  • [get | view] (2021-02-25 09:59:10, 37.6 KB) [[attachment:20100323.txt]]
  • [get | view] (2021-02-25 09:59:10, 26.8 KB) [[attachment:20100504.txt]]
  • [get | view] (2021-02-25 09:59:10, 23.0 KB) [[attachment:20100511.txt]]
  • [get | view] (2021-02-25 09:59:10, 13.2 KB) [[attachment:20100525.txt]]
  • [get | view] (2021-02-25 09:59:10, 29.9 KB) [[attachment:20100608.txt]]
  • [get | view] (2021-02-25 09:59:10, 24.6 KB) [[attachment:20100622.txt]]
  • [get | view] (2021-02-25 09:59:10, 22.8 KB) [[attachment:20100706.txt]]
  • [get | view] (2021-02-25 09:59:10, 35.0 KB) [[attachment:20100817.txt]]
  • [get | view] (2021-02-25 09:59:10, 32.4 KB) [[attachment:20100907.txt]]
  • [get | view] (2021-02-25 09:59:10, 20.6 KB) [[attachment:20100921.txt]]
  • [get | view] (2021-02-25 09:59:10, 26.9 KB) [[attachment:20101012.txt]]
  • [get | view] (2021-02-25 09:59:10, 40.6 KB) [[attachment:20101214.txt]]
  • [get | view] (2021-02-25 09:59:10, 17.8 KB) [[attachment:20110308.txt]]
  • [get | view] (2021-02-25 09:59:10, 23.6 KB) [[attachment:20110510.txt]]
 All files | Selected Files: delete move to page copy to page

You are not allowed to attach a file to this page.