Attachment '20100817.txt'

Download

   1 < ebassi> meeting time
   2 < desrt> agenda url?
   3 < ebassi> http://live.gnome.org/GTK+/Meetings -- agenda
   4 < ebassi> pretty long so I won't paste it here :-)
   5 < ebassi> Company wanted to go first because he has to go before 21:00 UTC, AFAIR
   6 < desrt> Company: poke
   7 < ebassi> so: 1. rendering-cleanup branch/gtk_widget_draw
   8 < desrt> AWOL?
   9 < desrt> let's wait 5 mins?
  10  * Company almost there
  11 < mclasen> girlfriend come home early ?
  12 < Company> 1 minute
  13 < desrt> k
  14 < Company> ok
  15 < Company> did someone try to summon alex?
  16  * mclasen tries
  17 < mclasen> its late for him, though
  18 < Company> lets just start
  19 < mclasen> I'd say lets go ahead without him
  20 < Company> i'll summarize: rendering-cleanup part 1 has hit master and gtk-2-22 and (almost) everyone is busy porting their apps and reporting great success
  21 < Company> part 2 (that is GdkPixmap removal + switching theme engines to cope) is in preparation and from my view well received
  22 < Company> though i have no idea how easy we can make a gtk2 => gtk3 transition for that
  23 < Company> and part 3 (fixing GdkWindow) is hotly contested on the list atm
  24 < mclasen> that'll affect anybody calling a gtk_paint function ?
  25 < Company> no
  26 < mclasen> part 2, I meant ?
  27 < Company> still no :)
  28 < Company> i think you can probably make part 2 work with deprecations + ugly hacks in gtk2 if you wanted to
  29 < mclasen> who is affected, then ?
  30 < Company> everything that uses GdkPixmap for anything is affected
  31 < Company> that's mostly dnd and code that buffers or does special tricks for drawing
  32 < ebassi> Company: what happens for GdkOffscreenWindow.get_pixmap()?
  33 < Company> "code that buffers" == keeping a pixmap for easy blitting later
  34 < mclasen> do you have a grep of the tree, or one of fredp's fantastic pages for that ?
  35 < Company> ebassi: oh right: and offscreen windows :)
  36 < ebassi> Company: because clutter-gtk uses that to do the texture-from-pixmap embedding of gtk widgets
  37 < Company> yeah, it's a tricky thing
  38 < Company> we could just store the pixmap's cairo surface and return that in a offscreen.get_surface()
  39 < Company> but that's the hacky part
  40 < mclasen> I think we want to have a good idea of the porting effort / compat story before landing part 2
  41 < Company> i agree
  42 < mclasen> of course, we don't have a huge window for the parts that need to land in 2.22
  43 < Company> but i suppose i'll need to finish it before having an idea what to do about it
  44 < ebassi> fredp's git grep results should help
  45 < Company> mclasen: i'm pretty sure landing it in 2.22 would be bad
  46 < mclasen> isn't there a deprecation component here ?
  47 < mclasen> for gdkpixmap, at least ?
  48 < Company> i think landing gdkpixmap cleanup work would require a 2.24 gtk, with even more deprecations and helper APIs
  49 < Company> and it would require some apps inside gnome to not compile with DISABLE_DEPRECATED
  50 < Company> unless we'd really want to be hacky with themes
  51 < Company> as theme engines are outside of our control and they can only render to windows or pixmaps
  52 < Company> and with pixmaps gone, that is some sort of problem...
  53 < desrt> 2.22, 2.24, 3.0?
  54 < desrt> all before the end of the year?
  55 < Company> (you could invent clever ways to render to an offscreen window, then get the surface from it, then use that, but ugh)
  56 < mclasen> well, 2.22 was supposed to be parallel with 3
  57 < mclasen> since 3 moved back, we have a tiny window to squeeze in a 2.24 if we think thats absolutely necessary
  58 < Company> desrt: i think it's not a lot of work to backport useful APIs and add deprecation markers around existing ones
  59 < ebassi> the window to port from 2.24 to 3.0 is still going to be 3 months between gtk+ 3.0 and gnome 3.0
  60 < Company> desrt: it's just a lot of work if you keep the "must recompile to gtk3 without changes" idea
  61 < mclasen> Company: I think we've waffled a bit on this already, with part1
  62 < Company> mclasen: mostly with cairo_region_t - i dont think part 1 violated that
  63 < Company> actually, i'm pretty sure it didn't
  64 < mclasen> true, cairo_region is what I meant
  65 < Company> the reason for 2.24 for me would be to provide an update path for app developers: mkae it work with: 2.22, 2.24, 3.0 - in that order
  66 < Company> or something like that
  67 < mclasen> how do others feel about this ?
  68 < desrt> so basically it's a bodge of new 3.0 bling without breaking the old 2.x stuff
  69 < Company> yeah
  70 < Company> something like gtk_drag_set_icon_surface()
  71 < Company> (not sure how to do that with gtk2 though - probably with a copy to a pixmap ;))
  72 < Company> and some really useful convenience APIs - like the gdk_window_create_similar_surface() that I only realize are useful while hcking on this stuff
  73 < tristan> Company, I would have liked to do that for SizeRequest (backport it and let us remove more cruft) but from what I understand it cant be dont 100% portabley
  74 < mclasen> ebassi: will clutter-gtk have a chance to work with the pixmap removal at all ? in that timeframe ?
  75 < tristan> s/dont/done
  76 < Company> fwiw, i suspect more weirdnesses to come up during 3.0 development where we'd wish we had deprecated APIs in GTK2 so we could remove them for 3.0
  77 < tristan> it still technically breaks at least inkscape and maybe still gimps wrapping box
  78 < Company> outside of the rendering-cleanup
  79 < ebassi> mclasen: well. clutter-gtk 1.0 will depend on gtk 3.0 anyway; I have to do a clutter-gtk 0.12 that depends on gtk+ 2.x with the widgets embedding for evolution (and meego), but I can use #undef GTK_DISABLE_DEPRECATED if push come to shove
  80  * desrt eyes GtkAction
  81 < ebassi> mclasen: if I have to get a X11 Pixmap from a cairo surface or from a GdkPixmap, I don't particularly care
  82 < mclasen> ebassi: well, I guess the question is: will clutter-gtk 1.0 work ok without pixmaps, or are you going to be in trouble ?
  83 < mclasen> ah, ok
  84 < ebassi> mclasen: I'm going to be in trouble if I don't have a Pixmap XID
  85  * herzi_ too
  86 < ebassi> otherwise, it's just API calls
  87 < Company> mclasen: everything will work fine, pixmaps break nothing but function names really
  88 < Company> *pixmaps removal
  89 < mclasen> ok
  90 < Company> a cairo xlib surface has the same API basically
  91 < mclasen> so, is this an agreeable plan: pixmaps stay in 2.22, we'll extend 2.x with a short release that nukes them ?
  92 < desrt> by 'nuke' you mean deprecate
  93 < mclasen> plus whatever additional deprecations we find necessary 
  94 < Company> (and whatever else comes up!)
  95 < ebassi> Company: so I guess we can get gdk_window_get_similar_surface() take into account offscreen windows
  96  * Company doesn't want to be the only one responsible for 2.24 ;)
  97 < ebassi> Company: too late
  98 < ebassi> ;-)
  99 < Company> ebassi: what do you mean "take into account"?
 100 < ebassi> Company: I mean, make sure that a GdkOffscreenWindow will return the surface wrapping the backing pixmap
 101 < mclasen> Company: plus we'll make you fix all of the desktops rendering, so you'll be responsible for gnome3 too
 102 < mclasen> well, you already claimed the gnome3 slip anyway :-)
 103 < Company> yeah
 104 < Company> i don't want people to hate me when gnome 3 gets delayed to next september...
 105 < ebassi> we'll make sure it doesn
 106 < ebassi> 't
 107  * ebassi prepares the whip
 108 < mclasen> anything else on rendering cleanup ?
 109 < Company> oh, also there's a part 2.5: I intend to make GdkColormap die
 110 < mclasen> I guess we all agree that part 3 is pretty much up in the air still
 111 < Company> colormaps are just confusing these days and the only use case is setting translucency on windows
 112 < Company> and we can do that better with visuals
 113 < Company> that would be 2.24 material again
 114 < mclasen> yep
 115 < ebassi> okay, the point on releases and dates is pretty much sorted already: 2.22 for GNOME 2.32, 2.24 with 3.0
 116 < mclasen> so, 2.22 in september, 2.24+3 endofyear
 117 < ebassi> yup
 118 < Company> but yeah, summary: part 1 landed, part 2 in preparation, part 3 in flux and not really necessary, part 4 probably easy with part 2 and without part 3 even
 119 < mclasen> part4 is what again ?
 120 < mclasen> the theme stuff ?
 121 < Company> expose_event => draw
 122 < krh> yeah, what was the parts again?
 123 < Company> part 1: removal of gc, image etc
 124 < krh> (sorry if it was pasted earlier, joined late)
 125 < Company> part 2: getting rid of GdkPixmap (requires themeing changes or huge hacks) and GdkColormap
 126 < Company> part 3: reorg of GdkWindow
 127 < Company> part 4: expose_event => gtk_widget_draw()
 128 < mclasen> krh: is any of this important for your wayland backend ?
 129 < krh> mclasen: it all makes it easier
 130 < krh> the longer Company hacks on gtk+, the less I have to do :)
 131 < Company> considering all the code does cairo_create (); draw(); cairo_destroy() already, it should all more or less work in wayland
 132 < mclasen> he gets all the blame, and you get all the fame :-)
 133 < krh> and all I have to do is wait :)
 134 < Company> "it's impressive how much you can get done if you don't care who gets the glory"
 135 < mclasen> I guess the more interesting parts in the wayland backend are input related anyway ?
 136 < mclasen> but lets move on, I think
 137 < krh> yeah
 138 < ebassi> desrt: I guess glib 2.26 is still on for GNOME 2.32 and we'll also do a 2.28 for gtk+ 3.0 (dec '10) or do we delay until GNOME 3.0 (march '11)
 139 < Company> krh: you redo input for GdkWindow!
 140 < ebassi> desrt: I'm just trying to get the full picture
 141 < desrt> i'd like a glib release to go with 2.24/3.0
 142 < desrt> i'm sure there's a thing or two that will come up
 143 < ebassi> okay
 144 < mclasen> sounds reasonable to me, too
 145 < krh> Company: the new GdkDevice goes a long way towards what I need, actually
 146 < Company> we should plan for a glib release, we can still omit it if nothing comes up
 147 < ebassi> did whatever danw was working on actually got reviewed/landed or do we wait for the next cycle?
 148 < mclasen> we've pushed a lot of new stuff in this cycle, so there's probably going to be some additions required as people adopt it
 149 < mclasen> danw was working on at least two things
 150 < mclasen> some tls / ssh /whatever networking
 151 < Company> ebassi: whaddaya mean? the caching, the TLS sockets or proxies?
 152 < ebassi> proxies
 153 < mclasen> and some unix stream improvement
 154 < Company> i _think_ proxies landed
 155  * Company looks it up
 156 < mclasen> we also didn't land the datetime work yet
 157 < ebassi> I think TLS sockets were already punted, but proxy support was requiring a final review
 158 < ebassi> mclasen: I did a review again, but stuff still is missing
 159 < ebassi> I think I'll JFDI myself
 160 < mclasen> thats the spirit
 161 < mclasen> so it looks like we'll have things to land in a 2.28 glib release anyway
 162 < Company> hrm no
 163 < mclasen> who is next ? refactoring branch (jjardon) or gapplication (desrt) ?
 164 < Company> the proxy bug is still open
 165 < mclasen> since jjardon is not here, desrt wins, I guess
 166 < desrt> good times
 167 < desrt> i'm landing my changes for gaction today
 168 < mclasen> might be good to give a brief summary for people who haven't followed our discussion the other day ?
 169 < desrt> network is going to shit here :(
 170 < desrt> okay.  so basically: i'm introducing a new abstract class called a GActionGroup
 171 < Company> proxy stuff: <danw> Company: last i knew the plan was still to get it in. stormer is working on it and very close to done
 172 < desrt> it represnts a group of named actions.  each action has a parameter type so the Activate() signal takes this parameter
 173 < desrt> it's a GVariant*
 174 < desrt> so you can have parameters that are tuples if you want to support multiple parameters
 175 < desrt> there is a simple implementation of this -- GSimpleActionGroup
 176 < desrt> it's just a hash table (by name) of another new class being introduced: GAction
 177 < desrt> that's just one named action
 178 < desrt> the idea is to make GtkAction a subclass of GAction
 179 < stormer> sorry was way, code have had severa review now and is ready now
 180 < desrt> load a bunch of GtkActions up into a GActionGroup
 181 < desrt> and throw that into your GApplication
 182 < mclasen> stormer: thanks for the update
 183 < ebassi> mostly similar to what MxApplication does, so I approve :-)
 184 < desrt> (GApplication itself will be a GActionGroup, so you can invoke the actions on the Gapplication and they will either be delivered to the internal actiongroup (master process) or transmitted over the bus (remote process)
 185 < mclasen> those actions don't have descriptions anymore, though
 186 < ebassi> desrt: is-a?
 187 < mclasen> just names
 188 < desrt> right.
 189 < desrt> ebassi: gapplication subclasses gactiongroup
 190 < ebassi> mmh
 191 < ebassi> I'd rather go with a proxy instead of a direct inheritance
 192 < desrt> it sort of is a proxy
 193 < desrt> it's an actiongroup that you add other actiongroups to
 194 < desrt> (possibly more than one)
 195 < desrt> that's where the actions go in the primary instance case...
 196 < desrt> if the gapplication finds out that it's remote then it just drops its reference on all the (local) actions that you gave it
 197 < desrt> a couple of things worth noting that are different/improved vs. GtkAction
 198 < desrt> 1) there's a unified mechanism by which actions can be stateful.  an action has a GVariantType* that is the type of the 'state'
 199 < desrt> (if NULL then no state)
 200 < desrt> this is how we do things like toggleactions -- the state type would be boolean in this case
 201 < desrt> 2) as mclasen mentioned, no descriptions are included in GAction.  also no tooltips, labels, icons, display hints, visibility, anything like that
 202 < desrt> only 'enabled' (which more or less is the same as 'sensitive')
 203 < mclasen> so we'll have to have some presentation layer on top, I assume
 204 < desrt> right
 205 < desrt> GtkAction will subclass GAction and it will have all that info inside of it
 206 < ebassi> fair enough
 207 < desrt> 3) actions can be in more than one GActionGroup
 208 < desrt> also: a GtkAction can be in a GtkActionGroup and several GActionGroup at the same time
 209 < desrt> a GActionGroup doesn't impact the GAction in any way (sensitivity sharing, etc)
 210 < desrt> also: GtkActionGroup and GActionGroup are not related
 211 < desrt> 4) GActionGroup has change notification signals for when items are added, removed, or when an item has its 'enabled' status or state changed
 212 < desrt> that means that we can export a dbus API properly
 213 < desrt> 5) i plan to add a GtkRadioGroup that is a subclass of GAction that works like this:
 214 < desrt>   - you add GtkRadioAction or GtkRadioButton to it
 215 < desrt>   - each button you add is given a (string) name
 216 < desrt>   - the 'state' of the action is the name of the currently selected button
 217 < mclasen> is there any provision for platforms that may not allow fully general parameterized actions ?
 218 < desrt>   - begin gsettings binding bliss
 219 < desrt> mclasen: they can't call them.
 220 < mclasen> or rather, how is the platform abstraction handled in this rewrite ?
 221 < desrt> mclasen: our concern for other platforms ends at the ability to integrate menus
 222 < desrt> menu items can't have parameters anyway
 223 < desrt> if you want the scripting interface then clearly you'll need dbus
 224 < mclasen> will we stil have a dbus implementation and a placeholder where other platform implementatoins can be fit in ?
 225 < desrt> heh.  yes. :)
 226 < desrt> i have no particular desire or plans to investigate the other platforms :/
 227 < mclasen> a little unfortunate that the os x guys haven't shown much enthusiasm yet to make their stuff fit in here
 228 < desrt> las (on #gtk+) indicated that he has some interest to do so...
 229 < desrt> but not enough time at the moment
 230 < mclasen> your rework might make it easier for them, I assume
 231 < desrt> it's worth noting, btw, that i just got my email back from tedg
 232 < mclasen> they had quite some issues with colins initial scope
 233 < desrt> and he's willing to make really substantial changes to dbusmenu to fit our separated actions/menu design
 234 < aruiz> \o/
 235 < desrt> who are 'the mac guys'?
 236 < desrt> las, for example?
 237 < garnacho> I'd talk with kris as well
 238 < mclasen> las and I don't know john ralls irc nic
 239 < desrt> las seems pretty much very positive with almost everything that i have proposed
 240 < desrt> so i take that to be a good sign
 241 < mclasen> I don't think dbusmenu will be very relevant per se here ? except as an example of prior art, I guess
 242 < desrt> well
 243 < desrt> dbusmenu has several existing implementations
 244 < desrt> truth be told, from a technical standpoint, it's my opinion that it's simply not what we want
 245 < desrt> i listed my problems with it to ted and said "i doubt you want to change it this much, so it looks like we end up going our own way"
 246 < desrt> he replied:
 247 < desrt> Honestly, I'd rather fix dbusmenu to address everyone's concerns than
 248 < desrt> develop something new on either front.  I think the only thing that's
 249 < desrt> radically different is the concept of the dual set of properties.
 250 < desrt> Everything else seems evolutionary.
 251 < desrt> ("dual set of properties" => how he understood my description of action/menu separation)
 252 < desrt> i'll keep in touch with him in any case
 253 < mclasen> sure
 254 < desrt> none of this speaks to GtkApplication yet
 255 < aruiz> he should be attending this meetings though
 256 < aruiz> but anyway
 257 < aruiz> :-)
 258 < desrt> ebassi: i'm interested in what you might have to say about that
 259 < aruiz> these*
 260 < ebassi> desrt: as I said, I generally agree with the design; I looked at the earlier commits and they look fine
 261 < desrt> okay
 262 < desrt> i had a few questions about the existing code
 263 < desrt> it does some really random things
 264 < ebassi> desrt: I still have some reservation on GApplicationGroup being an actual ancestor of GApplication, but nothing much
 265 < desrt> like looking at some weird environment variables in order to find a .desktop file to open to determine the default title that application windows get
 266 < desrt> that seems so broken
 267 < desrt> ebassi: i'd like to chat with you after the meeting, then
 268 < mclasen> desrt: that was just a performance hack
 269 < ebassi> desrt: there is no uniform way of getting a .desktop file without cooperation from the thing that sets up the execution environment
 270 < mclasen> if we launch it from a desktop file, no need to go over all desktop files to find it again on the other side
 271 < ebassi> desrt: unless we rename all .desktop file using the unique application id
 272 < mclasen> born out of colins desire to have a single place for app information
 273 < desrt> why does the app want to find its own desktop file?
 274 < ebassi> desrt: because we're going to put more state into it
 275 < desrt> interesting
 276 < ebassi> and remember remote instances
 277 < desrt> so one thing that comes to mind is that the environment variable approach is going to end up being insufficient, i think
 278 < ebassi> if I want to control rhythmbox by using a GApplication proxy I want to extract meta-data from the .desktop file of rhythmbox
 279 < desrt> if we want to talk about using dbus to launch apps...
 280 < desrt> we can shove something into platform-data i guess......
 281 < ebassi> desrt: using the platform data would be the non-hacky version
 282 < desrt> much better we do it properly, though, and somehow make it possible to go from appid to desktop file efficiently
 283 < ebassi> desrt: one way is to create a desktop-file-cache, similar to the icon-cache, to make it easy to index stuff efficiently
 284 < desrt> yes.  that's sort of along the lines of what i was thinking, i guess
 285 < mclasen> yeah, having a real app db would be nice
 286 < desrt> alternatively: investigating changing desktop file filenames or appid strings to be the same thing
 287 < ebassi> but that would require a gtk-update-applications binary executed post-install
 288 < mclasen> we already run update-desktop-database
 289 < mclasen> and update-mime-database
 290 < mclasen> and gtk-update-icon-cache
 291 < ebassi> mclasen: right
 292 < mclasen> ...
 293 < desrt> don't forget glib-compile-schemas =)
 294 < mclasen> oh, and glib-compile-schemas
 295 < mclasen> jinx
 296 < desrt> thx.
 297 < desrt> okay.  small technical detail.
 298 < ebassi> desrt: we're getting pushback for changing application names - changing application files will take ages. and I *already* know that OO.o and Eclipse will take at least 2 years to notice ;-p
 299 < desrt> one more point i think is worth dragging into this discussion (and it's on the agenda anyway): gtk_init
 300  * mclasen put 'drop cmdline args' on the agenda further down...
 301 < Company> do it automatically when the so is loaded!
 302  * Company hides again
 303 < desrt> right.  i'm pulling it up. :)
 304 < ebassi> heh
 305 < ebassi> Havoc's old pet peeve
 306 < desrt> on .so load is very obviously wrong
 307  * mclasen doesn't remember havoc having a prominent position on this ?
 308 < desrt> anyway... i don't care too much about the fact that you have to call gtk_init()
 309 < desrt> i care that it wants to eat your commandline args
 310 < ebassi> mclasen: he tried to get clutter to get rid of it :-)
 311 < mclasen> of the init or of the cmdline args ?
 312 < ebassi> mclasen: the init in itself
 313 < desrt> ebassi: i think having explicit init is very helpful just because initing gtk is a big deal
 314 < desrt> connection to X server opens up, etc
 315 < desrt> also: your app can be killed if that fails...
 316 < Company> desrt: why would you link against ligtk but not call gtk_init()?
 317 < ebassi> desrt: I'd like either a gtk_init() with no args and a gtk_parse_args() that takes my option entries/groups and parses everything
 318 < ebassi> or only gtk_parse_args()
 319 < desrt> Company: take the GApplication case -- no reason for the remote instance to connect to X
 320 < desrt> ebassi: i'm actually advocating that Gtk have no commandline arguments at all, ever
 321 < Company> desrt: hrm
 322 < Company> no command line args, ever!
 323 < ebassi> desrt: so a gtk_init() with no args
 324 < Company> no lib should take commandline args
 325 < desrt> yes.  and no parse_args() functions.
 326 < mclasen> desrt: its too late, for ever, but we can discuss removing them from gtk3
 327 < desrt> gtk should use environment variables if it wants options
 328  * Company <3 that gtk3 has GTK2_RC_FILES
 329 < desrt> mclasen: right.  'ever, after 3.0' :)
 330 < desrt> we have a compatibility concern, of course
 331 < desrt> people who want to have gtk2 and gtk3 apps without lots of #ifdef
 332  * mclasen wonders if there is a envvar variant of --sync
 333 < desrt> anything that lacks an environment variable can gain one if there is demand
 334 < mclasen> doesn't look like it, but can be easily added, of course
 335 < Company> mclasen: not in xlib, no
 336 < mclasen> desrt: the one concern with env vars is that they leak
 337 < mclasen> unless you are careful when launching 
 338 < desrt> mclasen: i think we're long past that point, though
 339 < Company> mclasen: isn't that usually what you want?
 340 < desrt> consider our current situation: an assortment of options to gtk: some are commandline, some are environment
 341 < desrt> we already have the leak problem
 342 < mclasen> yeah, its not a huge concern
 343 < mclasen> just pointing it out
 344 < desrt> anyway... are we brave enough to do gtk_init(void)
 345 < mclasen> and we do care to clean some things out of the environment already, like the startup notification stuff
 346 < desrt> or should we rather tell people to always do gtk_init(NULL,NULL);?
 347 < desrt> (and maybe give g_warning() if they do not)
 348 < Company> and you add the env vars to 2.24?
 349 < desrt> yes.  of course.
 350 < Company> dunno
 351 < desrt> see?  now you're not the only one :)
 352 < Company> i like the "add env vars to 2.24 and give a warning if non-NULL"
 353 < Company> but i don't like the "keep 2 NULL args in gtk 3"
 354 < desrt> ya...
 355 < desrt> lemme see something
 356 < desrt> hmm
 357 < desrt> #define gtk_init(...) gtk_init();
 358 < desrt> so this works
 359 < desrt> er.  no ;, obviously
 360 < mclasen> but then you can also call gtk_init (1, 2, 3), I guess
 361 < bratsche> desrt: Why no commandline args ever?  --sync is a useful one.
 362 < Company> and it breaks compat
 363 < desrt> if you fancy....
 364 < desrt> Company: it keeps source compat, no?
 365 < desrt> bratsche: we're going to add an environment variable for that
 366 < Company> bratsche: then let your app provide it
 367 < Company> bratsche: GTK_SYNC=1 app otherwise
 368 < bratsche> Ah, okay.
 369 < bratsche> I'm not up to speed on stuff then.  Carry on. :)
 370 < Company> desrt: yes, but not binary - or did you want to do that for gtk3
 371 < Company> ?
 372 < desrt> Company: gtk3 only
 373 < Company> ugh
 374 < desrt> btw: it would also keep binary compat :)
 375 < desrt> oh.  interesting.
 376 < Company> let's not start putting hacks into gtk3
 377 < bratsche> What about glib commandline arg parsing?  Like --g-fatal-warnings and such?
 378 < mclasen> it obviously has cost in invalidating all the cmdlines that people might have stored in desktop files, shell scripts, .Xclients, etc
 379 < Company> bratsche: G_DEBUG=fatal-warnings
 380 < desrt> so you're proposing that we do the hack in 2.24
 381 < desrt> and just have straight (void) in 3
 382 < bratsche> Okay, cool.
 383 < Company> desrt: yes, it's trivial to fix apps and i'd rather have apps look sane
 384 < mclasen> bratsche: that one is wierd, because it is actually a gtk option...
 385 < Company> desrt: ideally i'd have a different name, but i suppose that's a bad idea for init
 386 < desrt> okay... so we'd keep source compat
 387 < desrt> and we're keep binary compat, too, actually
 388 < desrt> since the new function would just ignore its arguments
 389 < bratsche> mclasen: I didn't even realize that. :)
 390 < mclasen> desrt: the idea is still that gtkapplication will call gtk_init, right ?
 391 < Company> desrt: the hack in gtk2 doesn't work
 392 < desrt> yes.
 393 < Company> because you'll fail to parse cmdlines
 394 < mclasen> so that our 'ideal' application will not ever run into this
 395 < desrt> Company: you want commandline arg parsing to continue to work?
 396 < Company> desrt: during 2.x, yes
 397 < desrt> okay.  that's fair.
 398 < Company> desrt: otherwise you break ABI
 399 < Company> is there a global arc/argv defined in libc?
 400 < desrt> right.  old ABI is that gtk_init() was a function that removed instances of "--sync" from the strv you passed
 401 < desrt> no.  i think not.
 402 < desrt> we could just have a new function name....
 403 < Company> that'd be a nice workaround
 404 < desrt> gtk_start
 405 < Company> but everyone and their dog names init functions init
 406 < desrt> or we could have it be implicit
 407 < ebassi> gtk_setup()
 408 < desrt> ya.  _init() is certainly the correct name
 409 < ebassi> gtk_ready_set_go()
 410 < desrt> the other alternative is that we can expect people to #ifdef
 411 < desrt> or............
 412 < desrt> we make some #define gtk_ready_set_go() gtk_init(NULL, NULL) in 2.x
 413 < desrt> and #define gtk_ready_set_go() gtk_init() in 3
 414 < desrt> so you can use gtk_ready_set_go() if you want to target both
 415 < desrt> that's a very very small weight to carry in 3.x going forward
 416 < Company> it's all ugly, no matter what you invent
 417 < mclasen> I think gtk_init (NULL, NULL) is also a small weight
 418 < desrt> and eventually the assumption is that people will only care for 3
 419 < Company> the best thing you can probably do is make gtk_init (...); in gtk 3
 420 < desrt> mclasen: it's an uglier one
 421 < mclasen> in particular if you hide it behind gtkapplicaiton
 422 < Company> and ignore all passed args
 423 < mclasen> ok, should we move on ?
 424 < ebassi> yes
 425 < mclasen> or are we out of time ?
 426 < ebassi> I guess we still have 25 minutes
 427 < aruiz> :-)
 428 < desrt> soname?
 429 < ebassi> then we get to 2hrs
 430 < mclasen> ok soname
 431 < desrt> is this the -x11 issue?
 432 < mclasen> owen pointed out to me that libs we ship in 2.90 have absurd versions
 433 < mclasen> libgtk-x11-3.0.so.0.9005.0
 434 < mclasen> because I forgot to update the configure.in hackery that generates them
 435 < mclasen> so, the idea we came up with is to change the soname to
 436 < mclasen> libgtk-x11-3.so.0.0.0 when we get to 3.0
 437 < ebassi> sounds good to me
 438 < Company> is libgtk-x11-3.0.so.1 so bad?
 439 < mclasen> since we've already 'wasted' the 3.0 name
 440 < mclasen> oh, you mean go to libgtk-x11-3.0.so.1.0.0 ?
 441 < desrt> i'm not sure what the benefit here is
 442 < Company> yeah
 443 < desrt> either way, you require a recompile when 3.0 hits the street
 444 < stormer> also 3.1 should not break ABI
 445 < mclasen> not sure it makes a difference
 446 < mclasen> and yeah, it implies that we'll require a recompile going from 2.90.x -> 3
 447 < stormer> well 3.1 would ship with libgtk-x11-3.0.so.X
 448 < Company> stormer: current libgtk is libgtk-x11-3.0.so.0.2000.x
 449 < desrt> if we need the recompile anyway, why not just keep the 3.0 name?
 450 < mclasen> desrt: because then we're stuck with absurd high versions ?
 451  * Company doesn't care
 452 < desrt> just bump it back down to the bottom again
 453 < Company> desrt: no!
 454 < desrt> either way it's the same: stuff already compiled will stop working
 455 < mclasen> I don't think the linker will take that gracefully
 456 < Company> desrt: then my package manager will do the wrong thing
 457 < Company> desrt: it'll link to an old lib because it's newer
 458 < desrt> it'll link to whatever the .so file points to....
 459 < Company> desrt: libgtk-x11-3.0.so.0 will be linked to libgtk-x11-3.0.so.0.9050.0 instead of libgtk-x11-3.0.so.0.0.0
 460 < Company> desrt: on make install at least, probably when installing packages, too
 461 < mclasen> ldconfig will get confused, at least
 462 < desrt> hmm
 463 < desrt> is it even possibel to have gtk2.90 and 3.0 packages parallel installed?
 464 < mclasen> if you just make install, certainly
 465 < Company> desrt: it is on my devel box, i'm sure :)
 466 < desrt> i don't see widespread pain and panic here :)
 467 < mclasen> no, just a detail to get right
 468 < Company> i'd just bump to so.1 and be happy
 469 < mclasen> to avoid localized pain and anger
 470 < mclasen> ok, I'll consider that
 471 < desrt> having the soname vaguely resemble the pkgconfig name is kinda nice...
 472  * Company notices his girlfriend is 40 minutes late
 473 < desrt> isn't there a phil collins song about this?
 474 < mclasen> next, I have some small patches that I just wanted to run by this crowd before landing them
 475 < mclasen> first http://bugzilla.gnome.org/show_bug.cgi?id=84188 - an oldie
 476 < mclasen> it is about making buttonboxes not fully homogeneous
 477 < mclasen> but instead let 'outliers' have their own width
 478 < mclasen> I wrote the patch because it is somewhat required for the lockbutton widget that I want to land in gtk3 (and forgot to put on the agenda)
 479 < desrt> an outlier is what?  more than 1.5x the average or something?
 480 < mclasen> exactly
 481 < mclasen> of course, the details can be tweaked
 482 < mclasen> I have put some more ideas in the bug
 483 < mclasen> we could also add a way to explicitly mark children as non-homogeneous
 484 < desrt> seems like a pretty reasonable idea
 485 < desrt> mclasen: i think we want to avoid that
 486 < desrt> mclasen: for the i18n reason mentioned in the bug
 487 < desrt> people might feel like they're being helpful, but actually end up causing more harm
 488 < mclasen> I know, but there may be situations where you know a child is going to be different
 489  * desrt reads that last statement in a total context vacuum, laughs.
 490 < aruiz> desrt, I did the same
 491 < mclasen> ok, I'd appreciate comments in the bug
 492 < desrt> right.  non-text content, i guess
 493 < mclasen> moving on, draw-border removal
 494 < desrt> as long as we mark the API docs very clearly "don't call this"
 495 < mclasen> http://bugzilla.gnome.org/show_bug.cgi?id=426924
 496 < mclasen> we have this experimental style-property to add a 'draw border' around widgets
 497 < Company> mclasen: remove it
 498 < mclasen> which came out of krh+owens experiments with cairo theming long ago
 499 < mclasen> nobody ever used it
 500 < mclasen> except at some point we used it as a hacky fix for a problem with mnmemonic underlines in labels
 501 < Company> we might want it back later when we actually use it, but we'll do it properly then
 502 < mclasen> and it has some performance overhead
 503 < desrt> from the minimal understanding i have, my gut agrees with Company 
 504 < ebassi> I'm all for nuking it
 505 < mclasen> so, if there is no disagreement, I'll deprecate in 2.x and remove in 3
 506 < Company> yes
 507 < Company> i didn't even know it existed :o
 508 < desrt> mclasen: i think you have rather strong agreement, in fact
 509 < mclasen> last patch I have is about stock icon names
 510 < Company> and it breaks widgets with real windows
 511 < mclasen> http://bugzilla.gnome.org/show_bug.cgi?id=626474
 512 < Company> and i bet it doesn't work with csw
 513 < Company> :)
 514 < mclasen> who knows ?
 515 < mclasen> and now we'll never find out...
 516 < Company> i don't wanna know :)
 517 < mclasen> so, stock icon lookup falls back to icon themes
 518 < mclasen> and looks up the stock id in the icon theme
 519 < mclasen> and then we have these symlink forests in our icon themes to map stock ids to existing icons
 520 < mclasen> the patch I put in that bug moves the map from the filesystem into gtk
 521 < desrt> with some extra syscalls to go with, it seems?
 522 < mclasen> so we can use 'standard' icon themes without any symlink uglyness
 523 < mclasen> syscalls ?
 524 < desrt> or is this all benefiting from the icon cache?
 525 < mclasen> yes, it all goes through the icon cache
 526 < desrt> ya.  you mention trying stuff, falling back...
 527 < mclasen> the symlinks were reflected in the cache, too
 528 < desrt> with the icon cache, that's not so bad
 529 < Company> mclasen: reminds me: can we eprecate either stock ids or icon names?
 530 < Company> (and remove in gtk3)
 531 < mclasen> well, gtkstock has its own mechanisms to associate icons with ids
 532 < Company> or is there notable differences?
 533 < desrt> stock has text too
 534 < mclasen> which can be set from gtkrc files, and whatnot
 535 < desrt> and a mnemonic, i think?
 536 < mclasen> I think stock items are sufficiently different that we can't really get rid of them entirely on short notice
 537 < Company> ok
 538 < mclasen> this is just a small step in that direction
 539 < Company> they seemed very similar to me, but i only looked at drawwing them ;)
 540 < mclasen> I'm bringing it up here, because I like to commit this change to 2.x as well
 541 < mclasen> since we'd otherwise be stuck with the symlink forests anyway
 542 < mclasen> until gtk2 dies
 543 < ebassi> mclasen: since I'm the one getting an earful from hbons every time we go to the pub, I wholly approve :-)
 544 < mclasen> it will add a bunch of strings to libgtk
 545 < mclasen> so make it a bit larger, and some relocations
 546 < mclasen> but not a huge deal, I think
 547 < mclasen> and .... I think we've used up our time now
 548 < desrt> :(
 549 < mclasen> chpe: unless you want to squeeze in your boxed type
 550 < chpe> I do
 551 < mclasen> ok, 5 min
 552 < chpe> https://bugzilla.gnome.org/show_bug.cgi?id=449565
 553 < chpe> patch was adapted to all of timj's demands, and just lacks a final approval
 554 < ebassi> chpe: 1/2, as far as I'm concerned
 555 < mclasen> sure, lets get this in. I agree
 556 < mclasen> in particular since it will actually save code in gio
 557  * desrt looks for things to box
 558 < chpe> http://bugzilla-attachments.gnome.org/attachment.cgi?id=165043 is a patch that makes all of glib use it
 559 < chpe>  7 files changed, 50 insertions(+), 263 deletions(-)
 560 < desrt> anything to stop chpe from pushing this now?
 561 < ebassi> sounds like a nice day's worth of work :-)
 562 < mclasen> small potatoes, compared to Company, but I like it
 563 < Company> haha
 564 < desrt> meh.
 565 < desrt> chpe's work lets other people erase code from their own programs
 566 < desrt> that's the true indicator of a good library :)
 567 < mclasen> chpe: so, go ahead, I think. Everybody agrees
 568 < desrt> Company's work only erases our own :p
 569 < chpe> ok, thanks :)
 570 < mclasen> desrt: any hackfest news before we part ?
 571 < desrt> sign up!
 572 < ebassi> oh, oh: one thing for desrt - https://bugzilla.gnome.org/show_bug.cgi?id=626919
 573 < desrt> the wiki looks very empty
 574 < desrt> and i know many more people will be coming than are listed
 575 < ebassi> desrt: I shall have a confirmation on friday at most
 576 < desrt> ehm
 577 < desrt> why are you filling this array of paramspecs?
 578 < mclasen> to avoid a hash table lookup later on
 579 < ebassi> desrt: because calling g_object_notify_by_pspec() cuts the ::notify call time by 10/15%
 580 < desrt> oh.  i didn't know that.
 581 < ebassi> and we emit *a metric fuckton* of ::notify
 582 < desrt> i don't like it for a very simple reason: it forces you to write PROP_FOO twice
 583 < ebassi> yeah, ideally we should get away from attaching a uint to the GParamSpec to do what an array does better
 584  * mclasen needs to run out now
 585 < mclasen> next meeting in 2-3 weeks ?
 586 < ebassi> mclasen: sure
 587 < mclasen> we should probably have at least one more before the hackfest, to work on the hackfest agenda
 588 < desrt> i guess we'll easily have 2 or 3 before the hackfest
 589 < ebassi> desrt: we can discuss it on #gtk+ or on gtk-devel-list
 590 < desrt> bye everyone :)
 591 < ebassi> thanks for attending
 592 < stormer> bye bye
 593 < ebassi> as usual, minutes and log ASAP
 594 < aruiz> bye bye

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.