Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • W wayland-protocols
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 107
    • Issues 107
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 55
    • Merge requests 55
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar

Due to an influx of spam, we have had to impose restrictions on new accounts. Please see this wiki page for instructions on how to get full permissions. Sorry for the inconvenience.

  • waylandwayland
  • wayland-protocols
  • Issues
  • #21
Closed
Open
Issue created Jun 09, 2020 by Daniel Stone@danielsOwner

Should xdg_surface.ack_configure allow excessive acks?

xdg_surface.ack_configure is mostly permissively worded, with no restrictions. It describes how you use ack_configure to respond to a configure event, passing the serial in, and mentions that you may send multiple back-to-back requests, or only ack the most recent one.

I noticed (whilst hacking up a really dumb test client to add xdg-shell support) that if you do this:

struct surf {
    uint32_t last_configure;
};

xdg_surf_listener.configure = (struct xdg_surface *surface, uint32_t serial) {
    surf->last_configure = serial;
}

while (true) {
    wl_display_dispatch();
    glDrawArrays();
    xdg_surface_ack_configure(xdg_surface, surf->last_configure);
    eglSwapBuffers();
}

then both Weston and wlroots will reject the second ack_configure, as they no longer record the serial as needing to be acked. Mutter, however, accepts repeated ack_configure with the same value, as it still considers the serial 'valid'.

I'm not sure what KDE or QtCompositor do, since I don't have easy access to them, neither Exosphere.

I think I would be in favour of explicitly making it erroneous to accept multiple ack_configure values (i.e. codifying the Weston/wlroots behaviour), but would like to scout opinions on this first.

Relatedly, it would make it easier for clients if servers also guaranteed that a serial of 0 was invalid and would never be sent, since it means that they could just keep a uint32_t serial to determine if they needed to ack, rather than uint32_t serial + bool is_serial_valid.

cc @jadahl @emersion @romangg @eskilblomfeldt @afrantzis

Edited Jun 09, 2020 by Daniel Stone
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking