/srv/irclogs.ubuntu.com/2013/03/21/#ubuntu-mir.txt

RAOFDear clang: thank you for catching the spelling mistake in "mark_as_sumbitted" that g++ ICEs on.01:07
RAOFMuch love, Chris.01:07
RAOFLess love because your build of the unit-tests segfaults, but that may well be our problem.01:10
* xnox is actively learning C++ and I'm using clang++ cause otherwise I'd be stuck learning gcc codebase instead.01:48
dufluxnox: Clang is really useful in telling you what mistakes you've made, regardless of skill level. Keep in mind however that Mir is not yet functional when built with clang++. And it might not be for a long time.02:07
RAOFOk. What the hell?05:47
RAOFThis: http://paste.ubuntu.com/5633273/ patch makes MirClientSurfaceTest.client_buffer_created_on_next_buffer segfault.05:51
RAOFBut MirClientSurfaceTest doesn't *use* AgingBuffer, nor do any of its dependencies!05:51
dufluRAOF: Side effects... Maybe try: valgrind bin/unit-tests05:53
* duflu tries to ignore the circus going on in Canberra05:53
RAOFduflu: I did, but it wasn't very helpful; just an invalid read, which I knew about because reading 0x1605:53
RAOFwas what was causing the segfauult.05:54
RAOFHAH!05:54
RAOFThat's a trick for the uninitiated - test_aging_buffer.cpp and test_client_mir_surface.cpp are both built into unit-tests, and have differing class definitions for mir::test::MockBuffer05:55
RAOFI have no idea why that's not either (a) a compile time error, or (b) supposed to work.05:56
RAOFThis suggests that our tests are quite fragile - we've got a number of definitions of mir::test::MockBuffer lying around in various .cpp files which just happen to be identical.05:57
dufluRAOF: The linker always chooses and keeps one copy of a symbol. It's only a problem if the multiple copies are different :)05:58
dufluRAOF: Sorry, I mean it chooses and keeps one of each unit name. By default an object is a unit, but you can make single functions/methods separate units06:00
tvossRAOF, can this be connected to -Bsymbolic_functions?06:01
RAOFtvoss: Maybe?06:03
* RAOF -> baby06:04
tvossRAOF, have fun :)06:04
duflutvoss: -Bsymbolic* flags are usually only needed in large plugin-based systems (like two of my previous projects). If you're not dynamically loading plugins then -Bsymbolic is usually a mistake that should have been solved with moving source code around. And/or better namespaces.06:09
tvossduflu, -Bsymbolic is one of the default flags set during package builds06:09
duflutvoss: Sure, it's safe to turn on. But in non-plugin systems you don't need it06:10
dufluIn plugin systems you need to to get around the problem of controlling which template instantiation the runtime linker binds to06:10
duflu"need it to"06:10
tvossduflu, I do agree with you, no question about that. But the ubuntu packaging setup pulls it by default06:11
dufluHmm, it's only a few characters, and probably doesn't hurt anyone06:12
dufluI'm sure there are use-cases for not having Bsymbolic but don't recall any06:13
dufluOh, yes I do. You want to avoid Bsymbolic when you have important data stored in static members of a class. To ensure everyone is looking at the same copy of the static member06:14
tvossduflu, yup, that was one of the use-cases that was breaking for us in one of the test-cases, but I cannot recall which one06:16
duflutvoss: You can avoid all these problems if you're careful to explicitly instantiate templates in a single location. And mark them as "extern" in your headers.06:17
dufluAssuming it's a template06:17
tvossduflu, it wasn't a template, I think it came down to a static object taking care of the google protobuf initialization06:18
dufluUgh06:18
tvossduflu, the approach is perfectly fine, but the cpp was compiled into multiple so's06:19
tvossduflu, and normally the linker should have made it one symbol, but with -Bsymbolic, every so got its own instance06:19
duflutvoss: Technically Bsymbolic does not affect or reduce duplicate symbols in your binaries. It only defines the rule for which one to point to at runtime.06:20
dufluIf there are duplicate symbols, then that's something to fix in the source code/makefiles06:21
tvossduflu, I do disagree. Looking at the definition of static in C++, the expected behavior even if the _same_ cpp is compiled into multiple so's that all get loaded at runtime, the symbol should be unique06:22
duflutvoss: Sure, if you're smart about creating the ideal compiler (which does not exist). I'm just talking about how to handle real-world compilers06:22
tvossduflu, well, gcc without -Bsymbolic actually works :)06:23
tvossduflu, so close to ideal06:23
dufluIdeal until you put in in a plugin system, load plugin A then B, and unload plugin A. You're left with B pointing to symbols in A that are no longer mapped in memory06:24
duflu"put it in"06:24
tvossduflu, @plugin system: agreed, but I was referring to implicitly loaded so's06:25
dufluYup. Just covering all the bases. All options have a use-case somewhere06:25
tvossduflu, yup06:26
* tvoss wants to have GNUInstallDirs as offered by cmake 2.8.10 :)06:36
RAOFWhy not have it?06:38
RAOFapt-cache policy cmake06:38
RAOFcmake:06:38
RAOF  Installed: 2.8.10.1-0ubuntu606:38
RAOF:)06:38
alf_duflu: lp:1158120, have you started looking into it? I noticed this in vm ci builds, and I was planning to investigate.07:37
alf_lp 115812007:37
ubot5Launchpad bug 1158120 in Mir "acceptance-tests.BespokeDisplayServerTestFixture is failing randomly (approx 10% of the time)" [High,New] https://launchpad.net/bugs/115812007:37
duflualf_: No not working on it07:37
alf_duflu: ok, I will take a look today then07:37
robert_ancellalf_, I'm still not resolving QtPlatformSupport/private/qgenericunixfontdatabase_p.h, in fact I don't have any private/ dir under /usr/include/qt5/QtPlatformSupport/07:59
robert_ancellqthybris is using similar stuff, but I seem to have all the build-depends07:59
alf_robert_ancell: there are some qt -private packages08:01
robert_ancellalf_, not in raring it seems, are they from a PPA?08:02
alf_robert_ancell: no, I am not using the PPA anymore, switched to the archive08:02
alf_robert_ancell: e.g. qtbase5-private-dev08:02
robert_ancellalf_, aha! Cheers08:03
tvossrobert_ancell, best to ask loicm :)08:04
robert_ancelltvoss, did he write some of this?08:04
robert_ancellbzr says no08:04
tvossrobert_ancell, I think the project is called qtubuntu now, and yeah, he wrote almost all of it08:05
* alf_ managed to delete his vim config files... to the backup!08:05
* robert_ancell bzr branches08:06
=== mmrazik is now known as mmrazik|crappy_i
=== mmrazik|crappy_i is now known as mmrazik
=== vibhav is now known as IdleBat
=== IdleBat is now known as vibhav
robert_ancelltvoss, oh, I've had my Loics confused. Thank makes more sense :)08:31
tvossrobert_ancell, I do keep confusing them, too :) let's call them french1 and french208:33
tvossrobert_ancell, as, according to tedg, there are approximately only 5 people living in France & Germany, enumerating them should be easy08:33
robert_ancelltvoss, I'm sure they would be supportive of the idea. We could get them all F1-F5 t-shirts for conferences too08:34
tvossrobert_ancell, yeah ... but hell breaks loose if they start exchanging shirts :)08:34
robert_ancellthose crazy French!08:35
=== alan_g is now known as alan_g|afk
* tvoss is scared of people eating frogs :)08:35
=== alan_g|afk is now known as alan_g
alan_galf_: looking at https://code.launchpad.net/~raof/mir/client-side-buffer-age/+merge/151869 ...09:42
alan_gI can't see why TEST(MirClientAgingBufferTest, buffer_age_starts_at_zero) passes, surely AgingBuffer default initializes buffer_age - which for a POD is an unspecified value. Am I missing something? Or should there should be a constructor that initializes buffer_age to 0.09:42
alf_alan_g: looking...09:43
alf_alan_g: I don't think TEST(MirClientAgingBufferTest, buffer_age_starts_at_zero) makes any sense at all, since we are testing the return value of a mock object. It passes because no expectation is set on age(), and googlemock just returns a default value (0).09:45
alf_alan_g: hmm, wait, let me look more closely09:46
alan_galf_: that's a different problem - it isn't a mock of AgingBuffer09:46
alf_alan_g: you are right, got carried away by the name09:47
alf_alan_g: does make_shared value-initializes the created object?09:49
alan_galf_: investigating09:50
alan_galf_: seems so09:52
alan_gIf I change it to use new, the test fails09:53
* alan_g shudders09:53
=== yofel_ is now known as yofel
=== alan_g is now known as alan_g|tea
=== alan_g|tea is now known as alan_g
alan_gAnyone read this? http://pragprog.com/book/lotdd/modern-c-programming-with-test-driven-development12:33
=== alan_g is now known as alan_g|lunch
tvossalan_g|lunch, nope, haven't read that one12:38
tvossalan_g|lunch, shall we share a copy, it's drm-free if I understand it correctly12:39
=== mmrazik_ is now known as mmrazik
=== alan_g|lunch is now known as alan_g
alan_gtvoss: I still like paper. (And I'd like to hear opinions before spending time reading it.)13:43
=== mmrazik is now known as mmrazik|afk
smspillazalan_g: looks interesting13:49
alan_gsmspillaz: it could well be. (But so are more books than I have time to read.)13:50
smspillazalan_g: anything in particular in that book that makes it worth reading though13:51
smspillazit kinda feels a lot like most other books I've read ("inject all the dependnencies, write all the tests!"13:51
smspillaz)13:51
alan_gsmspillaz: That's what I teach too - it really is as simple as deciding to do it.13:52
smspillazI guess the only stuff I'm interested at this point is "how to write effective tests that actually test all the cases"13:53
alan_gYou've read GOOS?13:53
smspillaza bit13:53
alan_gIt's the best book I know on the subject by some margin.13:54
alan_gBut then I drink beer with Nat & Steve.13:54
smspillazheh13:54
smspillazalan_g: heh, so the extracts from this book feel like "here is how to use google test ... the way you already use it"14:05
alan_gsmspillaz: it may be the way *you* use it. But there are a lot of wrong ways out there14:07
smspillazalan_g: of course, I'm sure there some bits I haven't considered in there14:08
Braggartkdub: Just read your latest entry on Ubuntu Planet. One thing you did not discuss is the prospect of Wayland compositor using Android drivers.14:54
BraggartDo ping me when you're around and reply, otherwise I myself would forget that I left this question.14:56
kdubBraggart, can't talk about everything at once :)14:58
kdubhello folks! status today, working on landing that android display branch, moving on to hwc work14:58
BraggartNothing wrong with that. Asking since you mentioned I can ask. :)14:58
Braggartkdub...?15:01
kdubif they can get it to work too, more power to them i guess :)15:04
kdubalso all, i'm back from san jose today, back to my normal day :)15:04
smspillazBraggart: my understanding is that pq got it working by hacking wayland to work on top of bionic, and then got it to the point where the compositor ran, but there was no graphics buffer sharing (as that was implemented through wl_drm which implemented wl_buffer)15:05
alf_kdub: Hi! Question: I get some flickering when I use render-surfaces on nexus 4. Is this because the vsync work is not finished there yet?15:05
kdubalf_, yep15:05
alf_kdub: ok15:05
kdubsmspillaz, Braggart that's my understanding as well, just the framebuffer was accelerated15:06
kdubalf_, that's what I plan on working on today actually :)15:06
alf_kdub: great :)15:07
BraggartNot possible to do a separate graphics buffer sharing bionic?15:07
Braggart*sharing implementation for bionic?15:07
smspillazBraggart: bionic isn't really the problem, I think it was just more of a case of it being not implemented yet15:09
=== alan_g is now known as alan_g|tea
BraggartSo instead of the said hypothetical implementation, we get a new compositor.15:12
BraggartRight that answers all my questions, thank you.15:12
Braggartsmspillaz: Thanks for all the hard work.15:12
smspillaz*shrug*15:12
smspillazmaybe I shouldn't talk to people, I seem to make them upset :(15:13
=== alan_g|tea is now known as alan_g
alan_gsmspillaz: I don't see anything in what you said. (Some people just want a pretext to be upset.)15:23
smspillazalan_g: heh, I've been in both positions before15:29
smspillazwith young age comes immaturity at times I guess15:30
alan_gThe young have no patent on immaturity15:30
smspillazprior art ?15:31
smspillazI suppose the seemingly limitless immaturity demonstrated by the "elder" Simon Crean in Australia today pretty much proves that point15:32
smspillaz(dunno if you saw, but there were a series of very dramatic events in australia today that pretty much put the nail in the coffin for current government come the september election)15:33
alf_alan_g: kdub: MultiThreadedCompositor needs an interface through which to learn when something in the surface configuration changes (i.e. to register a callback with). A couple of names I have thought so far: CompositingState(Notification), RenderStateChangeNotification. Of course, we could also extend RenderView, with the rationale that it is the interface through which the compositor subsystem in general accesses the surface stack, but this w15:33
alf_alan_g: kdub: Thoughts?15:33
=== mmrazik|afk is now known as mmrazik
alan_galf_: I think it is likely "CompositingContext" not "CompositingState"15:35
alan_galf_: but I think I prefer adding callbacks to RenderView.15:36
=== rsalveti_ is now known as rsalveti
alan_gCallbacks on a view seem to be a sensible mechanism15:37
kdubyes, a callback seems sensible15:38
kdubalf_, "when something in the surface configuration changes", whats an example of what you're thinking?15:40
kduban example of what changes, i mean15:40
alan_gyes, that's a point, the compositor isn't caching state - it submits code to be applied to the view.15:43
alf_alan_g: Conceptually a change callback fits in RenderView, and it's how I have it in my local code right now. On the other hand, RenderView is used by two different (but related) components for two different purposes, hence my concern.15:43
alan_gThen it might be that RenderView should be two related dependency interfaces15:44
alf_kdub: the idea is that the compositor will only composite when it needs to, which means when any surface changes state (position etc) or contents (a new buffer is pushed)15:44
alan_galf_: that makes a lot of sense15:45
alan_gso it would be like notify_changes(area, callback)15:46
=== gema_ is now known as gema
kdubalf_: ah, okay... when i was thinking about that problem a while back, a callback made sense like that made sense to me too15:47
alf_alan_g: in the first iteration it will just be notify_changes(callback), i.e., redraw everything when anything changes, but it surely makes sense to add the area later15:50
alan_galf_: the callback could be passed an affected area and the decision taken there15:51
alan_galf_: but I agree that's for later15:51
kdubalf_, we should always have a 'redraw all' even if can only redraw certain areas15:52
kdubdrivers sometimes -_-15:53
alf_alan_g: kdub: I was thinking about the area mostly in terms of which output is affected. At least for now, we don't support redrawing only part of an output; we recomposite the whole output every time.15:57
alan_galf_: sure15:57
alf_alan_g: kdub: ok, for now I will keep the callback in RenderView. We can reconsider later.16:00
alf_alan_g: kdub: callback => callback registration mechanism16:01
alf_thanks16:01
alan_galf_: ack. But this discussion makes me wonder if RenderView should be RenderModel16:01
* alan_g ducks16:02
=== alan_g is now known as alan_g|coding
alf_alan_g|coding: could be, let's see how the code feel in the MP, and I am happy to discuss further and amend16:03
ogra_kdub, hmm, your blog post seems slightly wrong, or do you actually plan to teach the android GLES drivers to do actual openGL ?16:15
kdubogra_, gp. no :) all opengles16:15
ogra_..."when you run mir inside of an Ubuntu Touch phone/tablet, you use the android platform to get full OpenGL acceleration"16:16
* alf_ is unhappy about ICEs he has been getting lately16:17
racarrMorning :)16:50
kdubmorning racarr16:51
racarrsorry to be a little late :)16:52
racarrI seem to have acquired always moving at ten million miles an hour syndrome these last few weeks16:52
racarrDid anyone have a chance to look at the...16:54
racarr"something" issue in send-input-to-clients requiring the dynamic cast16:54
racarrthis GCC crashing on all nontrivial template errors17:05
racarris starting to become a timesink -.-17:05
=== kgunn is now known as kgunnAFK
tvosskdub, could you fix your blog post regarding opengl vs. gles?17:18
kdubtvoss, yes, ogra_ had a good pt17:18
tvosskdub, thx :)17:18
ogra_:)17:19
kdubdone17:20
tvosskdub, thx again17:20
racarrI had a dream last night17:21
racarrwhere we had a code review tool where while reviewing the code you could suggest minor fixes inline17:21
kdubgerrit does that17:21
racarrand the person could accept or reject them easily17:21
racarrit was a nice dream17:21
racarrkdub: Is it useful? It sounds like it would be really useful if done right...17:22
kdubi liked gerrit a lot, but its aimed towards git17:22
racarrmm17:23
racarralan_g|coding: Updated send-input-to-clients and prepare-for-inprocess-egl but no hurry17:23
racarrDoes anyone have any thing they would like me to work on /review/help with17:35
racarror should I jump in to receive-input-in-client17:35
=== alan_g|coding is now known as alan_g
alan_gracarr: could you check https://code.launchpad.net/~vanvugt/mir/surface-types/+merge/154261 please?17:39
alan_gracarr: will look at send-input-to-clients and prepare-for-inprocess-egl now17:40
racarralan_g: Great thanks17:40
racarrwill look now17:40
racarralan_g: Would be interested to know what you think about the need for the dynamic cast in send-input-to-clients (SessionManager::set_focus_to)17:41
racarrit's quite difficult to find a refactoring that works ...17:41
alan_gracarr: the first thing I see on lp is "Text conflict in include/server/mir/shell/application_session.h"17:49
alan_gracarr: I guess you need either a dynamic cast or a lookup mechanism (hashmap?)17:53
racarralan_g: It seems so right...without some sort of heavier17:56
racarrrefactoring17:56
racarralan_g: One sort of possibility17:56
racarris that actually17:56
racarreh well.17:56
racarrif it worked in terms of IDs like Surface17:57
racarrthen you could keep track of the bits as msh::Surface inside the session manager, and return mf::Session from mf::SessionStore and msh::Session from msh::SessionManager17:57
racarrand it works because of covariant return types17:57
racarr(as opposed to the "covariant arguments" that you would need now)17:58
racarrbut it seems strange to store IDs like that because the only client of open/close session17:58
racarris the session mediator which only uses one session per instance17:58
racarrso its kind of just an obfuscation17:58
racarrfrom that perspective17:58
alan_gHmm smart pointers are not covariant17:58
alan_ganyway, I'm not bothered about the cast17:59
alan_gEven if it does suggest a bit of tension in the deswign17:59
racarrYeah it's always correct and clearly so by suggestion17:59
racarrbut it feels like it is17:59
racarra bug in our type system17:59
racarrhaha17:59
racarrs/suggestion/inspection17:59
racarr"Correct by suggestion" hmm17:59
racarrreviewed surface-types18:02
=== rafalm_ is now known as rafalm
racarrif prepare-for-inprocess-egl is ready to land we should wait to switch to approved18:03
racarruntil I can sync up with RAOF later and land the18:03
racarrmesa changes concurrently18:04
racarrmerging trunk in to send-clients-input now18:04
racarrlol...18:05
racarrthe deletion of trailing whitespace in application_session.h18:05
alan_gracarr: both branches need conflicts sorting out18:05
racarrconflicted with my addition of a metho18:05
racarralan_g: Just pushed fixed conflicts on send-input-to-clients18:05
alan_gracarr: just "went home"18:06
=== alan_g is now known as alan_g|life
racarrand prepare-for-inprocess-egl-clients :)18:07
racarralan_g|life: Sounds good :) have a good evening18:07
racarrbrb in 1518:09
=== mmrazik is now known as mmrazik|afk
racarrAnyone have time to give a final round of review18:47
racarrto prepare-for-inprocess-egl?18:48
racarrWell no rush18:48
=== kgunnAFK is now known as kgunn
tvossalf_, you still around?19:05
=== mmrazik|afk is now known as mmrazik
=== kgunn is now known as kgunnAFK
RAOFracarr: What do you need from mesa?22:40
RAOFracarr: If the android input stack wasn't a steaming pile of won't-build-with-clang you could use that :). Yeah, g++ ICEing on any gmock error is getting really old.22:42
kdubthomi, are you able to add a 'deb' line to the sources.list of the mir CI pbuilder on jenkins?23:14
racarrRAOF: I didn't have the ICE problem until23:28
racarra recent dist-upgrade...23:28
racarrit's super frustrating23:28
racarrlike I just wrote a whole new acceptance test file and tried to compile it23:29
racarrICE! XD23:29
racarrRAOF: From mesa! prepare-for-inprocess-egl-clients is basically ready to land23:29
racarrso we need to land the mesa changes concurrently23:29
racarrthe stuff for the NativeDisplay with23:29
racarrcallbacks23:29

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!