The problem then, essentially is that there is no subsequent compositor_acquire() call for the client callback to originate from. Because no new frames are scheduled while the (only) client is already frozen waiting for a buffer. I can confirm that it un-freezes and comes back to life if you force a new frame (compositor_acquire) in the demo-shell: resize/move/opacity the surface.
The problem then, essentially is that there is no subsequent compositor_ acquire( ) call for the client callback to originate from. Because no new frames are scheduled while the (only) client is already frozen waiting for a buffer. I can confirm that it un-freezes and comes back to life if you force a new frame (compositor_ acquire) in the demo-shell: resize/move/opacity the surface.
I'll need to review this in detail again...