Commit 1cf8f92a authored by Rémi Bernon's avatar Rémi Bernon Committed by Alexandre Julliard

dmband: Support start_time and end_time Play parameters.

parent 0b98e472
...@@ -159,7 +159,7 @@ static HRESULT WINAPI band_track_EndPlay(IDirectMusicTrack8 *iface, void *state_ ...@@ -159,7 +159,7 @@ static HRESULT WINAPI band_track_EndPlay(IDirectMusicTrack8 *iface, void *state_
} }
static HRESULT WINAPI band_track_Play(IDirectMusicTrack8 *iface, void *state_data, static HRESULT WINAPI band_track_Play(IDirectMusicTrack8 *iface, void *state_data,
MUSIC_TIME start_time, MUSIC_TIME end_time, MUSIC_TIME time_offset, DWORD segment_flags, MUSIC_TIME start_time, MUSIC_TIME end_time, MUSIC_TIME time_offset, DWORD track_flags,
IDirectMusicPerformance *performance, IDirectMusicSegmentState *segment_state, DWORD track_id) IDirectMusicPerformance *performance, IDirectMusicSegmentState *segment_state, DWORD track_id)
{ {
struct band_track *This = impl_from_IDirectMusicTrack8(iface); struct band_track *This = impl_from_IDirectMusicTrack8(iface);
...@@ -168,13 +168,11 @@ static HRESULT WINAPI band_track_Play(IDirectMusicTrack8 *iface, void *state_dat ...@@ -168,13 +168,11 @@ static HRESULT WINAPI band_track_Play(IDirectMusicTrack8 *iface, void *state_dat
HRESULT hr; HRESULT hr;
TRACE("(%p, %p, %ld, %ld, %ld, %#lx, %p, %p, %ld)\n", This, state_data, start_time, end_time, TRACE("(%p, %p, %ld, %ld, %ld, %#lx, %p, %p, %ld)\n", This, state_data, start_time, end_time,
time_offset, segment_flags, performance, segment_state, track_id); time_offset, track_flags, performance, segment_state, track_id);
if (!performance) return DMUS_S_END; if (!performance) return DMUS_S_END;
if (start_time != 0) FIXME("start_time %ld not implemented\n", start_time); if (track_flags) FIXME("track_flags %#lx not implemented\n", track_flags);
if (end_time != -1) FIXME("end_time %ld not implemented\n", end_time);
if (segment_flags) FIXME("segment_flags %#lx not implemented\n", segment_flags);
if (segment_state) FIXME("segment_state %p not implemented\n", segment_state); if (segment_state) FIXME("segment_state %p not implemented\n", segment_state);
if (FAILED(hr = IDirectMusicPerformance_QueryInterface(performance, if (FAILED(hr = IDirectMusicPerformance_QueryInterface(performance,
...@@ -184,7 +182,13 @@ static HRESULT WINAPI band_track_Play(IDirectMusicTrack8 *iface, void *state_dat ...@@ -184,7 +182,13 @@ static HRESULT WINAPI band_track_Play(IDirectMusicTrack8 *iface, void *state_dat
LIST_FOR_EACH_ENTRY(entry, &This->bands, struct band_entry, entry) LIST_FOR_EACH_ENTRY(entry, &This->bands, struct band_entry, entry)
{ {
MUSIC_TIME music_time = entry->head.lBandTimeLogical; MUSIC_TIME music_time = entry->head.lBandTimeLogical;
if (music_time != -1) music_time += time_offset; if (music_time == -1 && !(track_flags & DMUS_TRACKF_START)) continue;
else if (music_time != -1)
{
if (music_time < start_time || music_time >= end_time) continue;
music_time += time_offset;
}
if (FAILED(hr = band_send_messages(entry->band, performance, graph, music_time, track_id))) if (FAILED(hr = band_send_messages(entry->band, performance, graph, music_time, track_id)))
break; break;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment