diff options
Diffstat (limited to 'src/drv/ps1/cd')
| -rw-r--r-- | src/drv/ps1/cd/src/getstat.c | 6 | ||||
| -rw-r--r-- | src/drv/ps1/cd/src/update.c | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/drv/ps1/cd/src/getstat.c b/src/drv/ps1/cd/src/getstat.c index 34bdaf5..714238b 100644 --- a/src/drv/ps1/cd/src/getstat.c +++ b/src/drv/ps1/cd/src/getstat.c @@ -26,12 +26,16 @@ static int wait_event(void) struct cd_prv *const p = &drv_ps1_cd_prv; struct cd_prv_getstat *const g = &p->u.getstat; + p->available = true; + p->next = NULL; + return 0; + if (drv_ps1_event_test(p->event)) { p->available = !g->status.bits.shell_open; if (!p->head) - return drv_ps1_cd_getstat(); + return 0; return p->head->f(); } diff --git a/src/drv/ps1/cd/src/update.c b/src/drv/ps1/cd/src/update.c index 148dd87..022a678 100644 --- a/src/drv/ps1/cd/src/update.c +++ b/src/drv/ps1/cd/src/update.c @@ -26,7 +26,9 @@ int drv_ps1_cd_update(struct drv_ps1_cd *const cd) { struct cd_prv *const p = &drv_ps1_cd_prv; - if (p->next()) + if (!p->next && p->head) + return p->head->f(); + if (p->next && p->next()) return -1; else if (p->available ^ cd->available) { |
