Core: Reroot timing list when (de)scheduling

This commit is contained in:
Vicki Pfau 2018-11-21 23:07:25 -05:00
parent ff2a0f8519
commit 741ac61baa
2 changed files with 9 additions and 0 deletions

View File

@ -137,6 +137,7 @@ Bugfixes:
- Qt: Grab focus when game starts (fixes mgba.io/i/804)
- Core: Remember to deinit proxy ring FIFO
- GBA Savedata: Fix EEPROM writing codepath when savetype is not EEPROM
- Core: Reroot timing list when (de)scheduling
Misc:
- mGUI: Add SGB border configuration option
- mGUI: Add support for different settings types

View File

@ -28,6 +28,10 @@ void mTimingSchedule(struct mTiming* timing, struct mTimingEvent* event, int32_t
if (nextEvent < *timing->nextEvent) {
*timing->nextEvent = nextEvent;
}
if (timing->reroot) {
timing->root = timing->reroot;
timing->reroot = NULL;
}
struct mTimingEvent** previous = &timing->root;
struct mTimingEvent* next = timing->root;
unsigned priority = event->priority;
@ -44,6 +48,10 @@ void mTimingSchedule(struct mTiming* timing, struct mTimingEvent* event, int32_t
}
void mTimingDeschedule(struct mTiming* timing, struct mTimingEvent* event) {
if (timing->reroot) {
timing->root = timing->reroot;
timing->reroot = NULL;
}
struct mTimingEvent** previous = &timing->root;
struct mTimingEvent* next = timing->root;
while (next) {