Yes, it has to go through g_Mouse as the rest of the stuff goes through there.  You could set it up so that it's a specific event that g_Mouse knows how to handle.  Create XBMC_MOUSEWAKE (name it however you see fit), handle it in CMouseStat::HandleEvent, generating ACTION_MOUSE_WAKE.  Then handle ACTION_MOUSE_WAKE the same way ACTION_MOUSE_MOVE is handled in all cases except the windows that you don't want to respond to this action.

That way CApplication is kept clean, and the special casing is handled where we have the existing special-case code.