rem: || PulsedInputState.key[KEY_MENU_SPECIAL])
add: || PulsedInputState.key[KEY_MENU_SPECIAL] || (GLOBAL (CurrentActivity) & CHECK_ABORT))
context: TFB_DoVideoInput (PVOID pIS){	VIDEO_INPUT_STATE* pVIS = (VIDEO_INPUT_STATE*) pIS;	TFB_VideoClip* vid = (TFB_VideoClip*) pVIS->CurVideo;	if (!pVIS->CurVideo || !TFB_VideoPlaying (pVIS->CurVideo))		return FALSE;	if (PulsedInputState.key[KEY_MENU_SELECT]			|| PulsedInputState.key[KEY_MENU_CANCEL]			|| PulsedInputState.key[KEY_MENU_SPECIAL])	{	// abort movie		TFB_StopVideo (pVIS->CurVideo);		return FALSE;	}	else if (PulsedInputState.key[KEY_MENU_LEFT] || PulsedInputState.key[KEY_MENU_RIGHT])	{		if (vid->decoder->audio_synced)		{			float newpos;						LockMutex (vid->guard);			newpos = vid->decoder->pos;			UnlockMutex (vid->guard);			if (PulsedInputState.key[KEY_MENU_LEFT])				newpos -= 2;			else if (PulsedInputState.key[KEY_MENU_RIGHT])				newpos += 1;			if (newpos < 0)				newpos = 0;			LockMutex (soundSource[MUSIC_SOURCE].stream_mutex);			SeekStream (MUSIC_SOURCE, (uint32) (newpos * 1000));			UnlockMutex (soundSource[MUSIC_SOURCE].stream_mutex);			TaskSwitch ();		}		// non a/s decoder seeking is not supported yet	}	return TRUE;}