Chromium Code Reviews| Index: webkit/media/android/webmediaplayer_android.cc |
| diff --git a/webkit/media/android/webmediaplayer_android.cc b/webkit/media/android/webmediaplayer_android.cc |
| index fcddda0b4ea03f69edf505df415c54b3c35ca129..b731835aa3b6cd78f37baffdcf46b66a90465da6 100644 |
| --- a/webkit/media/android/webmediaplayer_android.cc |
| +++ b/webkit/media/android/webmediaplayer_android.cc |
| @@ -54,9 +54,13 @@ WebMediaPlayerAndroid::WebMediaPlayerAndroid( |
| if (CommandLine::ForCurrentProcess()->HasSwitch( |
| switches::kUseExternalVideoSurface)) { |
| +#if defined(GOOGLE_TV) |
| needs_external_surface_ = true; |
| SetNeedsEstablishPeer(false); |
| ReallocateVideoFrame(); |
| +#else |
| + NOTIMPLEMENTED() << "No external video surface rendering support"; |
| +#endif |
| } else if (stream_texture_factory_.get()) { |
| stream_texture_proxy_.reset(stream_texture_factory_->CreateProxy()); |
| stream_id_ = stream_texture_factory_->CreateStreamTexture(&texture_id_); |
| @@ -98,10 +102,12 @@ void WebMediaPlayerAndroid::cancelLoad() { |
| } |
| void WebMediaPlayerAndroid::play() { |
| +#if defined(GOOGLE_TV) |
| if (hasVideo() && needs_external_surface_) { |
| DCHECK(!needs_establish_peer_); |
| RequestExternalSurface(); |
| } |
| +#endif |
| if (hasVideo() && needs_establish_peer_) |
| EstablishSurfaceTexturePeer(); |
| @@ -512,4 +518,27 @@ void WebMediaPlayerAndroid::UpdatePlayingState(bool is_playing) { |
| is_playing_ = is_playing; |
| } |
| +#if defined(GOOGLE_TV) |
| +bool WebMediaPlayerAndroid::GetGeometryChange(gfx::RectF* rect) { |
| + if (!video_weblayer_) |
| + return false; |
| + |
| + // Compute the geometry of video frame layer. |
| + cc::Layer* layer = video_weblayer_->layer(); |
| + rect->set_size(layer->bounds()); |
|
palmer
2013/04/12 18:51:21
Maybe this function should be called |SetGeometryC
wonsik
2013/04/15 02:44:16
Good point. I will use |RetrieveGeometryChange| to
|
| + while (layer) { |
| + rect->Offset(layer->position().OffsetFromOrigin()); |
| + layer = layer->parent(); |
| + } |
| + |
| + // Return false when the geometry hasn't been changed from the last time. |
| + if (last_computed_rect_ == *rect) |
| + return false; |
| + |
| + // Store the changed geometry information when it is actually changed. |
| + last_computed_rect_ = *rect; |
| + return true; |
| +} |
| +#endif |
| + |
| } // namespace webkit_media |