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

Side by Side Diff: content/renderer/media/webmediaplayer_ms.cc

Issue 1766783003: Expand suspension of idle media players to all platforms. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@notify_pause
Patch Set: Cleanup. Created 4 years, 9 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
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 #include "content/renderer/media/webmediaplayer_ms.h" 5 #include "content/renderer/media/webmediaplayer_ms.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 NOTIMPLEMENTED(); 373 NOTIMPLEMENTED();
374 return 0; 374 return 0;
375 } 375 }
376 376
377 unsigned WebMediaPlayerMS::videoDecodedByteCount() const { 377 unsigned WebMediaPlayerMS::videoDecodedByteCount() const {
378 DCHECK(thread_checker_.CalledOnValidThread()); 378 DCHECK(thread_checker_.CalledOnValidThread());
379 NOTIMPLEMENTED(); 379 NOTIMPLEMENTED();
380 return 0; 380 return 0;
381 } 381 }
382 382
383 void WebMediaPlayerMS::OnHidden(bool must_suspend) { 383 void WebMediaPlayerMS::OnHidden() {
384 #if defined(OS_ANDROID) 384 #if defined(OS_ANDROID)
385 DCHECK(thread_checker_.CalledOnValidThread()); 385 DCHECK(thread_checker_.CalledOnValidThread());
386 386
387 // Method called when the RenderFrame is sent to background and suspended 387 // Method called when the RenderFrame is sent to background and suspended
388 // (android). Substitute the displayed VideoFrame with a copy to avoid 388 // (android). Substitute the displayed VideoFrame with a copy to avoid
389 // holding on to it unnecessarily. 389 // holding on to it unnecessarily.
390 // 390 //
391 // During undoable tab closures OnHidden() may be called back to back, so we 391 // During undoable tab closures OnHidden() may be called back to back, so we
392 // can't rely on |render_frame_suspended_| being false here. 392 // can't rely on |render_frame_suspended_| being false here.
393 393
394 render_frame_suspended_ = true; 394 render_frame_suspended_ = true;
395 if (must_suspend) { 395 if (!paused_)
396 if (!paused_) {
397 pause();
398 paused_on_hidden_ = true;
399 }
400
401 if (delegate_)
402 delegate_->PlayerGone(delegate_id_);
403 } else if (!paused_) {
404 // pause() will make its own copy in the block above otherwise.
405 compositor_->ReplaceCurrentFrameWithACopy(); 396 compositor_->ReplaceCurrentFrameWithACopy();
406 }
407 #endif // defined(OS_ANDROID) 397 #endif // defined(OS_ANDROID)
408 } 398 }
409 399
410 void WebMediaPlayerMS::OnShown() { 400 void WebMediaPlayerMS::OnShown() {
411 #if defined(OS_ANDROID) 401 #if defined(OS_ANDROID)
412 DCHECK(thread_checker_.CalledOnValidThread()); 402 DCHECK(thread_checker_.CalledOnValidThread());
413 403
414 render_frame_suspended_ = false; 404 render_frame_suspended_ = false;
415 405
416 // Resume playback on visibility. play() clears |paused_on_hidden_|. 406 // Resume playback on visibility. play() clears |paused_on_hidden_|.
417 if (paused_on_hidden_) 407 if (paused_on_hidden_)
418 play(); 408 play();
419 #endif // defined(OS_ANDROID) 409 #endif // defined(OS_ANDROID)
420 } 410 }
421 411
412 void WebMediaPlayerMS::OnSuspend(bool must_suspend) {
413 #if defined(OS_ANDROID)
414 if (!must_suspend)
415 return;
416
417 if (!paused_) {
418 pause();
419 paused_on_hidden_ = true;
420 }
421
422 if (delegate_)
423 delegate_->PlayerGone(delegate_id_);
424
425 render_frame_suspended_ = true;
426 #endif
427 }
428
422 void WebMediaPlayerMS::OnPlay() { 429 void WebMediaPlayerMS::OnPlay() {
423 play(); 430 play();
424 client_->playbackStateChanged(); 431 client_->playbackStateChanged();
425 } 432 }
426 433
427 void WebMediaPlayerMS::OnPause() { 434 void WebMediaPlayerMS::OnPause() {
428 const bool was_playing = !paused_ || paused_on_hidden_; 435 const bool was_playing = !paused_ || paused_on_hidden_;
429 pause(); 436 pause();
430 client_->playbackStateChanged(); 437 client_->playbackStateChanged();
431 438
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() { 548 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() {
542 return &video_renderer_; 549 return &video_renderer_;
543 } 550 }
544 551
545 void WebMediaPlayerMS::ResetCanvasCache() { 552 void WebMediaPlayerMS::ResetCanvasCache() {
546 DCHECK(thread_checker_.CalledOnValidThread()); 553 DCHECK(thread_checker_.CalledOnValidThread());
547 video_renderer_.ResetCache(); 554 video_renderer_.ResetCache();
548 } 555 }
549 556
550 } // namespace content 557 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698