/srv/irclogs.ubuntu.com/2014/03/18/#ubuntu-mir.txt

dufluRAOF: Are the new valgrind failures related to your stuff that landed? https://jenkins.qa.ubuntu.com/job/mir-team-mir-development-branch-trusty-amd64-ci/820/console06:21
RAOFduflu: Indirectly, yes; leaks in the clients are now fatal, too.06:23
dufluRAOF: Hmm, but existing bugs should have blocked it from passing CI before it landed06:24
RAOFduflu: But these are obviously nondeterministic failures, because my CI run passed.06:24
dufluWhee06:24
RAOFI love a nondeterministic leak in the morning!06:24
dufluWoo code review backlog halved yet again07:30
dufluInteresting. I had to start almost 50 Mir clients blended over each other before any of them slowed down. That's probably pretty good.07:38
dufluArguably 100 (dual screen clone mode)07:39
=== alan_g is now known as alan_g|reboot
duflualan_g, alf__:  Am I the only one subscribed to USC bugs?09:30
dufluOr am I just the only one particularly interested in them? :)09:30
alf__duflu: I am not getting any notifications, let me change that09:30
alan_gduflu: you're interested in USC bugs?!09:30
duflualan_g: I mean willing to triage09:31
duflualf__: Particularly Ubuntu project bugs for package "unity-system-compositor" ;)09:31
duflualf__: I found myself looking at how the cursor logic works, and wonder; do we ever intend to support multiple cursors?09:49
dufluMirMotionEvent would appear to not care how many there are09:49
alf__duflu: I haven't heard of such a requirement. Is there a use case for multiple cursors?09:52
duflualf__: Just wondering, if I had to modify it whether only one would still be acceptable09:52
alan_gduflu: I don't think we have any cursor "use cases" but racarr is working on that. I've seen mentions of touch devices having multiple cursors (up to ten) - but I don't know if that is the same thing (because we've not decided what a cursor is)09:56
dufluOK, doesn't seem like a big issue09:57
RAOFalan_g: Actually, Apple touchpads do up to 15 touches, for some reason :)09:57
* alan_g counts fingers, toes, nose and wonders...09:58
RAOFduflu: Those cursors in MirMotionEvent correspond to touches; unless you think we don't need to support >1 touch, you'll need to keep them all :)09:58
dufluRAOF: The issue then is you have to assume pointer[0] is the cursor10:00
RAOFNo you don't.10:00
RAOFSorry; phone. Let me expound:10:04
RAOFYou don't assume pointer[0] is the cursor; you only move the cursor in response to MirMotionEvents that come from relative input devices; mice, trackpads, etc.10:05
RAOFAnd then, generally, only when there's a single entry in pointer[] (because otherwise you're on a touchpad doing something like a two-finger scroll, which shouldn't move the cursor)10:05
dufluRAOF: Maybe it's just that I never cared to find out the kind of device a motion event comes from, trying to be widely compatible...10:06
RAOFYeah, but for cursors you need to care. Because cursors only make sense for relative input devices.10:07
=== dandrader is now known as dandrader|afk
alan_gis anyone looking at the CI failures? Seems to be bug 129394410:46
ubot5bug 1293944 in Mir "Mir deb packages with versioned names cannot be installed simultaneously any more" [Medium,Triaged] https://launchpad.net/bugs/129394410:46
=== dandrader|afk is now known as dandrader
alan_galf__: is anyone looking at the CI failures? Seems to be bug 129394412:08
ubot5bug 1293944 in Mir "Mir deb packages with versioned names cannot be installed simultaneously any more" [Medium,Triaged] https://launchpad.net/bugs/129394412:08
alf__alan_g: I am not (not yet at least)12:09
alf__alan_g: What changed and we are now having this problem? I don't remember having that issue in the past.12:11
alan_galf__: I don't know - I've not looked into it either. (It might well "go away" as the CI system images get updated)12:13
alf__alan_g: it could also be a CI script issue... Why is libmirserver16 even installed at that point? The packages built by CI have libmirserver17 in them.12:19
alan_gCould it be a transitive dependency? e.g. mesa?12:28
alf__alan_g: It could, but unfortunately the logs are not verbose enough to see what's being installed12:31
alan_galf__: OK I'll go ask on #ubuntu-ci-eng12:40
alan_gIt seems odd that we install *any* to build Mir.12:43
alan_g**any* Mir library12:43
=== alan_g is now known as alan_g|lunch
=== dandrader is now known as dandrader|afk
=== dandrader|afk is now known as dandrader
=== alan_g|lunch is now known as alan_g
alan_galf__: cjohnston thinks he may have found the CI problem - testing now. (Hopefully we'll see a result before EOD)14:21
cjohnstonalf__: AIUI, with the system-images.u.c changes, that broke our flashing jobs, which prevented devices from being cleaned before the next job ran14:22
alf__alan_g: cjohnston: thanks!14:22
robotfuelalan_g: fyi ci is failing because a json file moved on a server and phablet-flash isn't resetting the devices like it should be. the phablet-flash jobs are being updated now.14:25
robotfuelkgunn: ^14:26
kgunnthanks for the heads up14:26
kgunnwondered why our mp's were so "red" this morning14:26
kgunnthot jenkins was a hater14:27
mterryalan_g, I just retested all my split stuff with Mir 0.1.7 and I'm seeing similar (not sure if same yet) symptoms to before your fix to the early buffers in nested mode landed.  Were there other changes that might have affected that?15:13
alan_gmterry: otp - 30min15:14
mterrynp15:14
davmor2kgunn: I'm not loving mir today15:15
kgunngot it15:15
=== dandrader is now known as dandrader|lunch
alan_gmterry: sorry - meeting covered a lot more that I expected16:40
mterryalan_g, no worries, I got sidetracked myself16:40
mterryalan_g, so!  I remember testing your branch earlier in relative isolation on top of 0.1.616:40
mterryalan_g, and what I saw was seamless transitions between my "spinner" app and the greeter.  This was presumably because the greeter didn't create a surface until it had one ready to paint16:41
alan_gmterry: I'm not aware of there being anything that reverts the changes, but there are some issues seen elsewhere. Mo16:41
mterryalan_g, today I tested on top of 0.1.7 and I'm seeing a "black gap" between spinner and greeter16:41
mterryalan_g, not sure if you're familiar with what I mean by spinner16:42
alan_gmterry: I'm not16:42
alan_gBut these are similar effects to what you describe: <kgunn> bugs -> https://bugs.launchpad.net/mir/+bug/1294051 https://bugs.launchpad.net/mir/+bug/1294053 https://bugs.launchpad.net/mir/+bug/129404816:42
ubot5Ubuntu bug 1294051 in Mir "Apps are much slower to open" [Critical,New]16:42
ubot5Ubuntu bug 1294053 in Mir "Settings app opens to a blank screen unless given enough time to render or the app is touched" [High,Confirmed]16:42
ubot5Ubuntu bug 1294048 in Mir "Touch has a rotate issue" [Medium,Confirmed]16:43
mterryalan_g, the spinner is just a small client that USC uses when a Mir session is supposed to be focused but isn't ready yet (like on boot, or on lock if the greeter is slow to appear)16:45
alan_gI guessed as much16:45
mterryalan_g, and USC switches to the session once it has a surface16:46
alan_gAnd the "black gap" was the sort of artifact you saw when the nested session posted buffers prematurely?16:48
alan_gAlbertA: not sure if you've found anything, but this ^^ sounds like it might be another symptom of the same problem.16:49
mterryalan_g, yeah16:49
AlbertAalan_g: yeah I found the issue16:49
* mterry perks up16:49
alan_g\o/16:49
alan_gWhat is it?16:50
AlbertAalan_g:16:50
AlbertAalan_g: oops, it's renderable.buffers_ready_for_compositor() > 1;16:50
AlbertAit should be > 016:50
AlbertAin rendering operator16:50
alan_gIt shouldn't16:50
AlbertAit always misses the last frame16:50
AlbertAbecause it's asked16:50
AlbertAafter compositing16:51
AlbertAnot before16:51
alan_gBut the one it just composited is still "ready"16:51
AlbertAalan_g: nope16:51
alan_gand shouldn't be counted16:51
AlbertAalan_g: that16:51
alan_gAlbertA: but the renderable doesn't know which compositor rendered the buffer: there's always one "ready".16:53
AlbertAalan_g: ummm16:53
* mterry can easily test to see if it at least solves my problem (as a data point)16:54
AlbertAalan_g: why would there always be one ready16:54
AlbertAin any case it does solve the 3 bugs16:55
alan_gAt the expense of always scheduling another compositing pass.16:55
AlbertAalan_g: because there were buffers ready though16:55
AlbertAalan_g: from my log the client posted one16:55
AlbertAalan_g: and it was not composited16:56
AlbertAalan_g: at the end16:56
AlbertAalan_g: i.e you see a client_release, but no following compositing step16:56
alan_gAlbertA: OK that is wrong, but I don't think the fix is right (or at least complete)16:57
AlbertAalan_g: sounds like a race between asking the number of ready buffers16:57
AlbertAalan_g: and when compositors release the acquired buffer?16:58
AlbertAalan_g: from what I gather from your comments16:58
alan_gThe fact that a buffer has been composited doesn't make it unavailable for compositing16:58
alan_gBecause another compositor can use it for the same frameno on a different screen16:59
AlbertAalan_g: right...but then we need a notion of16:59
AlbertAalan_g: of buffers not posted by any compositor16:59
AlbertAalan_g: call I suppose16:59
AlbertAalan_g: ahh which I guess nCompositors fills that role17:01
alan_gBut compositor B still needs to render the buffer even though compositor A has already done so.17:03
AlbertAalan_g: yeah I got that17:03
AlbertAalan_g: just trying to see how we can check the number of pending buffers for a specific compositor17:04
AlbertAalan_g: since right now rendering operator does not have any knowledge of what compositor is being called from17:05
alan_gI figured it was the number ready for compositing less the one we just composited.17:05
AlbertAwell in the case of one compositor17:05
AlbertAonly17:05
AlbertAnready does go down17:05
alan_gBut you're right - that one can have been "eaten" by the client17:05
AlbertAbut for multi compositor it does not for the reasons you mention17:05
* alan_g didn't do enough testing on single monitor setup. /o\17:06
alan_gSo if we move "uncomposited_buffers |= renderable.buffers_ready_for_compositor() > 1;" to the top of the function?17:11
alan_gWe'll get the count we actually want regardless of the number of compositors?17:11
AlbertAalan_g: I think so, but still racy isn't it between compositors?17:12
alan_gAlbertA: I think they should see the same value - because the count changes later.17:14
alan_gBut this isn't my favourite code to reason about17:15
kdubyeah, not mine either17:17
kdubseems a good time to diffuse some of it though17:17
AlbertAalan_g: yeah the nReady logic is hard to follow17:18
alan_gAlbertA: are you set up to test shifting the assignment?17:20
AlbertAalan_g: I'm about to test it17:20
AlbertAalan_g: I mean on android, I don't have a multimonitor setup at the moment17:22
alan_gAlbertA: I do - and am about to build it17:22
mterryAlbertA, I did test your > 0 change for giggles and it didn't fix the issue I was seeing.  Should I try moving assignment or do you think that means that my problem is not the same?17:23
AlbertAmterry: probably not the same then17:23
AlbertAalan_g: yeah moving the assignment works well here17:24
alan_gAlbertA: I don't see any obvious side-effects on multi-monitor17:29
mterryalan_g, AlbertA: assuming that wasn't my bug then, I'll take any wild guesses before I start deep-diving to find difference17:29
AlbertAmterry: yeah this is more about not compositing the last posted buffer from a client17:31
AlbertAmterry: sounds like you still have a blank buffer kinda issue no?17:31
mterryAlbertA, alan_g: currently USC is just using the existence of a surface to start showing it.  Should I be calling something like "ready_to_composite()" on the surface/session to confirm it's ready to be shown?17:32
alan_gmterry: there's a buffer available when swap_buffers after called with a non-nullptr parameter17:34
alan_gmterry: there's a buffer available after swap_buffers called with a non-nullptr parameter17:34
alan_gThe surface exists as soon as the client creates it17:35
mterryalan_g, guh, OK.  I have to go back to intercepting swap_buffers.  When I tested with your branch before, I didn't need to bother with that, so I assumed things had changed.  No biggie.  I can test with that17:35
mterryalan_g, thanks17:35
anpokhm is there something wrong with nested in devel?17:44
alan_ganpok: other than ^^?17:45
anpok:)17:46
anpokif i start demo shell as root, chmod 666, then conenct another demo shell as user, vt switch does not hang.. everything seems fine17:46
anpokas soon as I start e.g. finger paint connecting to the nested shell vt freezes17:47
alan_ganpok: are the server processes still running?17:48
anpoksleeping all of them.17:52
alan_ganpok: what about simpler clients? mir_demo_client_basic for example?17:54
anpoknot yet tried .. first tried on my branch then on devel ..17:54
anpokif it fails you see me reconnect..17:55
anpoksince restarting x did not help either17:55
alan_ganpok: the other thing to try is sshing in and "sudo chvt"17:57
alan_gAlbertA: it also fixes lp:129030618:02
AlbertAalan_g: really? nice18:03
AlbertAalan_g: so screencasting should be fixed by this too then...let me try18:03
AlbertAalan_g: is the sync logic supposed to track the fastest compositor or the slowest?18:11
AlbertAalan_g: I suppose the fastest making the other drop frames when necessary?18:11
AlbertAthe issue with screencasting is if the screencast compositor renders faster than the display compositor18:16
AlbertAthe display compositor starts dropping frames18:16
AlbertAI suppose to catch up18:16
AlbertAso the clients think they are rendering faster18:16
alan_gAlbertA: I'm not 100% certain. duflu chose the algorithm18:17
AlbertAbut for the special case of screencasting it whould be the other way around18:17
alan_gAnyway, I'm past EOD - so if there's nothing urgent?18:17
=== alan_g is now known as alan_g|EOD
AlbertAalan_g: no, just rambling18:18
dansufHi, I'm porting touch to my phone, I've got this error when running lightdm: http://pastebin.com/KMaQKNEL21:23
dansufand in unity-system-compositor-log I've got this error:21:24
dansuf terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::runtime_error> >'21:24
dansuf   what():  error during hwc set()21:24
kdubdansuf come back!21:26
anpokadreno20021:29
mterryIf I wanted to call "set_focus_to(session1); set_focus_to(session2)" in USC, how do I guard that so that the user doesn't see a peak of session1?  Compositor::stop/start?  Scene::lock/unlock?23:40
kgunnracarr_: ^ ?23:44
kgunni would have guessed, never start the compositor23:44
kgunn....23:44
kgunnkdub: or AlbertA might know as well... ^^23:45
kdubwhere did he go...23:47
AlbertAyeah I would say don't start the compositor until after session2 focus23:47
kdubwhy would the compositor affect the input focus?23:56
AlbertAI believe he's trying to hide the surface more than anything23:57
mterryAlbertA, kdub: I want the graphics system to not make any immediate changes when I do set_focus_to(session1), but wait until I'm done setting focus to(session2)23:59
mterryor at least, not render the changes23:59

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