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

Side by Side Diff: webkit/glue/webmediaplayer_impl.cc

Issue 174385: Fixes bug where changing the src of an audio/video element would stop firing events. (Closed)
Patch Set: Created 11 years, 3 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 | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2008-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2008-2009 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 "webkit/glue/webmediaplayer_impl.h" 5 #include "webkit/glue/webmediaplayer_impl.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "googleurl/src/gurl.h" 8 #include "googleurl/src/gurl.h"
9 #include "media/base/media_format.h" 9 #include "media/base/media_format.h"
10 #include "media/filters/ffmpeg_audio_decoder.h" 10 #include "media/filters/ffmpeg_audio_decoder.h"
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 break; 535 break;
536 } 536 }
537 537
538 // Repaint to trigger UI update. 538 // Repaint to trigger UI update.
539 Repaint(); 539 Repaint();
540 } 540 }
541 541
542 void WebMediaPlayerImpl::SetNetworkState( 542 void WebMediaPlayerImpl::SetNetworkState(
543 WebKit::WebMediaPlayer::NetworkState state) { 543 WebKit::WebMediaPlayer::NetworkState state) {
544 DCHECK(MessageLoop::current() == main_loop_); 544 DCHECK(MessageLoop::current() == main_loop_);
545 if (network_state_ != state) { 545 // Always notify of any state change to ensure the client remains in sync.
546 network_state_ = state; 546 network_state_ = state;
547 GetClient()->networkStateChanged(); 547 GetClient()->networkStateChanged();
548 }
549 } 548 }
550 549
551 void WebMediaPlayerImpl::SetReadyState( 550 void WebMediaPlayerImpl::SetReadyState(
552 WebKit::WebMediaPlayer::ReadyState state) { 551 WebKit::WebMediaPlayer::ReadyState state) {
553 DCHECK(MessageLoop::current() == main_loop_); 552 DCHECK(MessageLoop::current() == main_loop_);
554 if (ready_state_ != state) { 553 // Always notify of any state change to ensure the client remains in sync.
555 ready_state_ = state; 554 ready_state_ = state;
556 GetClient()->readyStateChanged(); 555 GetClient()->readyStateChanged();
557 }
558 } 556 }
559 557
560 void WebMediaPlayerImpl::Destroy() { 558 void WebMediaPlayerImpl::Destroy() {
561 DCHECK(MessageLoop::current() == main_loop_); 559 DCHECK(MessageLoop::current() == main_loop_);
562 560
563 // Make sure to kill the pipeline so there's no more media threads running. 561 // Make sure to kill the pipeline so there's no more media threads running.
564 // TODO(hclam): stopping the pipeline might block for a long time. 562 // TODO(hclam): stopping the pipeline might block for a long time.
565 pipeline_->Stop(NULL); 563 pipeline_->Stop(NULL);
566 pipeline_thread_.Stop(); 564 pipeline_thread_.Stop();
567 565
568 // And then detach the proxy, it may live on the render thread for a little 566 // And then detach the proxy, it may live on the render thread for a little
569 // longer until all the tasks are finished. 567 // longer until all the tasks are finished.
570 if (proxy_) { 568 if (proxy_) {
571 proxy_->Detach(); 569 proxy_->Detach();
572 proxy_ = NULL; 570 proxy_ = NULL;
573 } 571 }
574 } 572 }
575 573
576 WebKit::WebMediaPlayerClient* WebMediaPlayerImpl::GetClient() { 574 WebKit::WebMediaPlayerClient* WebMediaPlayerImpl::GetClient() {
577 DCHECK(MessageLoop::current() == main_loop_); 575 DCHECK(MessageLoop::current() == main_loop_);
578 DCHECK(client_); 576 DCHECK(client_);
579 return client_; 577 return client_;
580 } 578 }
581 579
582 } // namespace webkit_glue 580 } // namespace webkit_glue
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698