Module: wine Branch: master Commit: c3842bc03c92a37fbb237df2f0666977ff99c216 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c3842bc03c92a37fbb237df2f0...
Author: Jörg Höhle hoehle@users.sourceforge.net Date: Sun Sep 16 00:50:15 2012 +0200
mciseq: Correct MCI_SEEK return codes.
---
dlls/mciseq/mcimidi.c | 40 ++++++++++++++++++++-------------------- 1 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/dlls/mciseq/mcimidi.c b/dlls/mciseq/mcimidi.c index 3b544c3..abea412 100644 --- a/dlls/mciseq/mcimidi.c +++ b/dlls/mciseq/mcimidi.c @@ -1541,32 +1541,32 @@ static DWORD MIDI_mciInfo(WINE_MCIMIDI* wmm, DWORD dwFlags, LPMCI_INFO_PARMSW lp */ static DWORD MIDI_mciSeek(WINE_MCIMIDI* wmm, DWORD dwFlags, LPMCI_SEEK_PARMS lpParms) { - DWORD ret = 0; + DWORD position;
TRACE("(%d, %08X, %p);\n", wmm->wDevID, dwFlags, lpParms);
- if (lpParms == NULL) { - ret = MCIERR_NULL_PARAMETER_BLOCK; - } else { - MIDI_mciStop(wmm, MCI_WAIT, 0); - - if (dwFlags & MCI_SEEK_TO_START) { - wmm->dwPositionMS = 0; - } else if (dwFlags & MCI_SEEK_TO_END) { - wmm->dwPositionMS = 0xFFFFFFFF; /* FIXME */ - } else if (dwFlags & MCI_TO) { - wmm->dwPositionMS = MIDI_ConvertTimeFormatToMS(wmm, lpParms->dwTo); - } else { - WARN("dwFlag doesn't tell where to seek to...\n"); - return MCIERR_MISSING_PARAMETER; - } + if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
- TRACE("Seeking to position=%u ms\n", wmm->dwPositionMS); + position = dwFlags & (MCI_SEEK_TO_START|MCI_SEEK_TO_END|MCI_TO); + if (!position) return MCIERR_MISSING_PARAMETER; + if (position&(position-1)) return MCIERR_FLAGS_NOT_COMPATIBLE;
- if (dwFlags & MCI_NOTIFY) - MIDI_mciNotify(lpParms->dwCallback, wmm, MCI_NOTIFY_SUCCESSFUL); + MIDI_mciStop(wmm, MCI_WAIT, 0); + + if (dwFlags & MCI_TO) { /* FIXME: compare with length */ + wmm->dwPositionMS = MIDI_ConvertTimeFormatToMS(wmm, lpParms->dwTo); + } else if (dwFlags & MCI_SEEK_TO_START) { + wmm->dwPositionMS = 0; + } else { + wmm->dwPositionMS = 0xFFFFFFFF; /* FIXME */ } - return ret; + + TRACE("Seeking to position=%u ms\n", wmm->dwPositionMS); + + if (dwFlags & MCI_NOTIFY) + MIDI_mciNotify(lpParms->dwCallback, wmm, MCI_NOTIFY_SUCCESSFUL); + + return 0; }
/*======================================================================*