Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(375)

Side by Side Diff: media/blink/webmediaplayer_impl.h

Issue 1164343003: Fix WMPI::currentTime/seek race causing flaky Blink mediasource-redundant-seek.html on desktop (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address nits Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | media/blink/webmediaplayer_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_ 5 #ifndef MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_
6 #define MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_ 6 #define MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 // TODO(scherkus): we have these because Pipeline favours the simplicity of a 267 // TODO(scherkus): we have these because Pipeline favours the simplicity of a
268 // single "playback rate" over worrying about paused/stopped etc... It forces 268 // single "playback rate" over worrying about paused/stopped etc... It forces
269 // all clients to manage the pause+playback rate externally, but is that 269 // all clients to manage the pause+playback rate externally, but is that
270 // really a bad thing? 270 // really a bad thing?
271 // 271 //
272 // TODO(scherkus): since SetPlaybackRate(0) is asynchronous and we don't want 272 // TODO(scherkus): since SetPlaybackRate(0) is asynchronous and we don't want
273 // to hang the render thread during pause(), we record the time at the same 273 // to hang the render thread during pause(), we record the time at the same
274 // time we pause and then return that value in currentTime(). Otherwise our 274 // time we pause and then return that value in currentTime(). Otherwise our
275 // clock can creep forward a little bit while the asynchronous 275 // clock can creep forward a little bit while the asynchronous
276 // SetPlaybackRate(0) is being executed. 276 // SetPlaybackRate(0) is being executed.
277 double playback_rate_;
277 bool paused_; 278 bool paused_;
279 base::TimeDelta paused_time_;
278 bool seeking_; 280 bool seeking_;
279 double playback_rate_; 281 base::TimeDelta seek_time_; // Meaningless when |seeking_| is false.
280 base::TimeDelta paused_time_;
281 282
282 // TODO(scherkus): Replace with an explicit ended signal to HTMLMediaElement, 283 // TODO(scherkus): Replace with an explicit ended signal to HTMLMediaElement,
283 // see http://crbug.com/409280 284 // see http://crbug.com/409280
284 bool ended_; 285 bool ended_;
285 286
286 // Seek gets pending if another seek is in progress. Only last pending seek 287 // Seek gets pending if another seek is in progress. Only last pending seek
287 // will have effect. 288 // will have effect.
288 bool pending_seek_; 289 bool pending_seek_;
289 double pending_seek_seconds_; 290 // |pending_seek_time_| is meaningless when |pending_seek_| is false.
291 base::TimeDelta pending_seek_time_;
290 292
291 // Tracks whether to issue time changed notifications during buffering state 293 // Tracks whether to issue time changed notifications during buffering state
292 // changes. 294 // changes.
293 bool should_notify_time_changed_; 295 bool should_notify_time_changed_;
294 296
295 blink::WebMediaPlayerClient* client_; 297 blink::WebMediaPlayerClient* client_;
296 298
297 base::WeakPtr<WebMediaPlayerDelegate> delegate_; 299 base::WeakPtr<WebMediaPlayerDelegate> delegate_;
298 300
299 WebMediaPlayerParams::DeferLoadCB defer_load_cb_; 301 WebMediaPlayerParams::DeferLoadCB defer_load_cb_;
(...skipping 28 matching lines...) Expand all
328 EncryptedMediaPlayerSupport encrypted_media_support_; 330 EncryptedMediaPlayerSupport encrypted_media_support_;
329 331
330 scoped_ptr<RendererFactory> renderer_factory_; 332 scoped_ptr<RendererFactory> renderer_factory_;
331 333
332 DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerImpl); 334 DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerImpl);
333 }; 335 };
334 336
335 } // namespace media 337 } // namespace media
336 338
337 #endif // MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_ 339 #endif // MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_
OLDNEW
« no previous file with comments | « no previous file | media/blink/webmediaplayer_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698