This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch wl/browser-all
in repository enlightenment.

View the commit online.

commit b5bb5825e193c68b20b68ae1b6b18a5507d3836a
Author: Cedric BAIL <[email protected]>
AuthorDate: Wed Aug 12 15:16:07 2026 -0600

    tests - the unconfigured-buffer relaxation stands in for the missing commit
    
    It was written as "skip the error", which is a different thing from "pretend
    the commit happened", and the difference cost two tests.
    
    wlcs builds every test surface without the initial empty commit xdg-shell
    requires, so ~315 tests die at surface construction against a spec-correct
    compositor. That is why the relaxation exists and E is still not being changed
    to match. But swallowing the complaint is only half of what the omitted commit
    would have done.
    
    Say it as standing in for the commit and two things follow.
    
    It applies only to the shape the surface builder produces - role assigned, no
    initial commit. A bare xdg_surface that attaches with no role is not that
    shape and still gets its error, which is what XdgSurfaceStableTest.attaching_
    buffer_to_unconfigured_xdg_surface_is_an_error is there to check. The old form
    relaxed that one too, purely by not looking.
    
    And the configure the commit would have produced is now sent, at 0x0 - the
    initial configure's "you choose" - with need_xdg_configure cleared alongside
    it so the client's real commit does not send a second one. XdgSurfaceV6Test.
    gets_configure_event needs exactly this: wlcs's V6 helpers never commit at all
    (attach_buffer() is attach-only, neither constructor commits), so nothing was
    owed and nothing arrived. Its stable twin commits explicitly and passed either
    way.
    
    Neither can hide a defect in E. A client that follows the protocol takes none
    of this path, and the configure it gets on its own initial commit is the same
    one, from the same function - which is why the stable twin's behaviour is
    unchanged. Measured across the full suite with the sibling commit: no
    regressions.
    
    Co-Authored-By: Claude Opus 5 <[email protected]>
    Claude-Session: https://claude.ai/code/session_01FtoiXoSKUmZb6Aix6U3GZS
---
 src/bin/e_comp_wl.c      | 32 +++++++++++++++++++++++++++++---
 src/tests/wlcs/README.md | 22 ++++++++++++++++++++++
 2 files changed, 51 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index df3372d7e..3d0b9a7b1 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -2039,6 +2039,34 @@ _e_comp_wl_test_allow_unconfigured_buffer(void)
    if (allow < 0) allow = !!getenv("E_TEST_ALLOW_UNCONFIGURED_BUFFER");
    return allow;
 }
+
+/* Stand in for the initial commit wlcs never makes, rather than merely
+ * swallowing the complaint about its absence.
+ *
+ * Two things follow from saying it that way. The relaxation only applies to
+ * the shape the surface builder actually produces - role assigned, no initial
+ * commit - so a bare xdg_surface that attaches with no role still gets the
+ * error it has coming, which is what
+ * XdgSurfaceStableTest.attaching_buffer_to_unconfigured_xdg_surface_is_an_error
+ * is there to check. And having decided to pretend the commit happened, we
+ * owe the configure that commit would have produced: at 0x0, the initial
+ * configure's "you choose". need_xdg_configure is cleared with it, so the
+ * client's real commit does not then send a second one.
+ *
+ * Nothing here can mask a defect in E: a client that follows the protocol
+ * takes none of this path, and the configure it gets on its own initial
+ * commit is the same one, from the same function. */
+static Eina_Bool
+_e_comp_wl_test_stand_in_for_initial_commit(E_Client *ec)
+{
+   if (!_e_comp_wl_test_allow_unconfigured_buffer()) return EINA_FALSE;
+   if (!ec->comp_data->shell.surface) return EINA_FALSE;
+   if (!ec->comp_data->shell.configure_send) return EINA_FALSE;
+
+   ec->comp_data->need_xdg_configure = 0;
+   _e_comp_wl_configure_send(ec, 0, EINA_FALSE);
+   return EINA_TRUE;
+}
 #endif
 
 static void
@@ -2052,9 +2080,7 @@ _e_comp_wl_surface_cb_attach(struct wl_client *client, struct wl_resource *resou
    if (ec->comp_data->need_xdg_configure)
      {
 #ifdef E_TESTS
-        if (_e_comp_wl_test_allow_unconfigured_buffer())
-          ec->comp_data->need_xdg_configure = 0;
-        else
+        if (!_e_comp_wl_test_stand_in_for_initial_commit(ec))
 #endif
           {
              ec->comp_data->shell.buffer_attach_error(ec);
diff --git a/src/tests/wlcs/README.md b/src/tests/wlcs/README.md
index e7ea1243f..d8f1ef2b8 100644
--- a/src/tests/wlcs/README.md
+++ b/src/tests/wlcs/README.md
@@ -91,6 +91,28 @@ never reach what they were written to check. Measured: with the relaxation,
 times out on an interactive move that never happens — a real gap the strict
 path was hiding.
 
+What the relaxation does is stand in for the commit wlcs omits, rather than
+swallow the complaint about its absence. Two things follow from putting it
+that way.
+
+It applies only to the shape the surface builder actually produces — a role
+already assigned, no initial commit. A bare `xdg_surface` that attaches with
+no role is not that shape, and still gets the error it has coming, which is
+what `XdgSurfaceStableTest.attaching_buffer_to_unconfigured_xdg_surface_is_an_error`
+is there to check.
+
+And having decided to pretend the commit happened, it sends the configure that
+commit would have produced, at 0x0 — the initial configure's "you choose". It
+clears `need_xdg_configure` along with it so the client's real commit does not
+then send a second one. That is what `XdgSurfaceV6Test.gets_configure_event`
+needs: wlcs's V6 helpers never commit at all (`attach_buffer()` is attach-only
+and neither constructor commits), so without this no configure is owed and
+none arrives. Its stable twin commits explicitly and passes either way.
+
+Neither can mask a defect in E. A client that follows the protocol takes none
+of this path, and the configure it gets on its own initial commit is the same
+one, from the same function.
+
 The relaxation is compiled in only under `-Dtests=true` (`E_TESTS` in
 `config.h`), so a release build cannot reach that code path whatever the
 environment says — verified by checking `config.h` in a `-Dtests=false` build.

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to