Use analytic springs and instrument resize barriers

Share a stable damped oscillator solver across scalar and rectangle animations while preserving retarget and explicit no-crossing presentation policies. Add deterministic traces, scrolling and zoom continuity coverage, and pause-aware advancement.

Measure resize barrier and handoff timing behind resize-metrics, expose the feature through the release installer, and wait for the intended backend in isolated portal tests.
This commit is contained in:
Samuel Onoja committed 2026-10-02 00:49:52 +01:00
1 parent 42f022fde5
commit 28e03a2624
18 files changed
+1502 -84

No files matched your search

+17
View File
@@ -101,6 +101,23 @@ class PortalTest(unittest.TestCase):
connection = Gio.DBusConnection.new_for_address_sync(env["DBUS_SESSION_BUS_ADDRESS"],
Gio.DBusConnectionFlags.AUTHENTICATION_CLIENT | Gio.DBusConnectionFlags.MESSAGE_BUS_CONNECTION, None, None)
backend = launch("backend", [str(binary)])
# The frontend can D-Bus-activate an installed backend if it
# starts before this test's binary owns its service name.
def backend_ready():
bus_name = "org.freedesktop.DBus"
impl_name = "org.freedesktop.impl.portal.desktop.ferese"
owner = connection.call_sync(bus_name, "/org/freedesktop/DBus", bus_name,
"NameHasOwner", GLib.Variant("(s)", (impl_name,)), GLib.VariantType("(b)"),
Gio.DBusCallFlags.NONE, 1000, None).unpack()[0]
if not owner:
return False
pid = connection.call_sync(bus_name, "/org/freedesktop/DBus", bus_name,
"GetConnectionUnixProcessID", GLib.Variant("(s)", (impl_name,)), GLib.VariantType("(u)"),
Gio.DBusCallFlags.NONE, 1000, None).unpack()[0]
return pid == backend.pid
until(backend_ready)
frontend = launch("frontend", [os.environ.get("FERESE_TEST_PORTAL_FRONTEND", "/usr/libexec/xdg-desktop-portal")])
name, path, iface = "org.freedesktop.portal.Desktop", "/org/freedesktop/portal/desktop", "org.freedesktop.portal.ScreenCast"
responses = {}