=== tmpRAOF is now known as RAOF === ara is now known as Guest58945 === chihchun_afk is now known as chihchun [09:45] anpok: duflu_ any last reviews? https://code.launchpad.net/~alan-griffiths/mir/make-window-management-configurable/+merge/253725 === duflu_ is now known as duflu [09:47] alan_g: Adding a comment, but not blocking === marcusto_ is now known as marcustomlinson [10:12] alan_g: interesting side note on clang compilation error, gcc only allows it when the constructor is a constructor template [10:15] Weird. I'd be very surprised if a using directive for the constructor doesn't determine the access. Almost worth posting a test case to the standards reflector. [10:17] I'd have to look at the wording, but I naively(?) expect it to work the same as with member functions. [10:18] filed a bug report at llvm [10:23] https://llvm.org/bugs/show_bug.cgi?id=23018 [10:23] llvm.org bug 23018 in C++ "clang claims an inherited constructor protected when declared public with using" [Normal,New] [10:23] oh what a curious bot [10:26] alan_g: do you prefer 2014-2015 or 2015 for new files (I (inconsistently) used the former for files that I already proposed in december) [10:27] I think it is all silly. But it should reflect the date the intellectual property was created. [10:27] "silly" is these comments, not IP rights. [10:31] :) [10:33] /rant=on The only reason I know of for such comments is that in the USA before 1966(ish) one had to assert the rights to be able to enforce them. And even in those days, in that jurisdiction you could put them at the bottom of the file where they are not in the way. [11:10] guys [11:11] i'm having issues with an autopilot injected keypress not being detected by the event dispatcher [11:11] any iea what may be wrong? [11:11] it's the first one [11:11] i..e it injects p a s s w o r d [11:11] and sometimes p is lost [11:11] surface is not yet focused? [11:11] it should [11:12] or where do you track the loss of the p? [11:12] at least the qml side says it is [11:12] at the mir level [11:12] well qtmir [11:12] i.e. on a dispatch() implementation [11:12] hm [11:12] funny thing [11:12] is that if i add a wait in the test [11:12] then it seems to not fail [11:12] where does that injection happen? at usc? [11:13] but i can't find what isn't yet settled [11:13] since it all seems to have been created ages ago [11:13] the surface, the event feeder, etc [11:13] anpok: it's written to uiput device [11:13] evdev emulation? [11:13] i guess my next step would be adding some debug somewhere in mir [11:14] but recompiling mir not cool :D [11:14] hm then you could enable input reports at usc/u8 [11:14] how do i do that? [11:14] http://unity.ubuntu.com/mir/component_reports.html [11:14] brb [11:15] i have a feeling of having asked that question before [11:15] :) [11:15] and having got that url and could get it to work :D [11:15] note that u8 is both server and client [11:15] but let me see if i'm better now [11:19] tsdgeos: you're going through USC + U8 + app? Note that USC waits for the second posted frame before granting focus to u8 (which IIUC) waits for the first frame before giving focus to the app - that can add up to a delay. [11:20] alan_g: the app and surface have been on screw "for ages" [11:20] that's what's puzzling me [11:20] i wonder if it's even the evdev device eating the write() to it [11:22] Weird. [11:26] i'm using those env vars [11:26] and see nothing [11:26] where should MIR_SERVER_INPUT_REPORT=log [11:26] write that log? [11:26] stdoutput? [11:29] tsdgeos: yes, but I think that's redirected to a log file somewhere [11:29] you mean ~/.cache/upstart/unity8.log ? [11:29] i can't see it in there [11:30] greyback: you know where the logs go? ^^ [11:31] unity8's logs? yeah, tsdgeos has it [11:33] and it should end up in there if started with MIR_SERVER_INPUT_REPORT=log ? [11:33] is there anything else i need to enable? [11:33] not that I'm aware of. But by your tone, I'm guessing it's not working ;) [11:34] alan_g: that does work for a nested server too? [11:35] it always has. I can double check... [11:38] MIR_SERVER_NAME=session-0 MIR_SOCKET=/run/mir_socket QT_QPA_PLATFORM=mirserver MIR_SERVER_INPUT_REPORT=log /usr/bin/unity8 [11:38] doesn't seem to give me much [11:39] and MIR_CLIENT_INPUT_REPORT=log [11:39] went with [11:39] MIR_SERVER_NAME=session-0 MIR_SOCKET=/run/mir_socket QT_QPA_PLATFORM=mirserver MIR_SERVER_INPUT_REPORT=log MIR_CLIENT_INPUT_REPORT=log MIR_CLIENT_INPUT_RECEIVER=log /usr/bin/unity8 [11:39] maybe that log file is just a reopened std out? then maybe also redirect std out.. [11:39] nothing either [11:39] oops [11:39] yes input receiver .. [11:39] that should give me touch events too, right= [11:44] tsdgeos: greyback - yes, reports are working from a nested server [11:47] they don't from unity8 :/ [11:47] MIR_CLIENT_INPUT_RECEIVER_REPORT is in the mir sources [11:48] ok [11:48] that gave me stuff [11:50] so yeah [11:50] according to that [11:50] doesn't get whatever prints [11:50] [1427284176.481447] input-receiver: Received event: [11:50] only get the a there [12:06] tsdgeos: so u8s surface is not yet focused/hasnt submitted buffers/been created yet...? [12:06] anpok: don't think so [12:07] usc is not getting the key event either [12:07] oh [12:07] but there is no client report in usc [12:07] well there is the server one [12:08] http://paste.ubuntu.com/10677149/ [12:08] 14 events [12:08] which should be 16 [12:08] yeah but thats the sending part [12:09] so there is still a lot that can go wrong (or right) within usc before this report is generated [12:10] if you enable the MIR_SERVER_LEGACY_INPUT_REPORT=log on usc you see the part that reads the event from the evdev devices [12:12] oki [12:12] * tsdgeos does [12:18] [1427285878.408333] android-input: [InputReader]Dropping key up from device py-evdev-uinput because the key was not down. keyCode=44, scanCode=25 [12:18] that's good [12:18] so it seems that autopilot creates device /dev/input/event8 [12:18] then mir says [12:18] [1427285878.342107] android-input: [EventHub]New device: id=18, fd=66, path='/dev/input/event8', name='py-evdev-uinput', classes=0x80000063, configuration='', keyLayout='Generic.kl', keyCharacterMap='Generic.kcm', builtinKeyboard=false, usingSuspendBlockIoctl=true, usingClockIoctl=true [12:18] [1427285878.342351] android-input: [InputReader]Device added: id=18, name='py-evdev-uinput', sources=0x00000701 [12:19] and i guess sometimes something goes too slow [12:19] and the first key down fails? [12:20] right [12:20] so that's what happens [12:21] mir is not seeing the new device until [12:21] [1427285878.342107 [12:21] but the keypress is on [12:21] 12:17:58.305 DEBUG _uinput:60 - Pressing p (25). [12:21] that is 1427285878.305 [12:21] i.e. 40 msec before [12:22] ok i kind of know what's wrong now [12:22] no idea how to fix it though :D [12:22] other than blindly adding a sleep [12:41] tsdgeos: log a mir bug anyway [12:42] tho it's probably a race that's hard to fix === dandrader is now known as dandrader|afk [12:47] greyback, seems like with qt 5.5, you can split the qtgui and the renderloop thread [12:48] kdub: yeah [12:48] there was work to enable threaded rendering with a custom qquickrendercontrol for qt5.5 [12:48] yay, neat [12:48] sadly that's not in 5.4 [12:49] which I expect will slow down your work a bit? [12:49] it might, i'm having a hard time convincing the qtgui thread not to try to run [12:50] :) the "Gui" thread does lots of other stuff too, from processing input events and managing the qml scene [12:51] yeah, its good that it can be split in qt 5.5, although its still disconcerting how the threading works so rigidly (imo) [12:53] kdub: "rigidly" is an interesting term, what do you mean? [12:54] like 1 thread per qquickwindow, or 1 thread for all windows, and nothing else? [12:56] yeah, its just strange that i have to set affinity of objects with certain threads, and mind which thread calls certain functions (just an empty complaint, really :) ) === chihchun is now known as chihchun_afk [12:59] greyback, the problem i'm running into now (with 5.4) is that the QQuickRenderControl seems to need a QQuickWindow with a fb target (QOffscreenSurface) associated with it... and trying to QQuickWindow::create() the window associated with the QQuickRenderControl seems to start the QtGui thread === marcusto_ is now known as marcustomlinson_ === dandrader|afk is now known as dandrader [15:03] The menu bar doesn’t cast a shadow on a window touching it, therefore the window is not lower than the menu bar. [15:03] A window can slide underneath the Launcher, therefore a window is lower than the Launcher. [15:05] A window is lower than the Launcher, but not lower than the menu bar, therefore the Launcher is higher than the menu bar. [15:06] Therefore shell components are on multiple layers. [15:08] Which is … inconvenient. [15:32] mpt: you're testing unity8 desktop mode I'm assuming? Yes we've plenty of work to do there yet. We've inherited those layers from the phone/tablet [15:33] greyback, no, I was talking about shells in general. What I said was true for Unity 7 and for OS X, and probably (though I haven’t tried) for Gnome Shell as well. [15:34] mpt: ah I see, apologies [15:35] mpt: mind if I ask what you find inconvenient about shell components on layers though? You could consider each window as being in it's own layer (except for our desired case of windows being snapped together, so in same layer) [15:36] greyback, it’s inconvenient for defining exactly what order surfaces are in, layer-wise [15:41] At the moment I think the answer is “the topmost dialog/freestyle/regular/floating regular window, in the topmost window tree, should be level with the bottommost shell surface” [15:41] but that seems like a bit of a hack [15:43] A much simpler version of the problem is: When the frontmost regular window has a dialog, and the title bars of both are flush with the bottom of the menu bar, what is the layering of the menu bar? Is it (a) above both, (b) level with the dialog, (c) level with the parent, like it would be if it didn’t have a dialog, or (d) below them both? [15:44] In Unity 7, the answer is (b) [15:47] (i.e. as soon as the dialog opens, its parent sinks down below the menu bar) [15:47] In OS X, the answer is (e) magically level with both, even though one is above the other === chihchun_afk is now known as chihchun [15:53] * alan_g was just thinking about how to better manage the z-order of related surfaces in Mir. [16:03] mpt: ok problem is clear, no obvious solution strikes me however [16:03] thanks for elaborating [16:06] only thing I can suggest is not having menubar part of the stack of window layers, but in a separate layer whose bottom z-order matches the top window's layer z-order [16:07] less elegant but gives more power to choose how menubar's shadow falls === dandrader is now known as dandrader|afk [16:44] Several subtleties about window position and size depend on knowing what is a “shell surface” [16:45] For example, if you have the Dash open, a new window can happily open with its title bar entirely covered by the Dash, but we mustn’t let its title bar be entirely covered by the menu bar or the Launcher [16:46] The menu bar and Launcher are “shell surfaces” under this definition, while the Dash is not (and nor are indicator menus, session dialogs, Launcher tooltips, etc) [16:49] So, it’s useful for a shell to be able to say “this surface here is of type SHELL_SURFACE” (a.k.a. _NET_WM_WINDOW_TYPE_DOCK) and let Mir handle the subtleties [16:50] But, greyback, that doesn’t work if the menu bar is a magical surface that layers differently from the other shell surfaces :-) [16:59] mpt: it's not necessarily magical, we're just not confined to the laws of physics here :) It's very possible to have menubar at same z-order as the top-most window in the stack of windows [17:07] Sure, the magical part is the detail where OS X’s menu bar is level with all windows at the same time === alan_g is now known as alan_g|EOD === chihchun is now known as chihchun_afk [22:50] *deletes 2000 lines of code from PAPI* [22:51] delicious delicious deletion [23:22] 3285 lines (+34/-2861) 40 files modified [23:22] oh yeah