{"object_kind":"push","event_name":"push","before":"54199d77c6dbecad373b5c6b2df7a2aa3af42045","after":"b41d117609ffa2dcb9c80adecdf0a84934e5b076","ref":"refs/heads/master","ref_protected":true,"checkout_sha":"b41d117609ffa2dcb9c80adecdf0a84934e5b076","message":null,"user_id":3060,"user_name":"Wim Taymans","user_username":"wtaymans","user_email":"","user_avatar":"https://secure.gravatar.com/avatar/1ca1bed246cb9b95b7ead6d6be96bb09f0c112953140c8bb38b41aedf4465270?s=80&d=identicon","project_id":4753,"project":{"id":4753,"name":"pipewire","description":"Multimedia processing graphs","web_url":"https://gitlab.freedesktop.org/pipewire/pipewire","avatar_url":"https://gitlab.freedesktop.org/uploads/-/system/project/avatar/4753/pipewire.png","git_ssh_url":"git@ssh.gitlab.freedesktop.org:pipewire/pipewire.git","git_http_url":"https://gitlab.freedesktop.org/pipewire/pipewire.git","namespace":"PipeWire","visibility_level":20,"path_with_namespace":"pipewire/pipewire","default_branch":"master","ci_config_path":"","homepage":"https://gitlab.freedesktop.org/pipewire/pipewire","url":"git@ssh.gitlab.freedesktop.org:pipewire/pipewire.git","ssh_url":"git@ssh.gitlab.freedesktop.org:pipewire/pipewire.git","http_url":"https://gitlab.freedesktop.org/pipewire/pipewire.git"},"commits":[{"id":"f22932580f1080264e3dbe45d50b241678f456d9","message":"impl-port: add port_suspend()\n\nMove the logic to suspend a port to the port implementation. No\nfunctional change with this.\n","title":"impl-port: add port_suspend()","timestamp":"2026-06-01T10:21:42+02:00","url":"https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/f22932580f1080264e3dbe45d50b241678f456d9","author":{"name":"Wim Taymans","email":"wtaymans@redhat.com"},"added":[],"modified":["src/pipewire/impl-node.c","src/pipewire/impl-port.c","src/pipewire/private.h"],"removed":[]},{"id":"b41d117609ffa2dcb9c80adecdf0a84934e5b076","message":"impl-port: make suspend go from INIT -> CONFIGURE\n\nBring the port to INIT before going to CONFIGURE when we do the suspend\nlogic.\n\nThis is to ensure that there always is a state change to emit the state\nchange notification. This was, the link can detect the suspend case and\ncancel any pending results.\n\nOne of the problem with suspend is that the state changes on the ports\nare done from different places; the port and link. This causes issues\nlike:\n\n1. do_negotiate calls pw_port_set_param(Format,..) with the negotiated\n format. This returns async and the link queues a complete_ready\n callback.\n2. The node is suspended, pw_impl_port_set_param(Format, NULL) is called\n to clear the port format. This bypasses the link.\n3. The reply from step 2 arrives and triggers complete_ready, this\n brings the port state to READY and the link state to ALLOCATING.\n4. The link continues allocating and sets buffers on the port. This then\n fails because the last format set was NULL.\n\nIdeally all port states should be managed in one place and the async\nport state changes should be kept in the port itself as well but this\nwill need some more work.\n\nFixes #3547\n","title":"impl-port: make suspend go from INIT -> CONFIGURE","timestamp":"2026-06-01T10:34:40+02:00","url":"https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/b41d117609ffa2dcb9c80adecdf0a84934e5b076","author":{"name":"Wim Taymans","email":"wtaymans@redhat.com"},"added":[],"modified":["src/pipewire/impl-link.c","src/pipewire/impl-port.c"],"removed":[]}],"total_commits_count":2,"push_options":{},"repository":{"name":"pipewire","url":"git@ssh.gitlab.freedesktop.org:pipewire/pipewire.git","description":"Multimedia processing graphs","homepage":"https://gitlab.freedesktop.org/pipewire/pipewire","git_http_url":"https://gitlab.freedesktop.org/pipewire/pipewire.git","git_ssh_url":"git@ssh.gitlab.freedesktop.org:pipewire/pipewire.git","visibility_level":20}}