Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BasicSurface: allow frame to be posted after surface destroyed #1273

Merged
merged 3 commits into from
Feb 14, 2020
Merged

Conversation

wmww
Copy link
Contributor

@wmww wmww commented Feb 13, 2020

Reading through the code, it looks like setting all buffer stream callbacks to [](){} is allowed (that's what we already do in BasicSurface::set_streams(), and why shouldn't it be?). If an noop callback is allowed, a conditionally noop callback should also be allowed. I see no reason to throw this error, as it is perfectly reasonable for a surface to be destroyed before its buffer streams.

Fixes #1272

@wmww
Copy link
Contributor Author

wmww commented Feb 13, 2020

On second thought you should probably wait for me to write some tests

@AlanGriffiths
Copy link
Contributor

AlanGriffiths commented Feb 13, 2020

It is only two months since I introduced that code, there was a reason for it.

(I think I encountered a zombie client that spammed the server. Let me dig...)

The bug was #1106, the change was #1110

@wmww
Copy link
Contributor Author

wmww commented Feb 13, 2020

Oh, I didn't notice the usage of this. However, I don't understand how it was any safer before this PR. Did throwing the error prevent a possible future crash?

@AlanGriffiths
Copy link
Contributor

Oh, I didn't notice the usage of this. However, I don't understand how it was any safer before this PR. Did throwing the error prevent a possible future crash?

Throwing disconnected glmark and that stopped it spamming us with unwanted buffers.

@wmww
Copy link
Contributor Author

wmww commented Feb 13, 2020

Hmm.. I believe a fully safe solution would be to add

for(auto& layer : layers)
    layer.stream->set_frame_posted_callback([](auto){});

to the destructor. The only issue I can imagine would be it would dead lock if the surface is destroyed from a callback. I will push this along with some tests in a bit.

(Before you ask or have to go check, yes, mc::Stream::submit_buffer() does call the callback under lock)

Copy link
Contributor

@AlanGriffiths AlanGriffiths left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After discussion, this is correct, but not all that is needed.

@wmww
Copy link
Contributor Author

wmww commented Feb 13, 2020

This is now ready to merge. I'll let someone else bors after they check the tests are sensible.

Copy link
Contributor

@AlanGriffiths AlanGriffiths left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bors r+

bors bot added a commit that referenced this pull request Feb 14, 2020
1273: BasicSurface: allow frame to be posted after surface destroyed r=AlanGriffiths a=wmww

Reading through the code, it looks like setting all buffer stream callbacks to `[](){}` is allowed (that's what we already do in `BasicSurface::set_streams()`, and why shouldn't it be?). If an noop callback is allowed, a conditionally noop callback should also be allowed. I see no reason to throw this error, as it is perfectly reasonable for a surface to be destroyed before its buffer streams.

Fixes #1272

Co-authored-by: William Wold <wm@wmww.sh>
@bors
Copy link
Contributor

bors bot commented Feb 14, 2020

Build succeeded

  • continuous-integration/travis-ci/push

@bors bors bot merged commit 76d2202 into master Feb 14, 2020
@bors bors bot deleted the fix-1272 branch February 14, 2020 10:14
bors bot added a commit that referenced this pull request Feb 14, 2020
1277: BasicSurface: clear all frame posted callbacks in the destructor r=AlanGriffiths a=wmww

See discussion in #1273. This prevents observers being sent pointers to dead surfaces.

Co-authored-by: William Wold <wm@wmww.sh>
AlanGriffiths pushed a commit that referenced this pull request Feb 17, 2020
1273: BasicSurface: allow frame to be posted after surface destroyed r=AlanGriffiths a=wmww

Reading through the code, it looks like setting all buffer stream callbacks to `[](){}` is allowed (that's what we already do in `BasicSurface::set_streams()`, and why shouldn't it be?). If an noop callback is allowed, a conditionally noop callback should also be allowed. I see no reason to throw this error, as it is perfectly reasonable for a surface to be destroyed before its buffer streams.

Fixes #1272

Co-authored-by: William Wold <wm@wmww.sh>
AlanGriffiths pushed a commit that referenced this pull request Feb 17, 2020
1277: BasicSurface: clear all frame posted callbacks in the destructor r=AlanGriffiths a=wmww

See discussion in #1273. This prevents observers being sent pointers to dead surfaces.

Co-authored-by: William Wold <wm@wmww.sh>
AlanGriffiths added a commit that referenced this pull request Feb 26, 2020
commit d98dd7c
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Mon Feb 24 14:14:31 2020 +0000

    Merge #1315

    1315: Don't interleave iterating over environ with unsetting environment variables r=Saviq a=AlanGriffiths

    Don't interleave iterating over environ with unsetting environment variables

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 170a05f
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Feb 21 17:49:30 2020 +0000

    Merge #1311

    1311: Fix miral-shell command-line when options are provided. (Fixes: #1310) r=wmww a=AlanGriffiths

    Fix miral-shell command-line when options are provided. (Fixes: #1310)

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 5e354d2
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Feb 21 16:29:58 2020 +0000

    Merge #1308

    1308: [mir shell] When started from .desktop, do bash --login processing. (Fixes: #1300) r=wmww a=AlanGriffiths

    [mir shell] When started from .desktop, do bash --login processing. (Fixes: #1300)

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 13765a9
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Feb 21 10:15:04 2020 +0000

    Merge #1304 #1305

    1304: Only modify surface if something changed r=AlanGriffiths a=wmww

    *Some* toolkits (\*cough\* Java \*cough\*) like to spam changes to window properties. No need to propagate that all the way through Mir.

    1305: Improve keyboard focus situation r=AlanGriffiths a=wmww

    Reverts #825 and fixes #1274. This does not fix #1295, but in my opinion it is an improvement on the status quo.

    With the PR, Mir and Wayland/X keyboard focus state is allowed to fall out of sync, but the issue is detected and fixed before sending key events. The only visible symptom of the problem is in some cases (such as after closing a popup) a window appears to not have keyboard focus, but will gain it as soon as you start typing.

    None of the new code need be removed when a proper fix is implemented. The fallback of setting keyboard focus before sending keys is reasonable, and will mitigate against potential future bugs.

    Co-authored-by: William Wold <wm@wmww.sh>

    # Conflicts:
    #	src/server/frontend_wayland/wl_keyboard.h

commit 9ce32b5
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Feb 21 09:18:32 2020 +0000

    Merge #1303

    1303: Strip out any MIR_* environment variables when launching apps r=wmww a=AlanGriffiths

    Strip out any MIR_* environment variables when launching apps

    These can cause annoyance when launching Mir compositors (such as tests) from a Mir Shell.

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit b4223f3
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Thu Feb 20 23:11:10 2020 +0000

    Merge #1306

    1306: Don't make shell requests under lock r=RAOF a=wmww

    AFAIK this wasn't causing any problems, but best not to prod complex external components under lock.

    Co-authored-by: William Wold <wm@wmww.sh>

commit eea9c3b
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Thu Feb 20 12:37:32 2020 +0000

    Merge #1297 #1298

    1297: More cleanup r=AlanGriffiths a=wmww

    Lots of little things that don't fit anywhere else

    1298: Use focused window as default popup parent r=AlanGriffiths a=wmww

    When `TRANSIENT_FOR` is set to a window without a scene surface, use the currently focused window as the fallback popup parent. This happens, for example, when opening Kate's `Bookmarks` menu. This PR works somewhat on its own, and better in conjunction with #1296

    Co-authored-by: William Wold <wm@wmww.sh>

commit 177cd6f
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Thu Feb 20 11:43:17 2020 +0000

    Merge #1296

    1296: Fix XWaylandWM::set_focus() r=AlanGriffiths a=wmww

    Fixes #1278. Input focus should now be correctly switched between apps. Due to the workaround for #1295, when a Wayland app is focused the last X app is not told it is unfocused, but it **does** stop receiving any input until it is refocused.

    Co-authored-by: William Wold <wm@wmww.sh>

commit b461479
Author: Alan Griffiths <alan@octopull.co.uk>
Date:   Wed Feb 19 13:57:02 2020 +0000

    Add cherry-picks to changelog

commit f66aa6a
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Wed Feb 19 12:40:46 2020 +0000

    Merge #1292

    1292: Provide a usable default configuration for Xenial era toolkits r=Saviq a=AlanGriffiths

    Provide a usable default configuration for Xenial era toolkits.

    Also fixes up the `gnome-terminal` launch command so that it works on Ubuntu and similar distros, including Xenial.

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 5c0e7ed
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Wed Feb 19 09:48:26 2020 +0000

    Merge #1294

    1294: Add wayland "Recommends" to mir-demos dependencies r=RAOF a=AlanGriffiths

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 034af91
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Tue Feb 18 13:24:32 2020 +0000

    Merge #1291

    1291: Add "Mir Shell" to the greeter r=wmww a=AlanGriffiths

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit c65b9ea
Author: Alan Griffiths <alan@octopull.co.uk>
Date:   Wed Feb 19 10:05:49 2020 +0000

    Add missing year to trailer lines

commit d179d3d
Author: Alan Griffiths <alan@octopull.co.uk>
Date:   Fri Feb 7 14:29:31 2020 +0000

    Drop packaging for dropped script (#1258)

    (cherry picked from commit e60acb6)

commit 29167e8
Author: Alan Griffiths <alan@octopull.co.uk>
Date:   Tue Feb 18 09:59:00 2020 +0000

    No rpi for 1.x

commit 2205752
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Mon Feb 17 17:40:21 2020 +0000

    Merge #1290

    1290: Fix `miral-app -demo-server` r=wmww a=AlanGriffiths

    Fix `miral-app -demo-server`.

    Export DISPLAY correctly when starting mir_demo_server.

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 0b5a0a3
Author: Alan Griffiths <alan@octopull.co.uk>
Date:   Thu Jan 30 11:15:42 2020 +0000

    [travis] Merge `matrix` into `jobs` (#1231)

    * Merge `matrix` into `jobs`

    * Try to fix warnings

    * Try to fix warnings more

    * Travis: Add version: field to opt-in to validation

    There's a Travis feature in beta we can opt-in to to do [validation on our .travis.yml](https://docs.travis-ci.com/user/build-config-validation). That should hopefully prevent this sort of thing from silently happening again.

    Co-authored-by: Christopher James Halse Rogers <chris@cooperteam.net>

    (cherry picked from commit 098ccc6)

commit f34afd3
Author: Alan Griffiths <alan@octopull.co.uk>
Date:   Thu Jan 23 12:44:38 2020 +0000

    Drop 19.04 builds - it has gone.

    (cherry picked from commit 544b530)

commit 4eb9c78
Author: Alan Griffiths <alan@octopull.co.uk>
Date:   Mon Feb 17 12:21:09 2020 +0000

    Draft changelog for Mir 1.7.1

commit 349a5ca
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Mon Feb 17 12:21:59 2020 +0000

    Merge #1286

    1286: Fix unnecessary copies in range-for loops. r=AlanGriffiths a=RAOF

    Co-authored-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>

commit e90bbd4
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Mon Feb 17 16:30:25 2020 +0000

    Merge #1289

    1289: [mirserver] symbols stanza for mir::Server::x11_display should be 1.7.1 r=wmww a=AlanGriffiths

    [mirserver] symbols stanza for mir::Server::x11_display should be 1.7.1

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit b56eab7
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Thu Dec 5 11:50:55 2019 +0000

    Merge #1120

    1120: decoration type doesn't need a titlebar r=AlanGriffiths a=wmww

    Any code surrounding MirAL title bars probably needs to be removed, but this function is part of the ABI so for now just fix it. This PR fixes positioning of my new SSD titlebars.

    Co-authored-by: William Wold <wm@wmww.sh>

commit 2301d1e
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Wed Jan 15 09:56:50 2020 +0000

    Merge #1197

    1197: BasicWindowManager: Place popup's relative to content r=AlanGriffiths a=wmww

    This corrects popup placement for server side decorated surfaces

    Co-authored-by: William Wold <wm@wmww.sh>

commit 423ca62
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Tue Dec 10 09:26:25 2019 +0000

    Merge #1131

    1131: Use ByteSizeLong instead of deprecated ByteSize r=AlanGriffiths a=z3ntu

    Fixes #1127

    I've also included a patch which fixes another warning with the musl libc (sys/poll.h -> poll.h).

    The build seems to be warning-free now except for
    ```
    /home/pmos/build/src/mir-1.6.0/tests/mir_test_framework/test_wlcs_display_server.cpp: In function 'void {anonymous}::wlcs_pointer_move_relative(WlcsPointer*, wl_fixed_t, wl_fixed_t)':
    /home/pmos/build/src/mir-1.6.0/tests/mir_test_framework/test_wlcs_display_server.cpp:659:10: warning: '*((void*)& event +16)' may be used uninitialized in this function [-Wmaybe-uninitialized]
      659 |     auto event = mir::input::synthesis::a_pointer_event()
          |          ^~~~~

    ```

    Co-authored-by: Luca Weiss <luca@z3ntu.xyz>

commit 12cf31d
Author: Alan Griffiths <alan@octopull.co.uk>
Date:   Mon Feb 17 11:27:51 2020 +0000

    Fix for LP builds (#1287)

    (cherry picked from commit a187e10)

commit 0153a17
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Sat Feb 15 14:39:43 2020 +0000

    Merge #1285

    1285: Fix for LP builds r=AlanGriffiths a=AlanGriffiths

    Fix for LP builds

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit f8017ed
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Feb 14 18:51:22 2020 +0000

    Merge #1283

    1283: [miral] Make app launch environment configurable r=wmww a=AlanGriffiths

    Make app launch environment configurable. (Fixes: #1268)

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 56a8bd8
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Feb 14 17:32:36 2020 +0000

    Merge #1277

    1277: BasicSurface: clear all frame posted callbacks in the destructor r=AlanGriffiths a=wmww

    See discussion in #1273. This prevents observers being sent pointers to dead surfaces.

    Co-authored-by: William Wold <wm@wmww.sh>

commit 12b4ad1
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Feb 14 15:01:46 2020 +0000

    Merge #1279 #1282

    1279: Improve XCBConnection atom lookup r=AlanGriffiths a=wmww

    Fixes a potential thread safety issue in the resolving of `XCBConnection::Atom` and starts caching atom names for faster lookup.

    1282: [Wayland] Don't destroy objects we don't own r=wmww a=AlanGriffiths

    Don't destroy objects we don't own. (Fixes #1276)

    Co-authored-by: William Wold <wm@wmww.sh>
    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit ac3f416
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Feb 14 14:03:34 2020 +0000

    Merge #1281

    1281: Fix XWaylandSurface::property_notify() r=wmww a=wmww

    We need to fully process properties before consuming the pending spec, and should be reading properties even when we do not have a scene surface.

    Co-authored-by: William Wold <wm@wmww.sh>

commit 842c56c
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Feb 14 10:14:14 2020 +0000

    Merge #1280

    1280: Process transient_for property in a function r=AlanGriffiths a=wmww

    Also verbose logs all initial window properties

    Co-authored-by: William Wold <wm@wmww.sh>

commit 726888b
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Feb 14 09:22:06 2020 +0000

    Merge #1273

    1273: BasicSurface: allow frame to be posted after surface destroyed r=AlanGriffiths a=wmww

    Reading through the code, it looks like setting all buffer stream callbacks to `[](){}` is allowed (that's what we already do in `BasicSurface::set_streams()`, and why shouldn't it be?). If an noop callback is allowed, a conditionally noop callback should also be allowed. I see no reason to throw this error, as it is perfectly reasonable for a surface to be destroyed before its buffer streams.

    Fixes #1272

    Co-authored-by: William Wold <wm@wmww.sh>

commit 56a8c13
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Thu Feb 13 10:17:25 2020 +0000

    Merge #1271

    1271: Create scene surface in attach_wl_surface() r=AlanGriffiths a=wmww

    Fixes #1249 and simplifies `XWaylandSurface` logic. `attach_wl_surface()` can now create a `scene::Surface`, even if the `wl_surface` hasn't committed yet. Presumably there used to be a problem with this course of action, but it doesn't seem to be an issue any more (I've tested with gedit, pcmanfm, xxeyes, xterm, kate, blender and steam).

    Edit: #1249 was caused by `attach_wl_surface()` caching a pre-commit input area, and the commit not updating the area correctly because there wasn't yet a surface to update. This fixes it because there is no gap between reading the initial input area and creating a scene surface (which allows updates to the input area)

    Co-authored-by: William Wold <wm@wmww.sh>

commit f120451
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Wed Feb 12 20:23:48 2020 +0000

    Merge #1270

    1270: Wait for wl_surface to appear before attaching it to XWayland surface r=wmww a=wmww

    Fixes #1269. See that issue for more info on the problem. This allows XWayland to register a callback when a surface with a particular ID is created. It is admittedly a lot of new code, and may not be worth it. It's probably not worth the complexity just to fix Mir under wayland-debug, but hypothetically we could hit the same race condition on a very slow machine, or in some other situation where the Wayland thread was bogged down. I'm open to alternative ideas on how to solve this.

    Co-authored-by: William Wold <wm@wmww.sh>

commit 4f00f47
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Wed Feb 12 14:33:44 2020 +0000

    Merge #1266

    1266: [X11] Once we've got the lockfile, check for an existing socket r=wmww a=AlanGriffiths

    [X11] Once we've got the lockfile, check for an existing socket before trying to use it. (Fixes: #1265)

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit aeade95
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Tue Feb 11 16:13:54 2020 +0000

    Merge #1254 #1262 #1263

    1254: [X11] add --x11-displayfd option r=wmww a=AlanGriffiths

    [X11] add --x11-displayfd option.

    File descriptor to write X11 DISPLAY number to when ready to connect.

    1262: Tell Java toolkits that we're a non-reparenting window manager r=wmww a=AlanGriffiths

    Tell Java toolkits that we're a non-reparenting window manager.

    This, for example, gets CLion painting correctly under X11.

    1263: Fix FTBFS with g++-10 r=wmww a=AlanGriffiths

    Fix FTBFS with g++-10. (Fixes: #1259)

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit ec8f06e
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Tue Feb 11 14:21:14 2020 +0000

    Merge #1264

    1264: Focus state r=AlanGriffiths a=wmww

    Fixes #1206 and other issues related to window focus. Also organizes properties from the X server into a `cached` struct.

    Co-authored-by: William Wold <wm@wmww.sh>

commit e383085
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Tue Feb 11 12:42:47 2020 +0000

    Merge #1261

    1261: More cleanup r=AlanGriffiths a=wmww

    Drop some dead code and turn some defines into an enum

    Co-authored-by: William Wold <wm@wmww.sh>

commit 683e0b8
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Mon Feb 10 11:01:12 2020 +0000

    Merge #1253

    1253: Politely ask XWayland clients to close r=AlanGriffiths a=wmww

    Fixes #1171

    Co-authored-by: William Wold <wm@wmww.sh>

commit 7c50dee
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Sat Feb 8 02:17:32 2020 +0000

    Merge #1256

    1256: Move debugging methods from wm to connection class r=AlanGriffiths a=wmww

    Makes it more convenient to surface useful debugging messages from the surface class

    Co-authored-by: William Wold <wm@wmww.sh>

commit ae76246
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Feb 7 16:13:36 2020 +0000

    Merge #1255

    1255: Drop unused atoms r=AlanGriffiths a=wmww

    These are atoms we're not using and won't need in the immediate future. We can always add them back as we need them.

    Co-authored-by: William Wold <wm@wmww.sh>

commit 67b47ad
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Feb 7 11:48:42 2020 +0000

    Merge #1252

    1252: X11 not experimental r=wmww a=AlanGriffiths

    X11 is no longer "experimental".

    A follow-up will provide a way to write to supply an FD to receive the display. (Like Xwayland's -displayfd.)

    Maybe we should provide a way to select the socket from the command-line, but that's less urgent.

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 6699a7f
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Wed Feb 5 20:57:53 2020 +0000

    Merge #1248

    1248: XWayland: popups! r=AlanGriffiths a=wmww

    Improve property reading system and place popups correctly. Popups tested with PCManFM (GTK2), gedit (GTK3) and Kate (Qt, see known issues). XTerm and XEyes also tested.

    Known issues:
    * Tooltips are only sometimes placed correctly on all toolkits
    * Specific Kate menus aren't place correctly

    Co-authored-by: William Wold <wm@wmww.sh>

commit a3e42fe
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Tue Feb 4 16:46:52 2020 +0000

    Merge #1245

    1245: XWayland: more refactoring r=AlanGriffiths a=wmww

    In addition to general cleanup, this changes the flow of configure requests to go though the Mir window manager, so they should no longer be ignored.

    Co-authored-by: William Wold <wm@wmww.sh>

commit fd5ecd2
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Tue Feb 4 11:26:43 2020 +0000

    Merge #1244

    1244: XWayland: debug messages and data length bug r=AlanGriffiths a=wmww

    Improves some debugging and error messages, and fixes a bug related to data buffer length. I was assuming `xcb_get_property_value_length()` was in elements, when it is actually in bytes. This bug was exposed as soon as I tried to read a 32-bit window property.

    Co-authored-by: William Wold <wm@wmww.sh>

commit 95cc3ed
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Mon Feb 3 09:52:37 2020 +0000

    Merge #1237

    1237: XCBConnection helpers r=AlanGriffiths a=wmww

    Adds helper methods to `XCBConnection` for getting and setting window properties.

    The new property setters are wrappers around the XCB calls that also catch various type and format issues at compile time.

    The getters request a property and return a function. When called, the function waits for the property and processes it. This way a number of properties can be queued up, then all read at once (which is more efficient than requiring a round-trip for each one). The old code *was* doing this, but the way it worked was error-prone and required the property request and property processing logic to be split up.

    Co-authored-by: William Wold <wm@wmww.sh>

commit da9a32b
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Mon Feb 3 07:00:44 2020 +0000

    Merge #1240

    1240: Fix GTest deprecation r=RAOF a=RAOF

    GTest conveniently renamed `INSTANTIATE_TEST_CASE_P` to `INSTANTATE_TEST_SUITE_P` and deprecated the old name. This breaks the build on Focal.

    Switch to the new name, providing the old name on older GTests via a compatibility `#define`.

    Co-authored-by: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>

commit 1f7a819
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Jan 31 16:48:59 2020 +0000

    Merge #1243

    1243: Drop broken entry in libmiral3.symbols r=wmww a=AlanGriffiths

    Drop broken entry in libmiral3.symbols. (Fixes: #1242)

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 154e1a5
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Jan 31 14:15:53 2020 +0000

    Merge #1239

    1239: [miral] Add ExternalClientLauncher::launch_using_x11() r=wmww a=AlanGriffiths

    Add ExternalClientLauncher::launch_using_x11()

    1. A new API for shells to launch apps using X11
    2. miral-shell shortcut Ctrl-Alt-X launches xterm

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 92a38ac
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Jan 31 11:05:40 2020 +0000

    Merge #1238

    1238: XWayland: fix double free of XCB connection r=AlanGriffiths a=wmww

    Fixes #1235. Looks like it was just an oversight when moving ownership of the `xcb_connection_t` into `XCBConnection`.

    Co-authored-by: William Wold <wm@wmww.sh>

commit 103116e
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Thu Jan 30 14:37:26 2020 +0000

    Merge #1234

    1234: Repurpose XCBAtoms into XCBConnection r=AlanGriffiths,RAOF a=wmww

    The new `XCBConnection` class holds atoms as the `XCBAtoms` class used to. It also now manages the lifetime and gives access to the `xcb_connection_t`. It is passed to each surface, which reduces dependence of the surfaces on the window manager. In the future, XCB helper methods such as setting properties on windows could be implemented on the `XCBConnection`.

    Co-authored-by: William Wold <wm@wmww.sh>

commit abec10d
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Wed Jan 29 09:30:28 2020 +0000

    Merge #1226

    1226: XWayland: reduce tight coupling between surface components r=AlanGriffiths a=wmww

    Adds two new interfaces (`XWaylandSurfaceRoleSurface` and `XWaylandSurfaceObserverSurface`) which are used by their respective components to talk to the XWayland surface. There's pleanty more work to do in this area, but this is a start.

    Co-authored-by: William Wold <wm@wmww.sh>

commit 05f818c
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Tue Jan 28 16:17:07 2020 +0000

    Merge #1229

    1229: Correct logic to locate gmock when gtest has package configuration r=wmww a=AlanGriffiths

    Correct logic to locate gmock when gtest has package configuration. (Fixes: #1228)

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 063a537
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Jan 24 14:05:57 2020 +0000

    Merge #1219 #1220

    1219: Only use `--disable-factory` with gnome-terminal when launched from the script. r=wmww a=AlanGriffiths

    Only consider using `--disable-factory` with gnome-terminal when launched from the script.

    This workaround is broken and not needed with miral-shell.

    1220: Exec errors after forking need to be fatal r=RAOF a=AlanGriffiths

    Exec errors after forking need to be fatal. (Fixes: #1218)

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 6b3676c
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Mon Jan 27 15:48:42 2020 +0000

    Merge #1225

    1225: [miral-app] Add `xdg-terminal` to the list of possible terminal commands r=wmww a=AlanGriffiths

    Add `xdg-terminal` to the list of possible terminal commands.

    It isn't earlier in the list as it isn't clear that it "does the right thing" for a specific user any more than `x-terminal-emulator` does. But it does exist on a different range of systems.

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 38ab737
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Mon Jan 27 14:41:43 2020 +0000

    Merge #1223

    1223: XWayland: use new role and surface observer r=AlanGriffiths a=wmww

    Previously there was a class, `XWaylandWMShellSurface`, which used the normal Wayland surface role and observer. These classes are highly specific to normal Wayland protocols, and less useful for XWayland.

    This PR introduces and uses two new classes: `XWaylandSurfaceRole` and `XWaylandSurfaceObserver`. `XWaylandWMSurface` is now responsible for managing instances of these classes, as well as handling the `scene::Surface`. The new system is (to the best of my knowledge) threadsafe and more efficient than the old system (on account of not having to run many things on the Wayland thread unnecessarily).

    Co-authored-by: William Wold <wm@wmww.sh>

commit 2b3681f
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Mon Jan 27 13:32:35 2020 +0000

    Merge #1224

    1224: Correction: mirplatform ABI unchanged at 17 r=wmww a=AlanGriffiths

    Correction: mirplatform ABI unchanged at 17

    Copy & pasted in error from 1.6.0

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 3be82c8
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Jan 24 10:12:16 2020 +0000

    Merge #1215

    1215: Split WaylandInputDispatcher out from WaylandSurfaceObserver r=AlanGriffiths a=wmww

    Splits input event dispatching out from the rest of the Wayland surface observer. This will allow more easily writing an `XWaylandSurfaceObserver`.

    Co-authored-by: William Wold <wm@wmww.sh>

commit e9b78c6
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Jan 24 08:46:48 2020 +0000

    Merge #1211

    1211: XWayland: manage window state correctly r=AlanGriffiths a=wmww

    Fixes #1210. Also alerts windows to their current state (for example, Gedit draws slightly differently when it knows it's maximized).

    Co-authored-by: William Wold <wm@wmww.sh>

commit 0034a23
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Thu Jan 23 10:14:38 2020 +0000

    Merge #1212

    1212: XWaylandWM: make threadsafe r=AlanGriffiths a=wmww

    Introduces and uses a `mutex` and inlines `create()` and `destroy()` into the constructor and destructor (they were only being called from there anyway).

    Co-authored-by: William Wold <wm@wmww.sh>

commit 75e99b2
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Tue Jan 21 15:10:29 2020 +0000

    Merge #1207

    1207: More minor XWayland improvements r=AlanGriffiths a=wmww

    Notably moves processing of a single event into its own function and catches exceptions while processing X11 events. Wrote code last Thursday, but required PRs hadn't landed yet

    Co-authored-by: William Wold <wm@wmww.sh>

commit 8e56313
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Tue Jan 21 13:18:53 2020 +0000

    Merge #1208

    1208: XWaylandWM::get_wm_surface() r=wmww a=wmww

    More code left over from Thursday. Adds a new `XWaylandWM::get_wm_surface()` method. This makes converting from XCB windows to wm surfaces more convenient and publicly accessible (the latter will be important when shell surfaces want to look up their parent windows). This also fixes the issue of accidentally creating null shell surfaces in the surfaces map via careless usage of the '[]` map operator.

    Co-authored-by: William Wold <wm@wmww.sh>

commit 6d9b832
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Mon Jan 20 09:16:42 2020 +0000

    Merge #1205

    1205: Better execl arguments when executing Xwayland r=RAOF a=AlanGriffiths

    Better execl arguments when executing Xwayland.

    Fixes the results from ps etc.

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>

commit 24b814f
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Jan 17 12:23:20 2020 +0000

    Merge #1203

    1203: XWayland: XCBAtoms class r=AlanGriffiths a=wmww

    Move atom management into its own class, and resolve atom cookies lazily when required.

    Stacked on #1200

    Co-authored-by: William Wold <wm@wmww.sh>
    (cherry picked from commit 32a6fc5)

commit 702fdee
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Fri Jan 17 07:10:53 2020 +0000

    Merge #1200

    1200: XWayland: replace C-style code with safer C++ alternatives r=RAOF a=wmww

    Mostly replaces C arrays with vectors and adds const. Should improve readability and reduce future errors.

    Co-authored-by: William Wold <wm@wmww.sh>
    (cherry picked from commit ce7c686)

commit a8002a8
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Thu Jan 16 17:07:22 2020 +0000

    Merge #1196

    1196: Simplify miral-app script and make terminal logic more robust r=wmww a=AlanGriffiths

    Simplify miral-app script and make terminal logic more robust.

    1. Adds a --shell-terminal-emulator option to miral-shell
    2. Uses that (and Ctrl-Alt-T) instead of a separate "launcher" process in miral-app
    3. Renames the miral-app "-launcher" option "-terminal"
    4. Tries to detect a usable default terminal on the system

    Co-authored-by: Alan Griffiths <alan@octopull.co.uk>
    (cherry picked from commit c057d69)

commit 24e741c
Author: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Date:   Thu Jan 16 15:01:22 2020 +0000

    Merge #1198

    1198: XWayland: improve verbose logging r=AlanGriffiths a=wmww

    Improvements to the verbose logs generated by the XWayland frontend. Probably not interesting to anyone but me, but merging will make maintaining my branches simpler.

    Co-authored-by: William Wold <wm@wmww.sh>
    (cherry picked from commit ed1bc7b)
Merge remote-tracking branch 'origin/release/1.7'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Racy closing of windows kills Xwayland
2 participants