mirror of
https://github.com/reactos/reactos.git
synced 2024-12-30 19:14:31 +00:00
[MCIQTZ32] Sync with Wine Staging 2.2. CORE-12823
71fbaba mciqtz32: Implement MCI_DGV_PLAY_REPEAT. svn path=/trunk/; revision=73958
This commit is contained in:
parent
41875f2f17
commit
14d7d9764c
3 changed files with 33 additions and 13 deletions
|
@ -362,6 +362,18 @@ static DWORD CALLBACK MCIQTZ_notifyThread(LPVOID parm)
|
|||
}
|
||||
} while (hr == S_OK && event_code != EC_COMPLETE);
|
||||
if (hr == S_OK && event_code == EC_COMPLETE) {
|
||||
/* Repeat the music by seeking and running again */
|
||||
if (wma->mci_flags & MCI_DGV_PLAY_REPEAT) {
|
||||
TRACE("repeat media as requested\n");
|
||||
IMediaControl_Stop(wma->pmctrl);
|
||||
IMediaSeeking_SetPositions(wma->seek,
|
||||
&wma->seek_start,
|
||||
AM_SEEKING_AbsolutePositioning,
|
||||
&wma->seek_stop,
|
||||
AM_SEEKING_AbsolutePositioning);
|
||||
IMediaControl_Run(wma->pmctrl);
|
||||
continue;
|
||||
}
|
||||
old = InterlockedExchangePointer(&wma->callback, NULL);
|
||||
if (old)
|
||||
mciDriverNotify(old, wma->notify_devid, MCI_NOTIFY_SUCCESSFUL);
|
||||
|
@ -390,9 +402,8 @@ static DWORD MCIQTZ_mciPlay(UINT wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms
|
|||
{
|
||||
WINE_MCIQTZ* wma;
|
||||
HRESULT hr;
|
||||
REFERENCE_TIME time1 = 0, time2 = 0;
|
||||
GUID format;
|
||||
DWORD pos1;
|
||||
DWORD start_flags;
|
||||
|
||||
TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpParms);
|
||||
|
||||
|
@ -411,23 +422,29 @@ static DWORD MCIQTZ_mciPlay(UINT wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms
|
|||
mciDriverNotify(old, wma->notify_devid, MCI_NOTIFY_ABORTED);
|
||||
}
|
||||
|
||||
wma->mci_flags = dwFlags;
|
||||
IMediaSeeking_GetTimeFormat(wma->seek, &format);
|
||||
if (dwFlags & MCI_FROM) {
|
||||
if (IsEqualGUID(&format, &TIME_FORMAT_MEDIA_TIME))
|
||||
time1 = lpParms->dwFrom * 10000;
|
||||
wma->seek_start = lpParms->dwFrom * 10000;
|
||||
else
|
||||
time1 = lpParms->dwFrom;
|
||||
pos1 = AM_SEEKING_AbsolutePositioning;
|
||||
} else
|
||||
pos1 = AM_SEEKING_NoPositioning;
|
||||
wma->seek_start = lpParms->dwFrom;
|
||||
start_flags = AM_SEEKING_AbsolutePositioning;
|
||||
} else {
|
||||
wma->seek_start = 0;
|
||||
start_flags = AM_SEEKING_NoPositioning;
|
||||
}
|
||||
if (dwFlags & MCI_TO) {
|
||||
if (IsEqualGUID(&format, &TIME_FORMAT_MEDIA_TIME))
|
||||
time2 = lpParms->dwTo * 10000;
|
||||
wma->seek_stop = lpParms->dwTo * 10000;
|
||||
else
|
||||
time2 = lpParms->dwTo;
|
||||
} else
|
||||
IMediaSeeking_GetDuration(wma->seek, &time2);
|
||||
IMediaSeeking_SetPositions(wma->seek, &time1, pos1, &time2, AM_SEEKING_AbsolutePositioning);
|
||||
wma->seek_stop = lpParms->dwTo;
|
||||
} else {
|
||||
wma->seek_stop = 0;
|
||||
IMediaSeeking_GetDuration(wma->seek, &wma->seek_stop);
|
||||
}
|
||||
IMediaSeeking_SetPositions(wma->seek, &wma->seek_start, start_flags,
|
||||
&wma->seek_stop, AM_SEEKING_AbsolutePositioning);
|
||||
|
||||
hr = IMediaControl_Run(wma->pmctrl);
|
||||
if (FAILED(hr)) {
|
||||
|
|
|
@ -37,6 +37,9 @@ typedef struct {
|
|||
IBasicVideo* vidbasic;
|
||||
IBasicAudio* audio;
|
||||
DWORD time_format;
|
||||
DWORD mci_flags;
|
||||
REFERENCE_TIME seek_start;
|
||||
REFERENCE_TIME seek_stop;
|
||||
UINT command_table;
|
||||
HWND parent;
|
||||
MCIDEVICEID notify_devid;
|
||||
|
|
|
@ -92,7 +92,7 @@ reactos/dll/win32/lz32 # Synced to WineStaging-1.9.11
|
|||
reactos/dll/win32/mapi32 # Synced to WineStaging-2.2
|
||||
reactos/dll/win32/mciavi32 # Synced to WineStaging-1.9.16
|
||||
reactos/dll/win32/mcicda # Synced to WineStaging-1.9.16
|
||||
reactos/dll/win32/mciqtz32 # Synced to WineStaging-1.9.16
|
||||
reactos/dll/win32/mciqtz32 # Synced to WineStaging-2.2
|
||||
reactos/dll/win32/mciseq # Synced to WineStaging-1.9.11
|
||||
reactos/dll/win32/mciwave # Synced to WineStaging-1.9.11
|
||||
reactos/dll/win32/mgmtapi # Synced to WineStaging-1.9.11
|
||||
|
|
Loading…
Reference in a new issue