redox-wayland-compositor/docs
Votre Nom a8898960f1 🎉 Phase 7.8 — resize interactif xdg_toplevel + durcissements
Resize complet implémenté (compute selon edges + configure cycle)
+ durcissements sécu Move/Resize.

Frontend additions :
- Helper compute_resize_geom(edges, start_x/y/w/h, dx, dy) qui
  interprète le bitmask xdg_toplevel::ResizeEdge :
  Top(1)/Bottom(2)/Left(4)/Right(8). Coins = combinaisons.
  Clamp w/h à MIN_RESIZE_DIM=32.
- Handler xdg_toplevel.Resize complet : valide serial!=0,
  validation soft du serial vs last_button_serial (log warning,
  accept), refuse si drag déjà actif, check client_id (caller ==
  owner de la surface — sécu défense en profondeur). Capture
  start_geom (x,y,w,h) + start_cursor, stocke InteractiveDrag::
  Resize(edges).
- apply_interactive_drag(Resize) : compute new geom, modifie
  registry x/y, envoie xdg_toplevel.configure(w, h, [Resizing]) +
  xdg_surface.configure(serial). Met à jour
  XdgSurfaceData.last_serial = serial pour que l'ack du client
  soit accepté (sinon refusé par garde 7.5).
- Move handler : check client_id ajouté en mode défense en
  profondeur (un client ne peut pas drag une surface d'un autre).

Nouveau crate : redox-wl-test-client-resize (~285 lignes)
- Bind wl_seat
- 1 fenêtre 320x200 cyan + bordure noire
- À T+8s : toplevel.resize(seat, 1, BottomRight)
- Écoute xdg_toplevel.Configure : à chaque new size, ack +
  nouveau shm pool + nouveau buffer + attach + commit
- Vec<WlShmPool>/Vec<WlBuffer> pour ne pas drop les anciens
  pendant que le serveur peut encore les utiliser

Pièges trouvés :
- last_serial doit être mis à jour à chaque configure envoyé
  pendant le resize, sinon l'ack du client est refusé par le
  garde 7.5 (serial > last_sent → ignoring).
- Le client peut ignorer la taille initiale suggérée par le
  configure du compositor (legal selon spec). Le compositor
  compose à la taille du buffer attaché.
- À chaque resize, garder les anciens pool+buffer en mémoire
  pour ne pas crasher le serveur qui mmap dessus.

Validation runtime : 3 captures à 3 tailles distinctes (320x200
initial, ~520x300 agrandi, ~70x25 rétréci) confirment le pipeline
end-to-end. Logs symétriques côté client et compositor.

Bilan phase 7 (1-8) :
- 7.1 xdg-shell, 7.2 wl_seat, 7.3 cursor, 7.4 focus/raise,
  7.5 robustesse, 7.6 multi-clients, 7.7 move, 7.8 resize
- Compositor 7.x désormais utilisable pour un toolkit Wayland
  basique. Prochain jalon : port COSMIC (phase 13 plan-directeur,
  réordonnée avant GPU).

Doc complète : docs/phase7-8-resize.md

Leyoda 2026 – GPLv3
2026-05-13 19:47:53 +02:00
..
existing-redox-gui.md Initial commit: phases 1-3 du portage Wayland Rust pour Redox OS 2026-05-08 17:41:55 +02:00
phase4-display-backend.md 🎉 Phase 4 vraie validée visuellement : pixels custom plein écran 2026-05-09 10:46:20 +02:00
phase4-victory-1280x800.png 🎉 Phase 4 vraie validée visuellement : pixels custom plein écran 2026-05-09 10:46:20 +02:00
phase5-blue-screen-with-input.png 🎉 Phase 5 — input backend Redox validé runtime 2026-05-09 11:22:54 +02:00
phase5-input-backend.md 🎉 Phase 5 — input backend Redox validé runtime 2026-05-09 11:22:54 +02:00
phase6-3-blue-top.png 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase6-3-default-z.png 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase6-3-green-top.png 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase6-3-red-top.png 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase6-4-wayland-client-surface.png 🎉🎉🎉 Phase 6.4 — Wayland complet : un client externe affiche ses pixels 2026-05-09 13:30:05 +02:00
phase6-4-wayland-frontend.md 🎉🎉🎉 Phase 6.4 — Wayland complet : un client externe affiche ses pixels 2026-05-09 13:30:05 +02:00
phase6-compositor-core.md 🎉 Phase 6.3 — display + input + compositor-core intégrés runtime 2026-05-09 12:20:04 +02:00
phase7-1-xdg-shell.md 🎉 Phase 7.1 — xdg-shell minimal validé runtime 2026-05-09 14:34:45 +02:00
phase7-1-xdg-toplevel.png 🎉 Phase 7.1 — xdg-shell minimal validé runtime 2026-05-09 14:34:45 +02:00
phase7-2-input-routing.png 🎉 Phase 7.2 — wl_seat + wl_keyboard + wl_pointer routing input 2026-05-09 15:05:03 +02:00
phase7-3-cursor-over-window-200x150.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor-over-window-250x200.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor-pos-50x750.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor-pos-900x600.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor-pos-center.png 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-3-cursor.md 🎉 Phase 7.3 — curseur software validé runtime 2026-05-13 09:06:56 +02:00
phase7-4-1-initial-B-top.png 🎉 Phase 7.4 — focus + raise on click validés runtime 2026-05-13 10:21:05 +02:00
phase7-4-2-after-click-A-raised.png 🎉 Phase 7.4 — focus + raise on click validés runtime 2026-05-13 10:21:05 +02:00
phase7-4-3-after-click-B-raised.png 🎉 Phase 7.4 — focus + raise on click validés runtime 2026-05-13 10:21:05 +02:00
phase7-4-focus-raise.md 🎉 Phase 7.4 — focus + raise on click validés runtime 2026-05-13 10:21:05 +02:00
phase7-5-after-fuzz.png 🎉 Phase 7.5 — robustesse paquet A validée runtime 2026-05-13 11:57:21 +02:00
phase7-5-robustness.md 🎉 Phase 7.5 — robustesse paquet A validée runtime 2026-05-13 11:57:21 +02:00
phase7-6-cleanup-no-ghost.png 🎉 Phase 7.6 — multi-clients paquet B validé runtime 2026-05-13 18:51:33 +02:00
phase7-6-multi-clients.md 🎉 Phase 7.6 — multi-clients paquet B validé runtime 2026-05-13 18:51:33 +02:00
phase7-6-two-clients.png 🎉 Phase 7.6 — multi-clients paquet B validé runtime 2026-05-13 18:51:33 +02:00
phase7-7-drag-pos1.png 🎉 Phase 7.7 — move interactif xdg_toplevel validé runtime 2026-05-13 19:22:04 +02:00
phase7-7-drag-pos2.png 🎉 Phase 7.7 — move interactif xdg_toplevel validé runtime 2026-05-13 19:22:04 +02:00
phase7-7-move-resize.md 🎉 Phase 7.7 — move interactif xdg_toplevel validé runtime 2026-05-13 19:22:04 +02:00
phase7-7-post-release.png 🎉 Phase 7.7 — move interactif xdg_toplevel validé runtime 2026-05-13 19:22:04 +02:00
phase7-8-1-before-resize.png 🎉 Phase 7.8 — resize interactif xdg_toplevel + durcissements 2026-05-13 19:47:53 +02:00
phase7-8-2-resize-grown.png 🎉 Phase 7.8 — resize interactif xdg_toplevel + durcissements 2026-05-13 19:47:53 +02:00
phase7-8-3-resize-shrunk.png 🎉 Phase 7.8 — resize interactif xdg_toplevel + durcissements 2026-05-13 19:47:53 +02:00
phase7-8-resize.md 🎉 Phase 7.8 — resize interactif xdg_toplevel + durcissements 2026-05-13 19:47:53 +02:00
redox-wayland-primitives.md Initial commit: phases 1-3 du portage Wayland Rust pour Redox OS 2026-05-08 17:41:55 +02:00