Chromium Code Reviews| Index: content/common/gpu/gpu_channel.cc |
| diff --git a/content/common/gpu/gpu_channel.cc b/content/common/gpu/gpu_channel.cc |
| index 2e26fac38c8d46fd40989c96e341067b1deff168..6a7756bb4995f4cca1e81f70d67cbb5d7e44bba1 100644 |
| --- a/content/common/gpu/gpu_channel.cc |
| +++ b/content/common/gpu/gpu_channel.cc |
| @@ -38,7 +38,8 @@ |
| #endif |
| #if defined(OS_ANDROID) |
| -#include "content/common/gpu/stream_texture_manager_android.h" |
| +#include "content/common/android/surface_texture_peer.h" |
| +#include "ui/gl/android/gl_image_stream.h" |
| #endif |
| namespace content { |
| @@ -456,9 +457,6 @@ GpuChannel::GpuChannel(GpuChannelManager* gpu_channel_manager, |
| log_messages_ = command_line->HasSwitch(switches::kLogPluginMessages); |
| disallowed_features_.multisampling = |
| command_line->HasSwitch(switches::kDisableGLMultisampling); |
| -#if defined(OS_ANDROID) |
| - stream_texture_manager_.reset(new StreamTextureManagerAndroid(this)); |
| -#endif |
| } |
| @@ -900,24 +898,68 @@ void GpuChannel::OnDestroyCommandBuffer(int32 route_id) { |
| } |
| #if defined(OS_ANDROID) |
| +namespace { |
| + |
| +void SendFrameAvailable(const base::WeakPtr<GpuChannel>& channel, |
| + int32 route_id) { |
| + if (channel) |
| + channel->Send(new GpuStreamTextureMsg_FrameAvailable(route_id)); |
| +} |
| + |
| +void SendMatrixChanged(const base::WeakPtr<GpuChannel>& channel, |
| + int32 route_id, |
| + const gfx::GLImageStream::Matrix& matrix) { |
| + if (channel) { |
| + GpuStreamTextureMsg_MatrixChanged_Params params; |
| + memcpy(¶ms.m00, matrix.components, sizeof(matrix.components)); |
| + channel->Send(new GpuStreamTextureMsg_MatrixChanged(route_id, params)); |
| + } |
| +} |
| + |
| +} // anonymous namespace |
| + |
| void GpuChannel::OnRegisterStreamTextureProxy( |
| int32 stream_id, int32* route_id) { |
| // Note that route_id is only used for notifications sent out from here. |
| // StreamTextureManager owns all texture objects and for incoming messages |
| // it finds the correct object based on stream_id. |
| *route_id = GenerateRouteID(); |
| - stream_texture_manager_->RegisterStreamTextureProxy(stream_id, *route_id); |
| + scoped_refptr<gfx::GLImage> image(image_manager_->LookupImage(stream_id)); |
|
piman
2013/08/12 23:22:07
I assume the lookup can fail and you'd get a NULL
no sievers
2013/08/13 00:21:35
oops, thanks.
|
| + scoped_refptr<gfx::GLImageStream> stream(image->AsGLImageStream()); |
| + if (!stream) |
| + return; |
| + |
| + base::Closure frame_callback = |
| + base::Bind(&SendFrameAvailable, weak_factory_.GetWeakPtr(), *route_id); |
| + gfx::GLImageStream::MatrixChangedCallBack matrix_callback = |
| + base::Bind(&SendMatrixChanged, weak_factory_.GetWeakPtr(), *route_id); |
| + |
| + stream->SetMatrixChangedCallback(matrix_callback); |
| + stream->SetFrameAvailableCallback(frame_callback); |
| } |
| void GpuChannel::OnEstablishStreamTexture( |
| int32 stream_id, int32 primary_id, int32 secondary_id) { |
| - stream_texture_manager_->EstablishStreamTexture( |
| - stream_id, primary_id, secondary_id); |
| + scoped_refptr<gfx::GLImage> image(image_manager_->LookupImage(stream_id)); |
|
piman
2013/08/12 23:22:07
same here wrt lookup
no sievers
2013/08/13 00:21:35
Done.
|
| + scoped_refptr<gfx::GLImageStream> stream(image->AsGLImageStream()); |
| + if (!stream) |
| + return; |
| + |
| + SurfaceTexturePeer::GetInstance()->EstablishSurfaceTexturePeer( |
| + renderer_pid(), |
| + stream->GetSurfaceTexture(), |
| + primary_id, |
| + secondary_id); |
| } |
| void GpuChannel::OnSetStreamTextureSize( |
| int32 stream_id, const gfx::Size& size) { |
| - stream_texture_manager_->SetStreamTextureSize(stream_id, size); |
| + scoped_refptr<gfx::GLImage> image(image_manager_->LookupImage(stream_id)); |
|
piman
2013/08/12 23:22:07
same here wrt lookup
no sievers
2013/08/13 00:21:35
Done.
|
| + scoped_refptr<gfx::GLImageStream> stream(image->AsGLImageStream()); |
| + if (!stream) |
| + return; |
| + |
| + stream->SetSize(size); |
| } |
| #endif |