does sync surface in getOutput, add mutext protection for getoutput