robert_ancellwhen is that GCC bug going to be fixed? Driving me insane...00:31
robert_ancellkdub if I set that destructor to default I get "/home/bob/bzr/mir-session-container1/tests/unit-tests/shell/test_session_manager.cpp:51:8: error: looser throw specifier for ‘virtual {anonymous}::MockSessionContainer::~MockSessionContainer()’00:49
robert_ancellIn file included from /home/bob/bzr/mir-session-container1/tests/unit-tests/shell/test_session_manager.cpp:22:0:00:49
robert_ancell/home/bob/bzr/mir-session-container1/include/server/mir/shell/default_session_container.h:38:7: error:   overriding ‘virtual mir::shell::DefaultSessionContainer::~DefaultSessionContainer() noexcept (true)’"00:49
robert_ancelldo you know what that means?00:49
RAOFrobert_ancell: You need to mark your destructor as noexcept01:16
RAOFWhich most destructors should be, because throwing from destructors is entering a world of std::terminate01:18
RAOFThat should probably be a style-guide entry, really; there are optimisations available to the compiler if it knows something can't generate an exception.01:30
=== duflu_ is now known as duflu
robert_ancellRAOF, so kdub suggested that this change should make them so (https://code.launchpad.net/~robert-ancell/mir/abstract-session-container/+merge/159523)01:53
RAOFrobert_ancell: But your derived one isn't marked as noexcept, right?01:55
robert_ancellRAOF, the derived class doesn't have one, does it need an explicit one?01:55
robert_ancellRAOF, and can I just do "= default" for the derived class too?01:56
RAOFIf you've got a trivial destructor, sure.01:56
robert_ancellso in short every class that extends another needs an explicit destructor01:56
smspillazrobert_ancell: I suspect you have to do ~MockSessionContainer () noexcept = default;02:52
smspillazoh. oops, didn't see the rest of the scrollback02:52
smspillazin any case, I've had some trouble with default destructors on google mocks - you need to have an explcit or compiler generated destructor for some reason, dunno why02:53
robert_ancellsmspillaz, thanks02:54
smspillazrobert_ancell: generally speaking it goes [virtuality] returntype function_name () [const-specifier] [exception-specifier] [body | =]02:58
robert_ancellHmm, trying to assign a value with a shared pointer not working - any ideas? http://paste.ubuntu.com/5717823/04:49
duflurobert_ancell: Seems auto might be doing something you don't want. Make sure the RHS is a non-const shared_ptr of compatible type05:10
RAOFrobert_ancell: Did catching session by reference rather than value in the lambda expression fix it?05:48
alan_grobert_ancell: morning!08:07
robert_ancellalan_g, hello!08:14
alan_grobert_ancell: "When I originally had the default destructor it stops the mock SessionContainer classes from working" - you mean compiling?08:20
alan_gThat's because mocks have members with non-noexcept destructors, so you need to explicitly mark the destructor noexcept. (Which is valid when using google-test.)08:21
robert_ancellalan_g, right - I couldn't work out the correct syntax to mark them08:25
alan_grobert_ancell: ~MockWhatever() noexcept {}08:26
robert_ancellalan_g, just checking that..08:27
robert_ancellalan_g, I was just trying that - it only works once https://code.launchpad.net/~kdub/mir/nicemock-improvements/+merge/159465 lands08:29
alan_grobert_ancell: I see. (Or avoiding NiceMock ;)08:32
robert_ancellalan_g, so, should ServerConfiguration also use the same style destructor?08:36
alan_grobert_ancell: some of us have started updating stuff as we touch it - but it can get a bit "viral", so it isn't required. New stuff we do "right".08:38
=== alan_g is now known as alan_g|tea
=== alan_g|tea is now known as alan_g
=== alan_g is now known as alan_g|lunch
=== olli__ is now known as olli
=== alan_g|lunch is now known as alan_g
alf_alan_g: @disallow-vt-switching-when-pause-fails, so the idea is to handle any exceptions (and report the relevant errors) internally e.g. in display->pause(), and have the high level functions just return bool? What if handle the exceptions (and reports) at the mid level and rethrow?13:58
alan_galf_: It all depends if display->pause() failing is an exception or just a result. Looking at the code in DisplayServer::Private::pause() it seems easier for it to be a result.14:01
alf_alan_g: it's an exception which we can gracefully handle, failure is not really an expected result, but I guess the line is somewhat blurry in this case14:04
alan_galf_: which code is simpler?14:05
alf_alan_g: the high-level pause() snippet is simpler now, but I am not sure if it will continue to be simpler when we add other components to the mix (e.g. pause the communicator, which will come soon. That's the reason I added ScopedAction, since the recovery was going to get unwieldy).14:13
alf_alan_g: internally there is no really difference in code complexity14:14
alan_galf_: OK. In that case, can we define an exception type that carries the reporting context up to the top level and have a single exception handler doing the reporting?14:17
alf_alan_g: Hmm, not really, because we need to cross out of platform specific boundaries with a platform specific issue/context (DRM failure). The highest level at which we know what is going on is inside display->pause() (hence my suggestion to catch, report and rethrow).14:23
alan_galf_: what I don't like about that is the eventual catch and ignore14:24
alan_galf_: that's why I thought of catch, report and return an error. ;)14:25
alf_alan_g: at the DS level we could report a general pause() failure14:28
alf_alan_g: plus we are not really ignoring, we are return false from the handler :)14:29
alan_galf_: ok14:30
alf_alan_g: I'll iterate and we can see how it looks14:32
=== alan_g is now known as alan_g|tea
=== alan_g|tea is now known as alan_g
kdubstatus, working towards removing 3rd_party/fbtype, then hopefully some hwc1.0 work15:25
alf_status: working on handling pause/resume failures (i.e. vt switching) more gracefully, working on pausing communicator15:32
alan_gstatus: documenting and cleaning up configuration related classes15:37
racarrspinning in circles on the circular dependency17:00
=== alan_g is now known as alan_g|life
tvossbryce, ping17:37
racarrtaking a stab at software cursor in a demoI wonder if17:37
racarrthe right approach is to subclass the compositing strategy17:38
racarror to subclass Renderables (to emit a cursor renderable after the surfaces)17:38
brycetvoss, yep?17:48
racarrneither one really works well in trunk now.if you subclass the compositing strategy you have to reimplement the whole thing rather than just chain up and overlay (because of the location of display::post_update)17:53
racarrwhich is all you want to do...17:54
racarrthe renderable interface isn't set up for anything beside surfaces though, inparticular, void bind_to_texture()17:54
racarris alittle inflexible17:54
=== mmrazik is now known as mmrazik|afk
* kdub falls for the trap of confusing quantal/raring arm toolchains18:41
racarrsoftware cursor demo is maybe half done19:28
racarrjust flicked a cursor allover the screen21:04
racarrit felt good21:04
racarrall works except the software cursor itself cant trigger the compositor21:31
racarrso you need a client rendering at 60fps for the cursor to work ;)21:31
kdubracarr, excellent :)21:43
racarrkdub: Any idea for what sort of interface21:44
racarrto allow triggering the compositor?21:45
racarrit seems like exposing compositor.schedule_compositing or whatever21:45
racarrdefeats the purpose of the whole change callback mechanism in place now21:45
racarrwhich I dont entirely understand21:45
kdubracarr, yes, let me check...21:45
racarrbuts its clear its needed eventually, not every redraw will correspond to a change of a renderable (i.e. due to animations or some such)21:45
tvossracarr, ping21:53
racarrtvoss: pong21:57
racarrok just updated my qtubuntu to trunk to test22:48
racarrpointer input, and key input is broken!22:48
racarrmight be related to the vt changes? or something...or might be a mistake in my qtubuntu :)22:48
racarrit seems impossible to gdb mir since the vt changes23:19

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