[02:17] RAOF, did you have any luck with xmir working? [02:17] robert_ancell: I believe it should now; let me check again. [02:22] Unless launchpad has *once again* foiled me. [02:24] RAOF, the package did update for me, but still fails to connect to mir [02:25] Ok launchpad. Let's see what you've got for me... [02:27] One _million_ bugs (pinky to mouth) [02:44] thomi, was CI supposed to work for lp:lightdm/1.6? [02:45] (two MPs, no checking done) [02:45] I think [02:45] I might try and port kmscon [02:46] it seems surprisingly hard [02:46] robert_ancell: no, I thought we decided that it wasn't worth it - but I can add it to the "things to do in Oakland for mir people" list, if you like :) [02:48] thomi, it's nice to have, but not a high priority [02:49] yeah that's what I figured [02:54] I just want to point out https://code.launchpad.net/~robertcarr/platform-api/mirclient/+merge/160217 to the southern hemisphere :) [02:56] racarr: Port kmscon? Why? [02:56] Why not port anything you can? :) [02:56] RAOF: I just want a working terminal emulator [02:57] kterm isn't qt5 [02:57] this qml terminal emulator seems quirky [02:58] Does kmscon have all the various affordances we expect in a decent terminal emulator? Unicode? Colour? [02:59] * RAOF goes to see why the new new build of xf86-video-intel doesn't XMir properly [03:03] it seems to [03:05] Grr. Who changed the libmirclient API? :) [03:19] who didn't! [03:24] Me~! [04:30] RAOF, any idea on XMir? So you also don't have XMir working on -intel? [04:45] robert_ancell: So, cascade of failures. [04:47] robert_ancell: The autobuilt xf86-video-intel defaulted to the SNA acceleration architecture, which I haven't yet patched for XMir. [04:47] Once I'd fought launchpad to get a build that defaults to UXA, someone had gone and remove mir_surface_create() from libmirclient, so XMir now doesn't work. === rsalveti_ is now known as rsalveti [04:48] Both of these should now be fixed, and you're waiting for 1.13.3-0ubuntu6+xmir2 to appear in the PPA. [04:48] URGH [04:48] RAOF, ok, cool [04:49] thomi: Hey, while you're at it, could you get the tests to spin up an XMir server? :) [04:49] RAOF: send me an email with the details and I'll look into it at oakland... or bug me about it in oakland :) [04:50] Most assuredly! [04:51] thomi, is there a convention for raising QA issues? Should we open bugs on LP projects and assign them to you? [04:51] robert_ancell: it rather depends on the issue. There's no project that deals with infrastructure issues, for example [04:52] and (thankfully) I'm not having to teach you guys how to write unit tests, so I've not had to actually touch the mir codebase yet [04:52] I guess if we think we need a process to stop things getting forgotten about we should figure out what the best approach is [04:53] my problem right now is that my time is split between mir and autopilot, and autopilot is consuming close to 90% of my waking hours [04:53] thomi, you can we awake for 190% of the time right? [04:54] I tried that once, it did not go well [04:54] :) [05:14] Ok ladies and gentlemen: A brief bit of client architecture handwaving. [05:14] I'd like to implement n-buffering so that I can implement eglSwapInterval(0) so that the benchmarks we run can be minimally useful. [05:15] There are two broad approaches here - the client always has exactly one buffer, or the compositor always has exactly one buffer. [05:17] In the former you give out multiple buffers to the client library, and the client library is responsible for handling "do I block" and "what is the next buffer to draw to". [05:18] In the latter the server only ever hands out one buffer to the client library at a time, the client library always blocks on IPC, and the server is responsible for "what is the next buffer to draw to" [05:22] The former will have less IPC overhead, and will result in higher benchmark numbers, but the IPC overhead won't be significant for non-benchmark clients anyway. [05:23] You know what? email. [05:25] RAOF, yeah, email works for big stuff :) [05:42] RAOF, ping [05:42] tvoss: Pongity pong. [05:47] RAOF, well, X doesn't quit anymore. But it does sit at 100% CPU and never generates a ready signal [05:48] RAOF, short ML post from you... [05:48] The rest is coming soon. [05:48] robert_ancell: That's odd. Mine got all the way to showing the root weave and not responding to input because I didn't run it as root. [05:49] robert_ancell: To be clear - you get as far as the root weave, yes? [05:50] RAOF, no, black screen [05:50] RAOF, doesn't appear to be anything exciting in the X log http://paste.ubuntu.com/5594738/ [05:51] RAOF, lightdm log, though also shows nothing except for it waiting for the ready signal http://paste.ubuntu.com/5594740/ [05:51] but perhaps the command line flags passed to it might indicate something [05:53] Hm. [05:54] Let me see about this locally. [05:58] robert_ancell: Everything works fine here. [05:58] RAOF, :( [05:59] How are you launching it? [05:59] Xorg :7 -mir 5 -retro -verbose 7 [06:00] Oooh! *That's* why VT switching sometimes takes minutes! [06:00] xf86-video-ati is totally freaked out that I've turned off the radeon on this laptop. [06:01] oooh I'm freaked outttt where is my card? where is my card? [06:02] Actually, it looks like it's also confusing radeon.ko, which is being amazed that it can't execute the ATOM BIOS. [06:04] how does it even find a valid bios, then? [06:04] Presumably it's cached the bios from boot? [06:05] The card was on at boot, and got switcheroo'd off. [06:05] ah [06:05] RAOF, ok, will look into that tomorrow [06:05] bye all [06:05] bb [06:05] robert_ancell: 'night! === mmrazik is now known as mmrazik|afk === mmrazik|afk is now known as mmrazik [15:03] hello, status, mp-ed hwc 1.0 support, working on display logging today [15:13] hello, status, getting laptop in sync with current dev environment [16:05] quiet day on the channel [16:06] kdub:I'm here if you need to talk [16:08] lol [16:20] morning [16:20] afternoon [16:33] alan_g: Do you have any idea with demo-shell? [16:33] I dont have any besides using a weak_ptr somewhere but I don'tknow where is appropriate [16:34] racarr: I've not been thinking about it today (got distracted elsewhere) [16:34] Maybe EventFilterChain holds weak references [16:34] to each EventFilter [16:36] racarr: since demo-shell tends to kill leave me with a blank screen I can't get out of I've been disinclined to play [16:36] compared to regular mir binary? [16:36] vince vt changes things are weird [16:37] I have to kill it, then switch to X [16:37] to get a screen back [16:37] racarr: I can do that with mir, but not with demo-shell [16:37] uhoh [16:37] oh [16:37] well I just fixed the crash properly [16:37] yesterday [16:40] racarr: I gather you agree about the "owner loop"? Or have I missed something? [16:40] yes [16:41] im just anxious to push things a long [16:41] but I don't know how to fix it [16:41] besides with a weak_ptr [16:42] We are going to have these everywhere [16:42] unless we introduce a new pattern [16:42] racarr: weak (or dumb) pointers can certainly break the loop [16:42] i.e. the compositing strategy draws a software cursor so it becomes the cursor listener and needs to notify the compositor ofdamage [16:43] alan_g: Yeahhh everything still goes in a circle though ;) [16:43] I wish there were something better [16:44] there are solutions - e.g. a "RegisterMe" member variable that registers a callback in the constructor and deregisters in the destructor. [16:45] (The registered back-pointer can be a raw pointer, as its guaranteed to point to a live object) [16:46] The thing is that smart_ptr is being used in places where ownership isn't involved. [16:46] But my head isn't yet clear on where the fixes are needed [16:47] Most ui frameworks would use [16:48] a signalling pattern to break this [16:48] i.e. rather than ApplicationSwitcher becoming the EventFilter, application switcher [16:48] is allowed to see the KeybindingEventFilter [16:48] and registers a callback or whatever [16:49] the EventFilter keeps with weak reference, or the signal is expected to be disconnected on shutdown [16:52] If it's blocking you then using weak pointers in EventFilters ought to be enough for now [16:52] alan_g: I will propose I think. the thing is it's blocking software cursor [16:52] which has the same problem [16:52] and over andover [16:53] (propose with weak ptrs that is) [16:57] you all are in for some excellent weather next week if things continue :) [16:59] Where we are working? Or out of the window? [16:59] alan_g: ...hmm good point [17:00] though when the day ends at 6 [17:00] still an hour and a half of time to have a beer in the sunshine! [17:01] We'll need to find a good beer location [17:02] Hehe one night you should come to city beer, which is a store/pub type thing in San Francisco (close to a bart though, about 25 minute travel from hotel) [17:02] that is all local beers from the bay area [17:02] nearly 100 I would say [17:04] *embarassingly excited to be the local at conference for once* [17:04] hehe [17:04] You'll be writing the guidebook then? [17:06] Anyway, I've had enough for the day. I'll start looking into managing back pointers tomorrow. (And finish getting laptop to behave.) === alan_g is now known as alan_g|sun [17:12] alan_g|sun: I'm working on it, it's called "The Great American Novel: A software engineers guide to life in San Francisco" ;) [17:12] not really i'd read that though [17:12] enjoy :) tty tomorrow === mmrazik is now known as mmrazik|afk [17:37] racarr, hello! Is this what you had in mind when moving some enums over to the mir_toolkit/event.h? [17:37] http://paste.ubuntu.com/5596121/ [17:39] which then makes this easier: http://paste.ubuntu.com/5596127/ [17:51] bschaefer: https://code.launchpad.net/~robertcarr/mir/add-event-action-defines/+merge/160224 [17:51] ;) [17:51] so yes! [17:51] haha [17:51] well awesome, beat me to it! [17:52] racarr, did you want to type def them? Though it shouldn't be needed... [17:53] racarr, nevermind, I see you've commented on that part :) [17:57] bschaefer: We also need the modifiers [17:58] but in adding them would like to add something using them [17:58] so either demo shell after it lands (alt tab instead of tab) or [17:58] maybe just tests that [17:58] KEY_SHIFT comes out as mir_meta_flag_shift or hwatever its called [17:58] right, tests for thest shouldn't be to bad if you can mock motion events and tests they line up with the correct enum (for a unit test) [17:59] racarr, also, what about button state? [18:01] * bschaefer also wonders if the input platform is subject to change from android [18:04] bschaefer: button state too I guess [18:05] hypothetically [18:05] but [18:05] racarr, well I suppose a lot of this can be talked about next week, but im more concerned about a changing input platform :( [18:05] more likely is the increasingly forked [18:05] droidinput loses the android name [18:05] well [18:05] its unlikely right! The abstraction exists [18:06] but more as a consequence of writing testable well isolated object oriented code [18:06] than an intention to replace the input backend [18:06] but eventually once all the flags are in place, etc. and everything is defined ina mir_ namespace [18:06] that hides all the ANDROID* and android* and integer guessing stuff [18:06] you could swap it out! [18:07] oo yeah, I was just wonder about the enum ordering if the input is different as we can't control how they order their actions :) [18:07] or I suppose if its forked we can :) [18:07] right, and changing the enums (onces they are in place) will make that easy [18:08] well if you are integrating any input stack you control in to the mir server you can have it emit events over the wire that look like MirEvent in terms of enums, etc [18:08] and the worst case is some kind of marshalling, i.e. conversion [18:08] right, I was thinking of sort of mapping to ensure a mir_motion_action_down is always 0 [18:08] for the action, but that can be done under the hood for the event.action I suppose (if it ever gets to that point) [18:09] Yeah [18:09] well that answers my question thanks :) [18:17] Too much sun? [18:20] I think the EventFilterChain holding each filter by weak reference is satisfactory in that case and actually [18:20] the software cursor case I was giving was something entirely different [18:20] it's already strange that the software cursor renderer has to subclass the compositing strategy [18:21] i.e. reimplement all the drawing [18:21] just to draw an overlay [18:21] so there should be like [18:21] the_overlay_renderer() which is passed a change_callback like [18:21] the_renderables() [18:21] are [18:22] *babbles* === kdub is now known as kdub^lunch === kdub^lunch is now known as kdub [20:47] kdub: https://code.launchpad.net/~robertcarr/mir/weakify-event-filters/+merge/160497 is aimed at the circular dependency [20:47] indemo shell [20:53] cool, will look it over soon [20:56] Thanks :) [20:56] now to untangle the software cursor one. I think I can do something more satisfactory than just a weak_ptr here with some work on the rendering interfaces [21:02] Morning robert_ancell :) [21:06] racarr, an interesting bug im getting up a mouse released events. That button state is == 0 :(, no matter which key is being released [21:06] a log: http://paste.ubuntu.com/5596683/ [21:07] racarr, if you can point me close to some of the mir code I can dig through it :) [21:15] racarr, hello [21:15] Hi :) [21:16] bschaefer: Hmm [21:16] I'm not sure exactly where the culprit is! I mean one way to start is to write [21:17] a failing integration test with the fixtures in tests/integration-tests/input/android/test_android_input_manager [21:17] using the event_filter, rather than an actual server with clients [21:17] racarr, cool, Ill look into getting a failing test [21:17] you use the fake event hub to [21:17] synthesize events [21:17] yeah, I saw some fake MouseDown tests, but none for Up [21:17] TEST_F(AndroidInputManagerAndEventFilterDispatcherSetup, manager_dispatches_button_events_to_filter) [21:18] does the kind of thing you need [21:18] sweet, thanks! [21:18] but maybe write a new test rather than just expand it :) [21:18] feel free to bug me about the APIs, etc :) [21:18] alright :) [22:43] racarr, I might have done the test a bit wrong, but it shows the button state always being zero:http://paste.ubuntu.com/5596922/ [22:44] http://paste.ubuntu.com/5596922/ === Quintasan_ is now known as Quintasan [22:53] bschaefer: Yay! tests. Ok. Give me just 20-30 minutes to wrap something up and I will [22:53] investigate [22:53] racarr, alright, thanks! [23:38] robert_ancell: The overlay renderer is for the software cursor. [23:38] it could be a surface but I think it is less conceptually clear as it introduces a lot of [23:38] other stuff, i.e. it has to be kept on top (double triple on top) [23:38] and the way surfaces are rendered has to change [23:39] racarr, yeah, was just wondering if there were strong reasons like the hardware needs to know the difference [23:39] * kdub has thought about overlays too [23:39] Also wasn't sure if you might need more than one overlay and then it becomes better to use surfaces with an overlay flag [23:40] Hmm no no strong reasons like hardware in this case. [23:40] I think if you want more than one "overlay" [23:40] you implement that in your overlay renderer [23:42] the idea is just this is a point for a shell to render, after mir has finished rendering the entire surface stack [23:42] I think this is almost definitely how you want to do things like debugging visualizations [23:43] with software cursor I considered another approach too... [23:43] the shell could implement the_renderables, to contain a surfacestack, andfor_each first does for_each on the surfacestack then emits a renderable for the cursor [23:43] but the renderable interface [23:43] isn't really prepared to draw anything besides [23:43] a surface... [23:44] mostly due to the way textures are managed. [23:54] racarr, with the overlay manager [23:54] how do we coordinate the overlay with the surface stack? [23:55] i guess i'm thinking in the more complex world of using the hwc with multiple layers to do overlays [23:59] kdub: I don't know yet [23:59] I would guess those are in the surface stack and maybe not "overlays" in this sense ovf overlay [23:59] right like, a video overlay isnt an overlay in this sense of overlay [23:59] yes, and that's sort of what i'm thinking about