Check if size changed before hiding a surface
Commit 68188fc9 introduces a workaround for clients that try to change the size of a popup after it is created, but inadvertently introduces an infinite loop of surface creation when the popup enters two or more wl_outputs with different scales on creation.
This commit checks if the size actually changed before applying the workaround and avoids the loop.
Unfortunately for Firefox, even if this bit doesn't infinite loop, a single loop is sufficient to break its use case since the original surface is destroyed. It will need to wait until the popup is no longer withdrawn before requesting a callback and creating a subsurface if it wants to work reliably.