Taseditor: straighten out pause_frame logic; fixed AdjustLag
This commit is contained in:
parent
1b5c7797c4
commit
5cf9eebd58
|
@ -1,5 +1,6 @@
|
|||
|
||||
|
||||
25-Jul-2012 - AnS - Taseditor: auto-starting Note editing when creating Marker by double-click
|
||||
19-Jul-2012 - AnS - Taseditor: Lua registermanual allows changing the "Run function" button caption; Markers are always restored when deploying Bookmarks
|
||||
01-Jul-2012 - AnS - new hotkey "Run Manual Lua function"
|
||||
24-Jun-2012 - AnS - Taseditor: drawing selected_slot border in Branches Tree
|
||||
|
|
|
@ -98,20 +98,26 @@ void GREENZONE::CollectCurrentState()
|
|||
lag_history.erase(lag_history.begin() + (currFrameCounter - 1));
|
||||
editor.AdjustUp(currFrameCounter - 1);
|
||||
// since AdjustUp didn't restore Playback cursor, we must rewind here
|
||||
bool emu_was_paused = (FCEUI_EmulationPaused() != 0);
|
||||
int saved_pause_frame = playback.GetPauseFrame();
|
||||
playback.jump(currFrameCounter - 1); // rewind
|
||||
if (saved_pause_frame >= 0)
|
||||
playback.SeekingStart(saved_pause_frame);
|
||||
if (emu_was_paused)
|
||||
playback.PauseEmulation();
|
||||
} else if (!old_lagFlag && lagFlag)
|
||||
{
|
||||
// there's new lag on previous frame - shift Input down
|
||||
lag_history.insert(lag_history.begin() + (currFrameCounter - 1), 1);
|
||||
editor.AdjustDown(currFrameCounter - 1);
|
||||
// since AdjustDown didn't restore Playback cursor, we must rewind here
|
||||
bool emu_was_paused = (FCEUI_EmulationPaused() != 0);
|
||||
int saved_pause_frame = playback.GetPauseFrame();
|
||||
playback.jump(currFrameCounter - 1); // rewind
|
||||
if (saved_pause_frame >= 0)
|
||||
playback.SeekingStart(saved_pause_frame);
|
||||
if (emu_was_paused)
|
||||
playback.PauseEmulation();
|
||||
}
|
||||
} else
|
||||
{
|
||||
|
@ -443,9 +449,9 @@ void GREENZONE::InvalidateAndCheck(int after)
|
|||
// either set Playback cursor to the end of Greenzone or run seeking to restore Playback cursor position
|
||||
if (currFrameCounter >= greenZoneCount)
|
||||
{
|
||||
if (playback.GetFixedPauseFrame())
|
||||
if (playback.GetPauseFrame() >= 0 && !FCEUI_EmulationPaused())
|
||||
{
|
||||
// continue seeking
|
||||
// emulator was running, so continue seeking
|
||||
playback.jump(playback.GetPauseFrame());
|
||||
} else
|
||||
{
|
||||
|
|
|
@ -1132,11 +1132,15 @@ void PIANO_ROLL::FinishDrag()
|
|||
if (row_under_mouse == marker_drag_framenum)
|
||||
{
|
||||
// it was just double-click and release
|
||||
// set focus to lower Note edit field
|
||||
// if Selection points at dragged Marker, set focus to lower Note edit field
|
||||
int dragged_marker_id = markers_manager.GetMarker(marker_drag_framenum);
|
||||
int selection_marker_id = markers_manager.GetMarkerUp(selection.GetCurrentSelectionBeginning());
|
||||
if (dragged_marker_id == selection_marker_id)
|
||||
{
|
||||
SetFocus(selection.hwndSelectionMarkerEdit);
|
||||
// select all text in case user wants to overwrite it
|
||||
SendMessage(selection.hwndSelectionMarkerEdit, EM_SETSEL, 0, -1);
|
||||
}
|
||||
} else if (markers_manager.GetMarker(row_under_mouse))
|
||||
{
|
||||
int dragged_marker_id = markers_manager.GetMarker(marker_drag_framenum);
|
||||
|
|
|
@ -73,7 +73,7 @@ void PLAYBACK::reset()
|
|||
shown_marker = 0;
|
||||
lastCursor = currFrameCounter;
|
||||
lost_position_frame = pause_frame = old_pauseframe = 0;
|
||||
lost_position_must_be_fixed = pause_frame_must_be_fixed = old_show_pauseframe = show_pauseframe = false;
|
||||
lost_position_is_stable = old_show_pauseframe = show_pauseframe = false;
|
||||
old_rewind_button_state = rewind_button_state = false;
|
||||
old_forward_button_state = forward_button_state = false;
|
||||
old_rewind_full_button_state = rewind_full_button_state = false;
|
||||
|
@ -228,12 +228,9 @@ void PLAYBACK::update()
|
|||
}
|
||||
|
||||
// This logic is very important for adequate "green arrow" and "Restore position"
|
||||
if (emu_paused)
|
||||
// when paused, pause_frame becomes unfixed
|
||||
pause_frame_must_be_fixed = false;
|
||||
else
|
||||
// when emulating, lost_position_frame becomes unfixed
|
||||
lost_position_must_be_fixed = false;
|
||||
if (!emu_paused)
|
||||
// when emulating, lost_position_frame becomes unstable
|
||||
lost_position_is_stable = false;
|
||||
}
|
||||
|
||||
void PLAYBACK::updateProgressbar()
|
||||
|
@ -330,7 +327,6 @@ void PLAYBACK::SeekingStart(int finish_frame)
|
|||
seeking_start_frame = currFrameCounter;
|
||||
pause_frame = finish_frame + 1;
|
||||
}
|
||||
pause_frame_must_be_fixed = true;
|
||||
if (taseditor_config.turbo_seek)
|
||||
turbo = true;
|
||||
UnpauseEmulation();
|
||||
|
@ -338,7 +334,6 @@ void PLAYBACK::SeekingStart(int finish_frame)
|
|||
void PLAYBACK::SeekingStop()
|
||||
{
|
||||
pause_frame = 0;
|
||||
pause_frame_must_be_fixed = false;
|
||||
turbo = false;
|
||||
PauseEmulation();
|
||||
SetProgressbar(1, 1);
|
||||
|
@ -482,12 +477,12 @@ bool PLAYBACK::JumpToFrame(int index)
|
|||
|
||||
void PLAYBACK::SetLostPosition(int frame)
|
||||
{
|
||||
if ((lost_position_frame - 1 < frame) || (lost_position_frame - 1 > frame && !lost_position_must_be_fixed))
|
||||
if ((lost_position_frame - 1 < frame) || (lost_position_frame - 1 > frame && !lost_position_is_stable))
|
||||
{
|
||||
if (lost_position_frame)
|
||||
piano_roll.RedrawRow(lost_position_frame - 1);
|
||||
lost_position_frame = frame + 1;
|
||||
lost_position_must_be_fixed = true;
|
||||
lost_position_is_stable = true;
|
||||
}
|
||||
}
|
||||
int PLAYBACK::GetLostPosition()
|
||||
|
@ -506,13 +501,6 @@ int PLAYBACK::GetFlashingPauseFrame()
|
|||
else
|
||||
return 0;
|
||||
}
|
||||
int PLAYBACK::GetFixedPauseFrame()
|
||||
{
|
||||
if (pause_frame_must_be_fixed)
|
||||
return pause_frame;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
void PLAYBACK::SetProgressbar(int a, int b)
|
||||
{
|
||||
|
|
|
@ -44,7 +44,6 @@ public:
|
|||
|
||||
int GetPauseFrame();
|
||||
int GetFlashingPauseFrame();
|
||||
int GetFixedPauseFrame();
|
||||
|
||||
void SetProgressbar(int a, int b);
|
||||
void CancelSeeking();
|
||||
|
@ -59,9 +58,8 @@ private:
|
|||
bool JumpToFrame(int index);
|
||||
|
||||
int pause_frame;
|
||||
bool pause_frame_must_be_fixed; // for "Auto-restore last position"
|
||||
int lost_position_frame;
|
||||
bool lost_position_must_be_fixed; // for when Greenzone invalidates several times, but the end of current segment must remain the same
|
||||
bool lost_position_is_stable; // for when Greenzone invalidates several times, but the end of current segment must remain the same
|
||||
|
||||
bool autopause_at_the_end;
|
||||
bool old_emu_paused, emu_paused;
|
||||
|
|
Loading…
Reference in New Issue