#define FFADE_STAYOUT____0x0004____// ignores the duration, stays faded out until new ScreenFade message received
Ну вот жежь. Тут чистым английским написано, что фейд игнорит длительность и остаётся на экране до следующего фейда. Вроде как он должен постепенно угаснуть, но у тебя что-то не так работает. Можешь сделать фейд с маленькой длительностью без этого флага, он будет обновляться каждый кадр при включенном фонаре, а как только выключишь - исчезнет. А можешь с сервера отправлять мессагу фейда с большой длительностью - одну для включения, а другую для выключения.