update surfaces only if they are visible