again.. you are missing to ALWAYS call SetSubtitleVisibleInternal. Now it's only called on a successful open. Can you please tell me what it is i'm missing to explain?

The call to SetSubtitleVisibleInternal should be after the if(!valid) check with parameters depending on what we decided above.