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

Side by Side Diff: webkit/media/android/webmediaplayer_android.cc

Issue 10828079: Fix a renderer crash when media elements get deleted (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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 | Annotate | Revision Log
« 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/media/android/webmediaplayer_android.h" 5 #include "webkit/media/android/webmediaplayer_android.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 if (manager_) 85 if (manager_)
86 player_id_ = manager_->RegisterMediaPlayer(this); 86 player_id_ = manager_->RegisterMediaPlayer(this);
87 if (stream_texture_factory_.get()) 87 if (stream_texture_factory_.get())
88 stream_texture_proxy_.reset(stream_texture_factory_->CreateProxy()); 88 stream_texture_proxy_.reset(stream_texture_factory_->CreateProxy());
89 } 89 }
90 90
91 WebMediaPlayerAndroid::~WebMediaPlayerAndroid() { 91 WebMediaPlayerAndroid::~WebMediaPlayerAndroid() {
92 if (manager_) 92 if (manager_)
93 manager_->UnregisterMediaPlayer(player_id_); 93 manager_->UnregisterMediaPlayer(player_id_);
94 94
95 if (stream_id_)
Ami GONE FROM CHROMIUM 2012/07/30 23:09:36 Huh; I didn't realize there's only one VideoFrame
qinmin 2012/07/31 22:07:52 We had some concerns previously on memory usage of
96 DestroyStreamTexture();
97
95 if (main_loop_) 98 if (main_loop_)
96 main_loop_->RemoveDestructionObserver(this); 99 main_loop_->RemoveDestructionObserver(this);
97 } 100 }
98 101
99 void WebMediaPlayerAndroid::InitIncognito(bool incognito_mode) { 102 void WebMediaPlayerAndroid::InitIncognito(bool incognito_mode) {
100 incognito_mode_ = incognito_mode; 103 incognito_mode_ = incognito_mode;
101 } 104 }
102 105
103 void WebMediaPlayerAndroid::load(const WebURL& url, CORSMode cors_mode) { 106 void WebMediaPlayerAndroid::load(const WebURL& url, CORSMode cors_mode) {
104 if (cors_mode != CORSModeUnspecified) 107 if (cors_mode != CORSModeUnspecified)
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 DCHECK(!texture_id_); 539 DCHECK(!texture_id_);
537 stream_id_ = stream_texture_factory_->CreateStreamTexture(&texture_id_); 540 stream_id_ = stream_texture_factory_->CreateStreamTexture(&texture_id_);
538 if (texture_id_) 541 if (texture_id_)
539 video_frame_.reset(new WebVideoFrameImpl(VideoFrame::WrapNativeTexture( 542 video_frame_.reset(new WebVideoFrameImpl(VideoFrame::WrapNativeTexture(
540 texture_id_, 543 texture_id_,
541 kGLTextureExternalOES, 544 kGLTextureExternalOES,
542 texture_size_.width, 545 texture_size_.width,
543 texture_size_.height, 546 texture_size_.height,
544 base::TimeDelta(), 547 base::TimeDelta(),
545 base::TimeDelta(), 548 base::TimeDelta(),
546 base::Bind(&WebMediaPlayerAndroid::DestroyStreamTexture, 549 base::Closure())));
547 base::Unretained(this)))));
548 } 550 }
549 551
550 void WebMediaPlayerAndroid::DestroyStreamTexture() { 552 void WebMediaPlayerAndroid::DestroyStreamTexture() {
551 DCHECK(stream_id_); 553 DCHECK(stream_id_);
552 DCHECK(texture_id_); 554 DCHECK(texture_id_);
553 stream_texture_factory_->DestroyStreamTexture(texture_id_); 555 stream_texture_factory_->DestroyStreamTexture(texture_id_);
554 texture_id_ = 0; 556 texture_id_ = 0;
555 stream_id_ = 0; 557 stream_id_ = 0;
556 } 558 }
557 559
(...skipping 16 matching lines...) Expand all
574 } 576 }
575 577
576 // This gets called both on compositor and main thread. 578 // This gets called both on compositor and main thread.
577 void WebMediaPlayerAndroid::setStreamTextureClient( 579 void WebMediaPlayerAndroid::setStreamTextureClient(
578 WebKit::WebStreamTextureClient* client) { 580 WebKit::WebStreamTextureClient* client) {
579 if (stream_texture_proxy_.get()) 581 if (stream_texture_proxy_.get())
580 stream_texture_proxy_->SetClient(client); 582 stream_texture_proxy_->SetClient(client);
581 } 583 }
582 584
583 } // namespace webkit_media 585 } // namespace webkit_media
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