[03:27] robert_ancell: Did you notice I had a go at the strings-on-the-protocol issue? https://code.launchpad.net/~vanvugt/mir/method-index/+merge/159782 [03:27] duflu, yeah, I've got a branch where I converted it to an enum [03:27] duflu, the RPC code is yuck though and we could probably get away without it [03:28] robert_ancell: Yeah I think we would need to avoid strings... if we were to go to a more efficient transport in future. But not yet [03:29] I am so sick of seeing "Internal compiler error: Error reporting routines re-entered. [03:29] " [03:29] * duflu has never seen it [03:43] * RAOF wonders if he should try defaulting to gcc 4.8, which doesn't suffer that. [03:46] RAOF, yes, we should if 4.8 is available and not broken [03:46] 4.8 is available in raring, will be default in S, and isn't broken (in that way ☺) [03:48] RAOF, are you sure it is in raring - it's not showing for me [03:49] It's packaged as gcc-snapshot [03:49] hmm, that doesn't sound like something we should depend on. We can shift when we go to S I guess [03:50] RAOF, btw, is XMir working? I tried it on Friday and was getting the "no screens" error [03:50] I wasn't suggesting that we default to it in the build, but locally you could easily install and use it, and not get stupid ICEs. [03:51] XMir worked last time I tried. [03:51] Oh, no it didn't; I need to fold in a new package. You probably don't have an xmir server installed. [03:51] RAOF, I did downgrade to the latest XMir package but it wasn't connecting [03:52] Hm. *That* did work on my machine. Let me check... [05:36] Bah! I wish launchpad was updated to something more recent than Hardy. [05:38] Then I could use a bzr builder recipe version 0.4, which means I could use {debver:packaging} in the version, which means I wouldn't have to change the recipe each time someone uploads xserver-xorg-video-intel to Ubuntu! === seb128_ is now known as seb128 === mmrazik is now known as mmrazik|otp === mmrazik|otp is now known as mmrazik === alan_g is now known as alan_g|afk === alan_g|afk is now known as alan_g [15:05] good morning, status, friday worked on hwc1.0 for galaxy nexus, will continue with that today. going pretty well [15:12] kdub: mornin' [15:14] Good morning [15:23] status: some performance investigations, but mostly getting laptop ready for sprint [15:29] status: having a look through our generated documentation (and learning a bit more about doxygen) [15:30] BTW does anyone know how frequently http://unity.ubuntu.com/mir/index.html is updated? It seems to be some days behind the trunk. [15:34] Morning [15:34] Working on touch/pointer input === racarr_ is now known as racarr [15:37] alf_: I am workingon a software cursor and need some APIs to [15:37] damage the compositor [15:38] seperate through the renderables [15:38] to trigger rendering [15:38] any ideas? [15:39] racarr: I think alf_ was the last one to rework that area. [15:42] racarr: alan_g: so basically two options: 1. Pass an object to the compositor and register a notification internally (like we do for renderables currently) 2. Expose e.g. Compositor::damage() and call it when the cursor moves (that is make the cursor depend on the compositor) [15:42] Compositor::damage seems more appropriate for me because in this case [15:42] the shell is rendering the software cursor [15:42] via overriding the compositing strategy [15:44] Fixed gmock warnings on reflow-input-focus-selection [15:45] alan_g: So the crash in demo shell [15:46] is the shared_ptr to the Eventfilter which is returned via initializer_list from the server configuration [15:46] is released in the process of being passed from DefaultServerConfiguration to InputConfiguration [15:46] I can't understand it to the point where I think it might be a G++ bug [15:46] :/ [15:47] racarr: That sounds wrong. Give me 10 and I'll have a look. [15:47] thanks :) [15:51] I think it's actually lost in the constructor of eventfilter chain (when passingfrom DefaultInputConfiguration to EventFilterChain) [15:51] but either way it makes no sense :( [15:55] alan_g, maybe thomi would know about how often the doc site is updated, i'll ask when he signs on later [16:06] racarr: you're saying the shared_ptr to the initializer list is OK, but the one *in* the initializer list gets reset? [16:09] alan_g: Err there is a shared_ptr to the initializer list? [16:09] isn't it passed by value [16:10] what I mean is, the_input_configuration calls the_event_filters and in gdb you can observe the_event_filters returns an initializer list [16:10] with a shared_ptr as it's first member [16:10] and m_ptr as non zer0 [16:10] racarr: sorry, misreading the code [16:10] then it gets passed to the input configuration constructor [16:10] and it also non zero [16:10] when it's passed to the EventFilterChain constructor [16:10] the initializer list is empty [16:10] and the EventFilterChain later attempts to call a method on the event filter (0x0) [16:10] well, it's not empty [16:11] it contains one member, a shared_ptr with m_ptr = 0 [16:16] alan_g: Just pushed a revision (604) which you can see fixes it by moving ownership to main [16:16] but why? [16:22] racarr: It still doesn't make sense [16:28] alan_g: I think it has to be a GCC bug :/ I du nno [16:28] I went through with valgrind etc... [16:28] racarr: the initializer list captures by reference, but and the reference is to a temporary std::shared_ptr created in the function call. Because app_switcher is a std::shared_ptr and needs conversion to std::shared_ptr. [16:29] but the initializer list [16:29] should own that reference [16:29] until it passes it to the vector of std::shared_ptr racarr: temporaries don't exist after you leave the enclosing scope [16:31] I.e. return from the_event_filters() [16:32] alan_g: Then why doesn't it work if I make [16:32] the_event_filters a const member of DemoServerConfiguration [16:32] err [16:32] make std::initializer_list event_filters [16:32] a const member [16:32] and initialize it at construction time [16:33] Because, when you exit the constructor the temporary it references goes out of scope [16:33] (not as in r604 where the list is created in main) [16:33] Hmm [16:34] If you had a std::shared_ptr member you could pass a reference to that around in the initializer list [16:34] that's what I was just going to say [16:34] do you think its better to keep it like r604 [16:34] or to keep the app_switcher in the config like it was in 603 and just use [16:34] shared_ptr EventFilter [16:35] Using initializer lists like this might be a bad idea. ;) (I don't have the experience of them to be sure yet) [16:36] that's what I was wondering... [16:36] so I just tried [16:36] constructing the app_switcher from main [16:37] passing itto the demo server configuration (as mi::EventFilter [16:37] saving it as a shared_ptr on the demo server configuratino and returning { event_filter } [16:37] same problem [16:39] I think r604 is the way to go :p [16:41] saving it as a shared_ptr on the demo server configuration ought to work - you didn't save a reference by mistake did you? [16:42] no, const value === smspillaz is now known as notsmspillaz === notsmspillaz is now known as smspillaz === alan_g_ is now known as alan_g [17:39] Right now for KeyEvents I don't see a define/const saying if the key event is pressed or released for the event...besides checking if the event.action is true/false, have I missed something? [17:39] err, event.action 1 or 0 [17:42] all I see is: test/mir_test/event_factory.h:29:enum class EventAction [17:42] which isn't exposed to the C apis :( [17:54] bschaefer: For now you can see them in [17:55] 3rd_party/android-input/android_pristine/frameworks/native/include/android/input.h [17:55] AKEY_EVENT_ACTION [17:55] will try and get them added to a header in trunk [17:55] I tried once but people argued about if they were needed yet until I gave up :p [17:55] racarr, cool, yeah I had to print them out to figure out what was down/up so I can hold up and actually using a name fo ir [17:56] :) [17:56] racarr, yeah, well the action is an int32_t which...you can't do a nice enum with that :( [17:56] racarr, thanks! Also one more question while you're around :) [17:57] Sure [17:57] racarr, soo for the cursor, how is mir going to be handling the 'themeing' of the cursor? [17:58] or will that be left up to the client I suppose [17:59] I don't entirely know ;) [17:59] I guess the shell will eb responsible for the general themeing of the cursor [17:59] but there are times where the clients need to request stuff, etc. or i.e. needs to change from cursor to text cursor... [17:59] ill get back to you :p thanks for bringing that up [17:59] yeah, I was just digging through what Ill have to do for the mouse, and saw that SDL was making the own theme based on the video :) [18:00] bschaefer: I have a branch with a software cursor in mir but it's not uite ready to propose [18:00] yeah, X11 does it a bit different where you just request the cursor? (I think) and wayland was doing it a bit differently [18:00] and you need this branch to [18:00] https://code.launchpad.net/~robertcarr/mir/enable-pointer-touch-input/+merge/160153 [18:00] racarr, sweet, I can give it run! [18:00] receive motion events/pointer events [18:01] nice, I should able to mock a cursor for now and get events working :) [18:01] racarr, thanks! [18:01] Cool! Let me know if it works :) [18:01] racarr, will do! So far key events work well :) [18:01] hurrah [18:01] using scan codes from the events there was already a mapping of the xfree86_scancode_table2 [18:02] which was nice [18:02] Hmm [18:02] but then how are you getting things like [18:02] $ [18:02] as shift + 4 [18:02] or does SDL do its own mapping [18:03] SDL has its own mapping, but yeah I want to write some tests where it'll make sure all are working [18:03] * bschaefer checks mod events [18:06] racarr, you're right, not working :) [18:07] I don't know how SDL expects it to work but my guess would be you need the keycodes -> SDL keycodes [18:07] unless SDL can listen to shift down or modifiers or whatever itself [18:07] and do the mapping [18:07] but seems best to use the mapping from mir [18:07] you guys ported SDL to mir then? [18:07] or in the process? [18:07] right, I need to use xkb and set the modifier, im thinking something like: xkb_state_update_mask [18:08] R__, in the process [18:08] I hear SDL 2.0 is getting the final blessing in May [18:08] racarr, theres a mapping form Mir already? Or are you talking about the xkb state from Mir? [18:08] think you'll get it merged? [18:08] R__, that would be nice :), well...lets hope! [18:10] racarr, and right, the SDL keycodes Ill have to do my own mapping now for the '$' stuff, but as along as I can get the correct keysym I should be fine [18:10] * bschaefer looks into it [18:10] bschaefer: Well I mean the mir key"code" [18:10] thanks for pointing that out! [18:10] is a keysym [18:10] right [18:10] so if shift was down and 4 is hit the key code [18:10] will be XKB_KEY_dollar [18:11] oo alright, so ill have to make my own mapping of the special mod + symbols [18:11] unless they are around somewhere [18:13] ? [18:13] the values for MirEvent::keycode are all in [18:13] xkbcommon/xkbcommon-keysyms.h [18:13] so I am guessing you can translate from like [18:13] XKB_KEY_dollar to SDL_KEY_dollar and thats all that is needed [18:14] unless that was what you meant by your own mapping :) [18:14] racarr, well I was just saying Ill have to do my own mapping of that stuff [18:14] yup [18:14] should see how the wayland backend works [18:14] racarr, unless theres like a magic -48 :) [18:14] they are probably doing xkb in the client [18:14] but there must be a translation somewhere [18:14] bschaefer: Not normally, though almost all xkb keysyms are unicode characters [18:14] so maybe SDL is the same way [18:14] right, well whats strange is they only use the scan codes for input [18:15] and then SDL_SendKeyboardText(text); [18:15] for everything else [18:15] soo, from what I see wayland doesn't handle sending: SDL_SendKeyboardKey of mod + [18:15] racarr, but I need to do some more digging, im fairly new to xkb as well :) [18:19] you can use xkb_keysym_to_utf8 [18:19] to send text [18:19] it wont always return a value [18:19] i.e. KEY_left [18:20] yup, thats what I was planning [18:21] but im getting curious to why SDL_SendKeyboardKey seems to only be used w/o modifiers. From what I see they all use something similar to the scan code mapping [18:21] interesting... [18:23] well maybe you send shift down to SDL and then send 4 to sdl and it maps itself [18:23] I dunno [18:23] would be a little weird but not the weirdest! [18:23] but then who knows why its not working [18:23] that would weird, but nice ;) [18:23] but im not setting the mod in sdl, soo thats what im looking for [18:23] hmm: SDL_SetModState(SDL_Keymod modstate); [18:23] * bschaefer tires to use that [18:27] bschaefer: You can find themodifier states in...qtubuntu/src/platforms/base/input.cc lol [18:27] I'm not sure where else oO [18:28] mir/include/shared/mir_toolkit/events.h is what im more or less stuck with :) [18:28] SDL is in C [18:28] and lol, a .cc file [18:28] * bschaefer looks [18:28] bschaefer: No but I mean you can [18:28] copy them for now [18:28] and they will end up in events.h soon [18:28] yeah, i thought you were pointing to a header at first [18:29] cool, I can look at doing some of that work as well [18:29] nope just a hipster C++ file [18:29] haha [18:29] awesome yes :) propose away [18:30] racarr, thanks for all the info! That'll give me a bunch to do today :), ill also test out your cursor branch later! [18:33] Great :) np I am happy someone else is testing input [19:58] hi kdub [19:58] kdub: the docs should be uypdated daily - are they not? [19:59] kdub: more specifically, they should get updated every time something gets merged into trunk [20:02] Back from lunch :) [20:07] thomi: https://jenkins.qa.ubuntu.com/job/mir-quantal-amd64-ci/474/console halp [20:07] 404? [20:07] racarr: how long ago did the build fail? [20:08] uh within an hour [20:08] racarr: it takes a few minutes to publish [20:08] but I had the same problem on the first build that failed earlier [20:08] should work, let me see [20:09] racarr: got the MP link handy? [20:09] https://code.launchpad.net/~robertcarr/mir/enable-pointer-touch-input/+merge/160153 [20:09] thomi: ^ [20:09] Had just run off to get it then I got distracted by firefox [20:11] heh [20:12] that's really odd [20:12] neither the private nor the public jenkins have got to job 474 [20:13] what about their sentient jenkins love child? [20:13] hmm [20:13] I dunno. [20:13] I could resubmit the branch [20:13] racarr: do you have VPN access? [20:13] probably resets some state [20:13] yeah [20:14] racarr: the job ran [20:14] look here: http://10.97.2.10:8080/job/mir-quantal-amd64-ci/474/console [20:14] there's your problem ^^ a failed test [20:14] 93/112 Test #93: memcheck(integration-tests.AndroidInputManagerAndEventFilterDispatcherSetup.*) ...***Failed 3.98 sec [20:14] *sad trombone* [20:15] Ahhh [20:15] that isn't much of an Ahh because who knows why the test fails ;) [20:15] lets look [20:17] hmm [20:17] gtest-repeat=100 is ok locally but [20:17] that would be too easy if it were reproducable ;) [20:18] I can't reproduce the memory errors either [20:18] wish it had --track-origins=yes [20:18] (though that is slow :() [20:20] racarr: hey, so i was chatting with dandrader [20:20] about possibly working on input filtering from the shell [20:21] e.g. filter edge events, pass the rest to whatever qt app is "beneath" the shell [20:21] racarr: there seems to be an issue with publishing job data from the private jenkins, we're looking into it. Until we fix it, you can just look at the private jenkins server instead [20:21] in order to minimize any throw away & work on real integration issues [20:22] can't we run mir w/ ubuntu touch on top ? [20:22] we're not too early to try are we? [20:22] racarr: kdub ^ [20:22] kgunn: Just 3 minutes :) 5 things at once [20:22] ;) [20:23] need to write down what I am doing or I will forget something [20:25] Ok hi! [20:25] hi dandrader :) [20:25] I am going to go backwards [20:25] racarr, hi [20:25] we can run mir w/ ubuntu touch on top, with the stuff kdub has set up (and this is continually tried) but this setup is using [20:25] * kgunn dandrader in for some racarr entertainment :) [20:26] surface flinger with input only windows shadowing the mir surfaces [20:26] and mir input shut down [20:26] err.. [20:26] well basically? Kevin can correct me [20:26] but mir input is shut down so that configuration isn't ready for event filtering stuff [20:27] I do not think we are too early to start trying to run ubuntu touch on mir [20:27] I mean it is possible to take a Launcher.qml today and write a few hundred lines of C++ to run it in process and get it events [20:28] an event filter can be plugged in for edge events, etc for the gestures [20:28] normal events (i.e. clicked on a button) [20:28] can just go over the normal input dispatch [20:29] even though it's inprocess, it will be kind of wasteful it gets something going [20:30] There is one blocker of some sort [20:30] no in process EGL support on android [20:30] not sure how much work that is [20:30] kdub: ^ ? [20:30] racarr: mmm, so we'd be better off just to create some event filtering scheme in absence of mir [20:30] But I mean, we can get things going on GBM [20:31] kgunn: Hmm I'm not sure I mean I think this week/next week [20:31] should have put the lunch nick on! [20:31] is the time to really get this off the ground [20:32] I'm trying to tie up a lot of loose ends now in demo shell + touch/crsor input stuff, and the basically what Mir can offer the shell for event filtering is [20:32] racarr: right...timing...so we're kind of close enough we might need to sus up mir input w/ touch on top first [20:32] thomi, unity.ubuntu.com/mir seems to be out of sync with the doc folder [20:32] a global event filter, where it sees the raw stream and can alter/filter it/whatever [20:32] one thing is that I would like an event canceling mechanism. [20:33] and for shell surface clients (i.e. launcher dash, etc) [20:33] they can receive events much like a regular client would (through Qt) and [20:33] handle them or not [20:34] e.g. both shell and client application get touch events and once (if) shell recognizes a gesture it wants (out of the current touches) if would grab the gesture and the client app would be a event/gesture/touches canceled event [20:35] dandrader: mmm, are you sure? have you considered shell _being_ the filter for both ?...i know you said replay touches expensive but shouldn't it be "gestures" not touches by then? [20:35] hmm. sounds tricky [20:35] kdub: ok, thanks - will investigate today. [20:35] what if the client has already processed the event? It can't [20:35] necessarily rewind what it has done [20:35] so there are lots of situations there where [20:36] the right thing happening is left open to a race of whomever recognizes the gesture first [20:36] there are a few cases events can be cancelled [20:36] i.e. removed by the event filter, cancelled before dispatch (by a sort of dispatch filter)...but this could allow events to go through to certain surfaces or certain shell surfaces while not allowing dispatch to [20:37] occur. [20:37] Then when events are unhandled [20:37] they can be cancelled or retargeted [20:38] I think...hmm. I think in the future if we want to get in to this sort of give client and shell event and let gesture recognizing decide who gets it [20:38] we can extend the idea of event handling with some sort of score. [20:39] what I mean is the rationale explained here: http://lwn.net/Articles/485484/ [20:40] dandrader: This is describing sequential delivery though right? like the shell has a chance to see it and back up the stream [20:40] although it requires an application have logic to undo whatever it has done with the events of a touch point that got cancelled (because the shell grabbed it) [20:40] then unflood them [20:41] Yes. if we could count on applications [20:41] to have that logic it would be a very cool solution [20:41] but I'm not sure it's possible. [20:41] it's all about removing the latency involved in replaying a bunch of touch events to an application after gesture recognition is done by the shell and shell decides it does not want this touch point [20:43] dandrader: dumb question...so is there something on the qt i/f where an app says "handled" wrt touch events/gestures? [20:43] kgunn: it would seem you either make the shell the master, filter & replay...or you have some other detached monitoring object you can have shell & app [20:44] dandrader: both indicate to...."i've got it" [20:44] and avoid the replay [20:45] while at the same time avoiding having both shell [20:45] & app operate on the same event stream [20:47] a similar (but simpler) situation happens when you flick a list of buttons in a touchscreen. you press over a button and it goes to pressed state, but once you start dragging your finger vertically the flickable component takes over the touch point and the button receives a cancellation event. so the button gets "unpressed" instead of released (and therefore clicked) and the list scrolls [20:51] kgunn, no qt doesn't have that. if I understood you correctly [20:51] but, well, gotta go. let's continue the discussion tomorrow [20:54] We can allow qt in the shell to have it perhaps though [20:56] racarr, sweet, receiving mouse events :) [20:56] racarr, also, it looks like you don't have to do the modifiers, as you are suppose to do that on the user side i guess... [20:57] check if the event.mod & LSHIFT && SDLK_4 works for me for '$'...strange though... [20:58] as how I was checking the "$" before was even failing in X11 [21:00] from the android side, if the first edition of ubuntu touch with mir underneath doesn't rely on qt, then we're ok from the graphics side [21:01] android 'in process egl' is slated in the blueprints for ubuntu-13.07: [21:06] kdub: docs uploading fixed - they should be up to date now (well, once the web cache times out anyway) - let me know if you see anything else amiss [21:06] thomi, cool, thanks! [21:29] test was failing due to uninitialize memory accidentally enabling [21:29] pointer acceleration [21:29] haha! [21:44] Comment on https://code.launchpad.net/~robertcarr/platform-api/mirclient/+merge/160217 would be really appreciated [21:45] if it seems confusing, please harass me and ask questions because a qt backend supporting input is something we need to move forward on quickly if we want to get the most out of next week :) [21:46] Also does anyone have time to check https://code.launchpad.net/~robertcarr/mir/demo-shell/+merge/159253 out? alf is on vacation so it needs another review [21:55] racarr, i'll review [21:58] kdub: thanks :) [22:50] kdub: The crash in demo shell [22:50] was due to initializer_list secretly capturing by reference [22:50] so we had an me::ApplicationSwitcher [22:50] and a temporary mi::EventFilter shared_ptr was created [22:50] for the initializer_list [22:51] then it was destroyed when the scope exited and [22:51] initializer list has a bogus reference [22:51] initializer_list is weird :p [22:51] it's fixed now due to owning the list in main [23:08] Anyone have any problem with me switching this to approved: https://code.launchpad.net/~robertcarr/mir/reflow-input-focus-selection/+merge/159225 [23:08] approve from alan + an old (addressed) needs fixing from alf [23:29] racarr, looking it over... one min