/srv/irclogs.ubuntu.com/2013/06/06/#ubuntu-mir.txt

dufluRAOF: Surprisingly, and ignoring the tearing, I could actually *feel* the desktop was more responsive with the PPA intel driver. I suspect that would mostly be due to double vs triple buffering...01:23
RAOFPlausibly.01:23
dufluI always thought it was imperceptible before now01:24
RAOFWe're ridiculously sensitive to latency, sometimes.01:25
thomirobert_ancell: did you get anywhere with that MP? I fixed the failing CI :-/01:32
robert_ancellthomi, what's the link?01:32
robert_ancellthomi, 'add-mir-stress'?01:33
=== kode54_ is now known as kode54
robert_ancellthomi, did the client API not get fixed for leaking descriptors yet?01:35
thomirobert_ancell: https://code.launchpad.net/~thomir/mir/add-mir-stress/+merge/16766101:37
thomirobert_ancell: it was fixed, but then it broke again01:37
thomirobert_ancell: so I want to get this as part of a CI run, to apply some pressure to not have it break again in the future01:38
robert_ancellyep01:38
thomisorry for the delay - I did a dist upgrade and now saucy unity crashes every time I click anywhere in firefox :-/)01:38
robert_ancellunity in saucy also went super-unstable when switching to saucy01:40
thomirobert_ancell: thanks for the review. I like your package name better, so I'll chaneg it & then hit the button01:45
=== harrow` is now known as harrow
robert_ancellthomi, with one last merge I think the lightdm tests (i.e. make check) should finally run on a server - what do we do to enable them in Jenkins?05:08
thomirobert_ancell: just make them run as part of the package build05:29
thomisomething about roverriding dh_auto_test ?05:29
thomioverride_dh_auto_test:05:30
thomiin debian/rules05:30
thomito run your tests05:30
thomiand done!05:30
robert_ancellthomi, oh duh. Cheers!06:52
=== mmrazik is now known as mmrazik|afk
=== mmrazik|afk is now known as mmrazik
=== mmrazik is now known as mmrazik|ofp
alf_RAOF: hi08:44
=== mmrazik|ofp is now known as mmrazik
robert_ancellpete-woods, hey, did the LightDM test changes make sense? Do you want to have a call?09:12
pete-woodsrobert_ancell: I really appreciate you putting the effort in to help me here!09:12
pete-woodsI was expecting you to be in bed around now, though!09:12
pete-woodsI was going to stay up late tonight09:13
robert_ancellpete-woods, I stay up late on Thursdays otherwise I never have overlap with you guys over that side09:13
robert_ancellpete-woods, I'd be interested if there will be possible at some point to remove the mock service code in test-runner.c and replace it with dbusmock. At the time dbusmock didn't exist but I really needed it then09:14
pete-woodsrobert_ancell: could you give me a short while to read the changes - I've not looked at them yet09:14
robert_ancellnp09:14
pete-woodsyeah, dbusmock is awesome09:14
robert_ancellI'll be here another 15 mins09:14
pete-woodsokay09:14
pete-woodsspeed code read!09:14
pete-woodsokay, cool, that looks like a nice start09:19
robert_ancellpete-woods, yeah, I hope that shows enough to plug in the other tests09:20
pete-woodsrobert_ancell: if we want to change the users, what do you think we should do there?09:21
pete-woodsre-write the whole passwd file, etc09:21
pete-woods?09:21
pete-woodsshould the code there be extracted into a new method that blats the passwd file and corresponding extended user info file?09:22
robert_ancellpete-woods, I'm not sure the case your talking about - you mean having users A B C then replacing them all with D E F?09:22
pete-woodsso say a user's name changes, or language, or anything like that09:22
pete-woodsrobert_ancell: ^09:22
robert_ancellpete-woods, I'd say add a method to test-runner.c to that can modify user information and yeah, replace the passwd file if necessary and update the accounts service API09:23
pete-woodsrobert_ancell, okay cool, I'll have a look at doing that09:24
pete-woodsas long as you're happy with that sort of change09:24
pete-woodsI'm really nervous about disrupting as critical a project as LightDM09:24
pete-woodsI don't want 3 million angry geeks ranting at me!09:25
robert_ancell:) That's what the tests are for!09:25
pete-woodsbut it's the tests I'm screwing with!09:25
robert_ancellyeah, you can do fairly radical things with the test-runner because it's only the tests that trigger that that will be affected09:25
robert_ancellI'll push that MP - I was just keeping it open so you'd notice it09:26
pete-woodsokay fair enough, if you're happy with me messing with that, I'll re-do the changes09:26
pete-woods*tests09:26
robert_ancellsorry about that - it's always a pain to have to redo09:27
pete-woodsrobert_ancell: there is one thing your runner doesn't catch that I'd like it to09:27
pete-woodsso the way I structure my dbus tests I make sure you create, destroy, create the service under test multiple times in a single process09:27
pete-woodsthat way DBus gets upset at you if you don't clean up after youself09:27
robert_ancelli.e. restart accounts service?09:27
pete-woodsas in repeat the lifecycle of liblightdm's UsersList object09:28
pete-woodswhen it is destroyed it doesn't let go of it's reference to the display proxy09:29
pete-woodsliblightdm-gobject/user.c09:29
pete-woodsg_clear_object(&priv->display_manager_proxy);09:29
pete-woodsinside the finalize method09:29
robert_ancellpete-woods, oh, that would be done inside the greeter - i.e. new/unref it a whole lot of times09:30
robert_ancellor create/destroy the greeter object?09:30
pete-woodsthe actual user list object09:30
pete-woodsthat's what I was adding the tests for09:30
robert_ancelldo you think they'll work well if you make a method in the greeter that does that?09:31
pete-woodswhat I'm getting at is that I think that the way the tests are run, it'd be nice if they lived inside a single process09:31
pete-woodsas that exacerbates resource problems09:32
robert_ancellYeah, that's the down-side of the current method09:32
pete-woodsbut, I think it could be changed without affecting your test scripts09:33
pete-woodsit'd just be the test framework that would change09:33
robert_ancellThe thing is, that liblightdm shouldn't work at all really unless it is set up inside the LightDM environment - so the fact you can use the UserList is a bit of a fluke09:33
robert_ancellIn general it requires the connection to the daemon which is harder to mock09:34
pete-woodstotally fair09:34
pete-woodsI just think that you could do all the set-up and destruction without spawning lots of separate instances09:34
pete-woodsit's always amazing how many things you catch when you force all the tests to run in the same env09:35
pete-woodsyou see how leaky things are (especially with resources)09:35
pete-woodseither way, we can at least fix the bug, even if we don't have a regression test09:35
robert_ancellpete-woods, do you mean lightdm_greeter_new multiple times for example?09:35
robert_ancell(from the same process)09:36
dufluping alan_g09:36
pete-woodsrobert_ancell, that would probably do it09:36
alan_gduflu: morning09:36
duflualan_g: Evening09:36
duflualan_g: What kind of "using directive" did you mean here: https://code.launchpad.net/~vanvugt/mir/move/+merge/162487/comments/35881509:37
duflu?09:37
pete-woodsrobert_ancell: I guess what I mean is do something like call test-runner with a list of all the test scripts, then it would run each of them in the same process09:37
pete-woodsincluding all the setup and tear down09:37
robert_ancellpete-woods, oh, I understand09:37
robert_ancellpete-woods, yeah, the best you can get is to make a test that does 100 iterations etc09:37
* alan_g looks09:37
robert_ancellthe downside is it's very hard to link up valgrind etc and analyse the greeter that was run09:38
pete-woodsrobert_ancell: if you ran each of them under a g_test instance you could even get a nice report about which of them failed09:38
robert_ancelland you get coverage analysis09:38
alan_gduflu: "using DefaultServerConfiguration::set_session_manager;"09:38
pete-woodstrue!09:38
robert_ancellpete-woods,  I'm open to improved tests, I'm just worried about two similar but different test frameworks to support09:39
pete-woodsrobert_ancell: I totally understand, I'm saying we could improve the existing tests here09:39
robert_ancellI think if we could get dbusmock into the existing tests or share some code it would probably work. But it would be quite some work09:39
robert_ancellpete-woods, please do! :)09:39
pete-woodsyes!09:39
pete-woodsI don't really have time to go crazy, though09:40
pete-woodsdamn full-time job ;)09:40
robert_ancellpete-woods, you don't need to sleep right?09:40
pete-woodsrobert_ancell: I think some people at canonical don't seem to sleep09:40
robert_ancellthat's been my assumption09:40
duflualan_g: Maybe I'm rusty, but I don't see what that solves. It's WindowManager::set_session_manager that is introduced09:42
alan_gduflu: then I probably meant something I didn't say...09:44
duflualan_g: OK forget about it for now. I'll ask for clarification later when I repropose09:44
alan_gduflu: https://code.launchpad.net/~vanvugt/mir/move/+merge/162487/comments/35881609:44
duflualan_g: Yeah that change at "195" doesn't exist any more. Someone else already committed the same thing on trunk :)09:45
* alan_g forgets about it (for now)09:46
=== mmrazik is now known as mmrazik|lunch
=== mmrazik|lunch is now known as mmrazik
=== seb128_ is now known as seb128
=== alan_g is now known as alan_g|lunch
hikikoquestion: how do you: start the mir server, run a mir client and stop it from a tty? (atm i kill it with ssh :P)12:17
hikiko+is it possible to run mir on a vm?12:17
alan_g|lunchhikiko: http://unity.ubuntu.com/mir/using_mir_on_pc.html12:30
hikikoi tried this alan_g|lunch  but I couldn't switch to other terminals or start the client12:30
hikikoand I had to kill it through ssh12:31
hikikohmm sorry I wasn't root but still when I run the mir demo client I get seg fault12:33
=== greyback is now known as greyback|food
=== alan_g|lunch is now known as alan_g
alan_ghikiko: are you running trunk?12:55
alan_gand is it the client or server that segfaults?12:55
hikikoalan_g, it was the client, now it's ok, I had a 2nd server running in the background that's why13:05
hikikosorry13:05
alan_ghikiko: so you're OK now?13:05
hikikoyes13:05
alan_gcool13:05
hikikoeverything working fine13:05
=== greyback|food is now known as greyback
=== seb128_ is now known as seb128
alan_galf__: hikiko - I'm currently blocked on CB, is there anything I can lend a hand with?14:24
=== alan_g is now known as alan_g|tea
=== alan_g|tea is now known as alan_g
alf__alan_g: is there something we can do to unblock you?14:34
alan_galf__: kdub_ is having a look. So probably best not to disrupt what you're doing.14:35
=== alan_g is now known as alan_g|afk
hikikoalan_g, sorry I just saw it14:35
hikikowhat is the cb?14:35
=== alan_g|afk is now known as alan_g|tea
alf__hikiko: composition bypass14:36
hikikosorry if I sound too naive but what is the composition bypass?14:36
alf__hikiko: it's when a client renders directly to the framebuffer instead of a normal surface14:38
alf__hikiko: usual scenario for this is when a game goes fullscreen14:39
hikikoso you have to make active the framebuffer (set colorbuffer etc) and then bind?14:40
hikikohmmm14:40
hikikowell I don't know well the mir codebase but you mean when for example you go to the system compositor, you create a texture with width/height the virtual screen height and you redirect all your rendering to the texture and then you fill the compositors bo with that texture and you render?14:41
=== alan_g|tea is now known as alan_g
hikiko(i should put some commas on that :p) i hope yuo make sense14:42
hikikoi mean is that a framebuffer? a full screen texture?14:43
hikikoor you refer to something else?14:43
hikikoeg the linux fb0 device or sth else14:43
alf__hikiko: framebuffer= the block of graphics memory that gets display on the screen by the graphics card14:43
hikikook so you don't refer to the FBO in GLES14:44
alan_ghikiko: on android I'm trying to pass out the framebuffer to the client. (But when the client calls eglSwapBuffer the buffer isn't returned to the server.)14:44
alf__hikiko: what we want is for clients to be able to render directly to screen, instead of on a surface which we then render/composite onto the screen14:46
hikikoso you need to have a shared framebuffer14:46
hikikoand the client to have the full control there14:46
hikikoisn't it?14:46
hikikoI mean the client to have the ability to render directly to the fb14:47
alan_gyes14:47
hikikoand you provide a callback to the client for rendering for example?14:47
hikikolike those in the client library?14:48
alan_gThe client renders to the frambuffer, calls next_buffer and the server swaps the FB to the display. (In theory)14:49
hikikoalan_g, is it possible that your framebuffer is empty because you already sent it to the gpu with some make current in the wrong place ? (I guess no but I just say the most obvious mistake I can think of)14:49
alan_ghikiko: when the client calls eglSwapBuffers I expect a call to next_buffer - but that doesn't happen. kdub_ is most familiar with the android blobs and is looking into it...14:51
hikikonext buffer is a mir client isn't it14:52
alan_gyes14:52
hikikomethod*14:53
hikikothen how eglSwapBuffers will call a mir method?14:53
alan_ghikiko: I guess my problem is more interesting than yours?14:53
hikikolol14:54
hikikook I don't comfuse you anymore14:54
alan_ghikiko: I don't mind, but I don't want to divert you from more useful work.14:55
alan_gegl is supplied with a bunch of function pointers. One of which leads to next_buffer14:56
alan_gand if a normal buffer is used next_buffer gets called after rendering.14:57
hikikoI didn't know that egl has callbacks, interesting to know14:58
kdub_hello, status, starting to dive into comp bypass, shepherding branches and cleanups too15:03
alan_gstatus: deciding what to do while kdub_ dives into CB15:04
* alan_g has discovered that saucy is unstable on his netbook15:05
kdub_alan_g, no exciting news so far, going to tinker with some small test programs for a while to explore what's happening15:08
alf_status: experimenting with various approaches for providing surface snapshots, leaning towards having a separate thread in mir for this purpose15:09
alan_gkdub_: at least I don't feel I missed something obvious. ;)15:10
alf_status2: (also for snapshots) working on providing BufferSwapper::compositor_peek()15:13
kdub_alf_, hmm. if the only 'lastposted' buffer is given out to the compositor, how would that work?15:14
kdub_we could retain the reference to the 'lastposted' buffer in the swappers, and then allow 2 threads to compositor_acquire that buffer15:15
alf_kdub_: yes, we need to keep information about which buffer the compositor has acquired15:17
kdub_i've thought recently that compositor_{acquire,release} and client_{acquire, release} would be better if they were consumer_{} and producer_{}15:18
alf_kdub_: but we need a separate peek() method that doesn't dequeue the buffer. We don't want snapshots to cause the compositor to drop frames.15:19
alf_kdub_: I like the idea15:19
kdub_alf_, i'm saying like, if we have a snapshotter and a compositor who both get the same buffer, we would have to wait for them to both release before triggering buffer advancement in the swapper15:20
kdub_it would be cool even if the separate thread was a SnapshottingCompositionStrategy : public CompositingStrategy, then we could use the gpu to copy the buffer into thumbnail-size resolution and use the gpu's capability to scale the image15:22
alf_kdub_: sure, but we shouldn't allow the snapshotter to make the compositor miss a buffer. If we just have normal acquire/release, then imagine: snapshotter acquires buffer, is done, releases buffer back to client, compositor acquires the next buffer => frame lost15:24
kdub_ah, so the essence of the new function is that compositor_acquire would be required to advance the buffer15:25
kdub_but peek_buffer would not trigger an advance on the return of the buffer it 'peeked at'15:25
alf_kdub_: right, and of course if a buffer is being peeked at it will not return to the client until it is released by the peeker (is there such a word?)15:28
alf_kdub_: and the change to producer/consumer make even more sense now that we have another type of consumer (the snapshotter)15:30
kdub_alf_, right, the generic plan sounds good then :)15:32
alan_gkdub_: alf_ do we actually need to hand out the buffer to the snapshotter? Wouldn't ExecuteAroundMethod be a better idiom?15:37
alf_alan_g: do you mean something like BufferSwapper::with_compositor_buffer_do(std::function<void(Buffer&)> const&) ?15:44
alan_galf_: exactly15:45
alan_gif could also do that on the compositor side, then - at least in theory - both the compositor and the snapshotter could access the buffer concurrently.15:47
kdub_i guess either way, the buffer would be delayed the same potential amount of time15:47
alan_g*if we15:47
alf_alan_g: At first glance that could work, and I like the idea. Need to think through the locking/delay implications.15:47
kdub_with peek_buffer() it could be concurrent too though15:48
kdub_although i like the idea too15:48
alan_gkdub_: I was thinking the the swapper lost the buffer between the calls?15:49
kdub_right, either way (execute-around or a new method) we'll have to change it so we never loose the reference in the swapper for the compositor buffer15:50
kdub_lose15:50
alf_kdub_: So, yeah, perhaps we wouldn't need to lock the entire operation and get the best of both worlds. In particular, perhaps do what would be needed to "peek" the buffer, but don't give it out, process it through the callback.15:50
alf_but I need to think through the details...15:52
kdub_sure, i think both would work, and both would have worst case delay of (compositing-time + snapshotting time)15:52
kdub_but best case delay of max(compositing-time, snapshotting-time)15:52
alan_gagreed15:54
racarrMorning15:56
alf_kdub_: alan_g: best case delay from the compositor's perspective is 0 (if snapshotting begins and ends while the compositor doesn't need the buffer), worst case is snapshotting time15:56
alan_gAfternoon15:56
kdub_racarr, you have the mesa 'configure' command handy? my compile can't find a symbol for '_glapi_tls_Dispatch'15:57
alf_kdub_: do you mean delay as in how much time the buffer is in use?15:58
kdub_right, how long it is in use as a 'consumer' buffer15:58
racarrkdub_: Uhhhh so I have seen that beore and got it from something weird but the configure command is15:59
racarr./configure --disable-gallium-egl --enable-gles1 --enable-gles --with-egl-p\15:59
racarrlatforms=x11,drm,mir,wayland --enable-gbm --enable-shared-glapi --with-gallium-\15:59
racarrdrivers=r300,r60015:59
alf_kdub_: right, so I guess that's delay from the client's perspective15:59
alan_galf_: snapshotting shouldn't need to delay compositing (they should both treat the buffer as immutable)16:00
alf_alan_g: kdub_: yes you are absolutely right, probably time to end my day :)16:00
kdub_racarr, thanks16:03
=== mmrazik is now known as mmrazik|afk
=== kdub_ is now known as kdub
kdubwith swapper-swapper, i can't decide if having an empty swapper and filling it later with buffers (such as adopt_buffer(mc::Buffer)) is 2 step initialization or not :)16:21
alan_gIs it a precondition of using it that it is filled?16:23
kdubin swapper-swapper's current state, i decided that it was, hence, i bundle the factory function and send it down via function interface16:26
alf_kdub: alan_g: right now compositor_acquire() assumes that it always has a buffer16:26
kdubright, so i guess it is16:26
kdubmaybe the solution is to have the SwapperMaster have the SwapperFactory, and it can alloc the new swapper16:27
alf_all: Have a great rest of day. Talk to you tomorrow!16:27
kdubinstead of having BufferBundle kick a lambda down to indicate a change16:27
racarralf_: Bye16:27
kdubyou too alf_16:27
alan_gBye alf_16:27
* alan_g sees a fight coming: ~robertcarr/mir/display-sizes-are-unsigned vs ~vanvugt/mir/move16:51
racarrwhat16:57
racarroh16:58
racarrI see16:58
racarrhaha16:58
alan_gGoodbye all - have a good one!16:58
=== alan_g is now known as alan_g|life
racarrSee you!16:59
racarrNew platform-api branch is done except for some packaging bits that Gerry is going to help me with at ~robertcarr/platform-api/mir218:01
racarrmoving on to qtubuntu now which should just be small things. Hopefully have things unity8 running on platform-api-v2/mir tomorrow18:01
kdubracarr, very cool18:33
kdubracarr, if you have time, could you look over swapper-swapper? many eyes make for better thread code :)18:33
racarrkdub: Ok I will try. I know I said I would a few days ago then i got distracted by the stress test thread code XD18:40
racarrI think I can do it after lunch though, before moving on to qtubuntu18:40
racarralso by the end of lunch hopefully they will be done turning the concrete on the road in to18:41
racarrpowdered concrete18:41
racarrand I might be able to focus long enough to do a review XD18:41
kdubracarr, thanks :) threading code reviews are funnier than the straightforward ones18:42
kdubbecause the reviews process ends with ' well, can't find anything wrong', instead of 'looks good to me' ;)18:43
racarrkdub: But what about the mathematical proof of the display server18:44
racarrLunch! back soon18:49
=== mmrazik|afk is now known as mmrazik
kdubi've worked out this fun way of bouncing c++ compile errors between clang and gcc to get the quickest reading on the problem for every situation19:37
racarrAnnnd back19:44
racarrkdub: ?19:44
racarror do you just mean you go back and forth betwween them19:45
racarrbecause that's what I do XD19:45
kdubwe just need a 3rd or 4th compiler toolchain, then we'd be really quick at diagnosing google mock explosions ;)19:49
racarrkdub: Ok going to review swapper swapper now19:59
racarrkdub: I think alan's last comment about bundling up was about20:16
racarrthe signature appearing so frequently it should be a composite type (vector reference bufers, size_t)20:16
racarrI'm not sure, I was just thinking it's hard or me to understand size_t& original_size in end_responsibility20:17
racarrbut I am not very far yet :)20:17
kdubthe difference there is that during a switch, the number of buffers the dying swapper is responsible for can be different than the number of buffers the dying swapper is curerntly in possession of20:18
racarrMm20:26
racarrok I think I understand what is supposed to happen/the overall control flow now20:26
racarrkdub: I also don't understand why BufferSwapperMaster extends BufferSwapper20:28
racarrbut that's ok for now I gues20:28
kdubthe SwapperSwitcher has to redirect returning buffers from the swapper that was destroyed to the new swapper20:31
kdubreally, I expect BufferSwapperMaster and BufferBundle to merge20:31
racarrmm, so SwapperSwitcher implement BufferSwapperMaster and BufferSwapper20:31
racarrbut they are two interfaces?20:32
kdubno, i think of it as a BufferSwapperMaster is a BufferSwapper that can also change between algorithms20:32
racarrMm20:34
racarrkdub: Ok I think the locking makes sense. The one thing I am hung up on now20:35
racarris why the exception for control flow in SwapperSwitcher.20:35
racarrCan't it be anticipated that20:36
racarrswapper->client_acuire will throw forced_completion20:36
racarrby updating some member variable in change_swapper20:37
kdubno, because the client could have entered its wait long before the command to change the swapper comes in20:37
racarrMm right...20:39
racarrkdub: Hmm, so20:39
racarris it so/is it a problem20:39
racarrthat, say 2 clients are waiting, and the swapper changes20:39
racarrthey are no longer guaranteed to get buffers in the order20:40
racarrthey requested them20:40
kdubhmm, thinking20:40
racarrright, because they are woken up at the same time after blocking when they handle the forced completion exception, then it's a race to call client acquire the second time20:41
kdubwell, as it is now, the client only has one buffer at a time20:41
racarrder!20:42
kduband it would be a race in BufferSwapperMulti as well, so I don't think its a problem20:42
racarrSorry, silly questions, it's just not very well loaded in my head20:42
racarrmm20:42
kdubracarr, np, they're good questions to think about20:43
racarrkdub: Is SwatcherSwitcher::end_responsibility a real TODO?20:44
racarrwhat should it do...20:44
racarrSwapper* XD20:45
racarrSwatcherSwitcher might be a nice color management object though20:45
kdubracarr, it is, technically, it should return the bu ffers to whoever owned it... i'd expect that as I do another pass on the interface (and the BufferBundle interface) that function would go away20:45
racarrMm makes sense.20:50
racarrtests make sense :) cool test for RWLock20:50
racarrkdub: I am a little suspiscious of20:51
racarrtest_swapping_swappers20:51
racarr.cpp20:51
racarrbecause you can comment out the implementation of change_swapper and it still passes ;)20:51
racarrbut I can understand how it's useful as a stress integration test...20:52
racarrum20:52
racarrI don't know it might be nice if there were a different filename like stress_test_swapping_swappers so people like me don't look for how it tests swapping swappers20:53
racarrbut that's not a huge problem either and the test names clear it up really20:53
racarrkdub: Ok! LGTM20:55
racarrI didn't really go through for whitespace/style because I guess Alan/Alexandros did20:56
kdubracarr, well, if you comment out change_swapper, it is just tests that the swappers in normal conditions work ok. the change_swapper() is the essential part20:56
racarrbut am pretty convinced on the logic20:56
kdubracarr, thanks!20:56
racarrkdub: Right, but I mean the test file name implies20:56
racarrthat it tests, the swapper changing functionality works20:56
racarrwhereas in fact even if it doesn't, the test can still work.20:56
kdubthe subtle ways that test failed when I first wrote it were things like, it would hang, or the buffer's references would be lost20:57
kdubso its one of those 'don't hang, don't lose the buffers' sort of tests :)20:58
kdubthanks again though!20:59
racarrno worries! It was interesting21:00
bregmaracarr, I understand you can point me at android input drivers for the desktop?21:50
racarrbregma: Maybe!22:16
racarrCan you clarify what you are looking for / expecting, because there aren't userspace drivers for specific input devices like in X1122:16
bregmaracarr, I'm looking for what needs to happen to get Unity8 on the desktop, I understood there was an android-based layer on top of evdev available?22:28
racarrbregma: Yes.22:32
racarrI think nothing special needs to happen (beyond everything else) we have it going on the desktop, it delivers events to Qt, etc.22:33
racarrtil: If you want to include symbols in your shared library from a static library and don't reference them internally you need to use -Wl,--whole-archive before your library, but then you also need to use -Wl,--no-whole-archive after your library22:36
racarrbecause G++ appends its own libraries to the end of your list22:36
racarrWhee, qtubuntu builds again22:41
racarrbregma: Sorry I was pretty distracted XD um22:41
racarrso yeah it's a layer on top of evdev that was originally android code22:41
racarrthough we've pulled out all the android dependencies, etc...22:42
racarrand replaced some bits, for example we use xkbcommon for keymapping, etc.22:42
racarrSo it should be well suited for the desktop and we are matching it up with Qt, etc.22:42
racarrone thing that is perhaps, a bit of an open question (at least not entirely closed to me, maybe someone knows the answer)22:43
racarris where/how we will do things that happen in X11 drivers for the desktop, that are of interest22:43
racarri.e. things like two finger scroll on synaptics22:43
racarretc22:43
kdubhaha, happened across some old mir prototyping code that had a todo in the gl renderer 'todo: replace with nux'23:20
racarrkdub: The normal spelling is 'QML'23:26
racarrXD. Nux is still in RoughArchitecture.png too23:26
kdubhaha, yeah23:31
kdubonce i cross compiled nux for android, using the android ndk23:31
kdubthat was a painful week :)23:31
racarrMm I bet23:51
racarrjust tested and ironed out a few errors and now ran some QML apps on top of platform-api-v2/mir23:52
racarrnow I just need to fix key mapping again (mostly deleting the correct code now that we do xkbcommon)23:52
racarrandddddddddd23:52
racarrthen something I suppose ;)23:52

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